Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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"));
        }
Example #6
0
        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"));
        }
Example #7
0
        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();
        }