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; }
}