public static InitializationOnEventConfig AddSwitch(this InitializationOnEventConfig self, string targetStateName, Func <RunContext, bool> rule = null, string ruleName = "", string code = "", RuleSpan whenRulePosition = null) { self.AddSwitch(new InitializationConfig() { TargetStateName = targetStateName, WhenRule = rule, WhenRuleText = ruleName, WhenRuleCode = code, WhenRulePosition = whenRulePosition }); return(self); }
public static WorkflowConfig AddFilter(this WorkflowConfig self, string eventName, string targetStateName, Func <RunContext, bool> rule) { if (!self.Initializers.TryGetValue(eventName, out InitializationOnEventConfig o)) { self.Initializers.Add(eventName, o = new InitializationOnEventConfig() { EventName = eventName }); } o.Switchs.Add(new InitializationConfig() { TargetStateName = targetStateName, WhenRule = rule }); return(self); }
/// <summary> /// initializing_item : /// ON EVENT key (WHEN rule_conditions)? RECURSIVE? SWITCH key /// ; /// </summary> /// <param name="context"></param> /// <returns></returns> public override object VisitInitializing_item([NotNull] WorkflowParser.Initializing_itemContext context) { var keys = context.key(); string eventName = (string)VisitKey(keys[0]); string _switch = (string)VisitKey(keys[1]); string conditionTxt = string.Empty; string conditionCode = string.Empty; Func <RunContext, bool> func = null; RuleSpan whenRulePosition = null; if (context.WHEN() != null) { var condition = context.rule_conditions(); conditionTxt = condition.GetText(); var compilation = ((Func <RunContext, bool>, string))Compile((ExpressionModel)VisitRule_conditions(condition)); func = compilation.Item1; conditionCode = compilation.Item2; whenRulePosition = new RuleSpan() { StartLine = condition.Start.Line, StartColumn = condition.Start.Column, StartIndex = condition.Start.StartIndex, StopLine = condition.Stop.Line, StopColumn = condition.Stop.Column, StopIndex = condition.Stop.StopIndex, }; } InitializationOnEventConfig c1 = new InitializationOnEventConfig() { EventName = eventName, Recursive = context.RECURSIVE() != null, } .AddSwitch(_switch, func, conditionTxt, conditionCode, whenRulePosition); return(c1); }
public static WorkflowConfig AddInitializer(this WorkflowConfig self, InitializationOnEventConfig initializer) { self.Initializers.Add(initializer.EventName, initializer); return(self); }
public static InitializationOnEventConfig AddSwitch(this InitializationOnEventConfig self, InitializationConfig @switch) { self.Switchs.Add(@switch); return(self); }