Exemplo n.º 1
0
        //用于执行完成规则
        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));
        }
Exemplo n.º 2
0
 private DefaultHumanFinishRuleAsserter FinishRuleAsserter(int? slot
     , DefaultHumanFinishRuleAsserter.Execution e
     , params DefaultHumanFinishRuleAsserter.Execution[] es)
 {
     return new DefaultHumanFinishRuleAsserter(slot, e, es.ToList());
 }