//用于执行完成规则 bool IScriptParser.EvaluateFinishRule(WorkItem workItem , List <DefaultHumanFinishRuleAsserter.Execution> allOtherExecutions , IDictionary <string, string> inputs , string action , string script) { var setting = workItem.GetReferredSetting(); //断言 var asserter = new DefaultHumanFinishRuleAsserter(setting.IsUsingSlot ? setting.SlotCount : new int?() , new DefaultHumanFinishRuleAsserter.Execution(action, WorkItemStatus.Executed) , allOtherExecutions); //初始化脚本引擎 var engine = new Jurassic.ScriptEngine(); //设置表达式 engine.SetGlobalFunction("all", new Func <string, bool>(asserter.All)); engine.SetGlobalFunction("atLeaseOf", new Func <int, string, bool>(asserter.AtLeaseOf)); engine.SetGlobalFunction("atMostOf", new Func <int, string, bool>(asserter.AtMostOf)); engine.SetGlobalFunction("noneOf", new Func <string, bool>(asserter.NoneOf)); //填充变量 foreach (var pair in inputs) { engine.SetGlobalValue(pair.Key, pair.Value ?? ""); } return(this.Evaluate <bool>(engine, script)); }
private DefaultHumanFinishRuleAsserter FinishRuleAsserter(int? slot , DefaultHumanFinishRuleAsserter.Execution e , params DefaultHumanFinishRuleAsserter.Execution[] es) { return new DefaultHumanFinishRuleAsserter(slot, e, es.ToList()); }