---
title: "SDK: Rule Behavior"
slug: "rule-behavior"
description: "This document discusses IRuleBehavior in the Decisions SDK and includes an example of the code needed to use it. Using IRuleBehavior allows for the customization of the behavior of the rule editor in Decisions."
updated: 2024-08-09T19:05:55Z
published: 2024-08-09T19:05:55Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.decisions.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK: Rule Behavior

IRuleBehavior, much like IFlowBehavior allows for the customization of the behavior of the rule editor.

```
 public interface IRuleBehavior
{
    string Name { get; }

    bool IsUserSettable { get; }

    string RewriteSubject(Rule r, string subject);
    
    string RewriteVerb(Rule r, string verb);
    
    string RewritePredicate(Rule r, IRuleStep step, DataDescription anchorData, IInputMapping[] mappings, string predicate);
  
    DataDescription[] ProcessTreeInputDeclaration(Rule r, string path, DataDescription[] inputs);
    
    DataDescription[] ProcessStepInputDeclaration(RuleStep step, DataDescription[] inputs);
    
    DataDescription[] ProcessInputDeclaration(Rule r, DataDescription[] inputData);
    
    FlowStepToolboxInformation[] ProcessSteps(Rule r, DataDescription anchorData, string[] nodes, FlowStepToolboxInformation[] steps);
    
    ValidationIssue[] RunRuleValidation(Rule rule);
    
    void ProcessInputValues(Rule r, FlowStateData data);

    string OverrideDebugUIClassName { get; }
    
    string OverrideRunUIClassName { get; }

    AllowUserToEditRuleInputData { get; }

    void OnBehaviorAssigned(Rule r);

    bool CanChangeBehavior { get; }

    bool CanChangeRuleType { get; }

    bool AllowDirectServiceCall { get; }

}
```
