public async Task BaseComputeType_OneItem_NotEqualsTo() { //定义规则 var rule = new Rule { Name = "BaseComputeType_OneItem_NotEqualsTo", Items = new List <RuleItem> { new RuleItem { RuleItemType = "sex", ComputeType = BaseComputeType.NotEqualsTo.ToString(), Value = "man", } }, }; //添加规则到引擎 await RuleEngine.Clear(); await RuleEngine.AddRule(rule); //定义事实 var fact = new Fact { { "sex", "women" } }; //运算 var res = await RuleEngine.Compute(fact); Assert.IsNotNull(res); Assert.IsTrue(res.Success); }
public async Task CustomComputeType_OneItem_NotExistsBySql() { //定义规则 var rule = new Rule { Name = "CustomComputeType_OneItem_NotExistsBySql", Items = new List <RuleItem> { new RuleItem { RuleItemType = "name", ComputeType = "NotExistsBySql", Value = "select 1 from user where userName = @CheckValue;", } }, }; //添加规则到引擎 await RuleEngine.Clear(); await RuleEngine.AddRule(rule); //定义事实 var fact = new Fact { { "name", "haha" } }; //运算 var res = await RuleEngine.Compute(fact); Assert.IsNotNull(res); Assert.IsTrue(res.Success); }
public async Task BaseComputeType_OneItem_MoreThan() { //定义规则 var rule = new Rule { Name = "BaseComputeType_OneItem_MoreThan", Items = new List <RuleItem> { new RuleItem { RuleItemType = "age", ComputeType = BaseComputeType.MoreThan.ToString(), Value = "18", } }, }; //添加规则到引擎 await RuleEngine.Clear(); await RuleEngine.AddRule(rule); //定义事实 var fact = new Fact { { "age", "20" } }; //运算 var res = await RuleEngine.Compute(fact); Assert.IsNotNull(res); Assert.IsTrue(res.Success); }
public async Task BaseComputeType_OneItem_NotContain() { //定义规则 var rule = new Rule { Name = "BaseComputeType_OneItem_NotContain", Items = new List <RuleItem> { new RuleItem { RuleItemType = "say", ComputeType = BaseComputeType.NotContain.ToString(), Value = "Hello World!", } }, }; //添加规则到引擎 await RuleEngine.Clear(); await RuleEngine.AddRule(rule); //定义事实 var fact = new Fact { { "say", "Hi" } }; //运算 var res = await RuleEngine.Compute(fact); Assert.IsNotNull(res); Assert.IsTrue(res.Success); }
public async Task BaseComputeType_MoreBaseComputeType_MissRule() { //定义规则 var rule1 = new Rule { Name = "BaseComputeType_MoreBaseComputeType_MissRule", Priority = 1, Items = new List <RuleItem> { new RuleItem { RuleItemType = "age", ComputeType = BaseComputeType.LessThan.ToString(), Value = "15", } }, }; var rule2 = new Rule { Name = "BaseComputeType_MoreBaseComputeType_HitRule2", Priority = 0, Items = new List <RuleItem> { new RuleItem { RuleItemType = "age", ComputeType = BaseComputeType.LessThan.ToString(), Value = "18", } }, }; //添加规则到引擎 await RuleEngine.Clear(); await RuleEngine.AddRule(rule1); await RuleEngine.AddRule(rule2); //定义事实 var fact = new Fact { { "age", "24" } }; //运算 var res = await RuleEngine.Compute(fact); Assert.IsNotNull(res); Assert.IsNull(res.HitRule); Assert.IsFalse(res.Success); Assert.IsTrue(res.Infos.Any(x => x.MissRuleItemType == "age")); }
public async Task BaseComputeType_MoreItem_MissRule() { //定义规则 var rule = new Rule { Name = "BaseComputeType_MoreItem_MissRule", Items = new List <RuleItem> { new RuleItem { RuleItemType = "age", ComputeType = BaseComputeType.LessThan.ToString(), Value = "18", }, new RuleItem { RuleItemType = "sex", ComputeType = BaseComputeType.EqualsTo.ToString(), Value = "man", }, new RuleItem { RuleItemType = "weight", ComputeType = BaseComputeType.MoreThan.ToString(), Value = "60", } }, }; //添加规则到引擎 await RuleEngine.Clear(); await RuleEngine.AddRule(rule); //定义事实 var fact = new Fact { { "age", "14" }, { "sex", "man" }, { "weight", "50" } }; //运算 var res = await RuleEngine.Compute(fact); Assert.IsNotNull(res); Assert.IsNull(res.HitRule); Assert.IsFalse(res.Success); Assert.IsTrue(res.Infos.Any(x => x.MissRuleItemType == "weight")); }
public void Clear() { m_oRuleEngine.UserFunctionManager.UnDefineFunction("Recommendation"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("DataNotify"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("PromptChoice"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("FileLoadNotify"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("OperateFact"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("InterpretationIndex"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("FactUsed"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("PreDiagnose"); m_oRuleEngine.UserFunctionManager.UnDefineFunction("OperateNumberFact"); m_oRuleEngine.Clear(); //m_oRuleEngine.Reset(); FactIndexMax = -1; HTFactInfo.Clear(); m_stInferResult.Init(); }