Esempio n. 1
0
        static void Main(string[] args)
        {
            var protocol1 = new Protocol()
            {
                Kv = 200, Ma = 200, Name = "Cardiac"
            };
            var protocol2 = new Protocol()
            {
                Kv = 20, Ma = 200, Name = "Scout"
            };

            Console.WriteLine("P1: " + protocol1);
            Console.WriteLine("P2: " + protocol2);

            var engine = RulesEngineFactory.New(x =>
            {
                x.Rules(r =>
                {
                    r.Add <Temp>();
                    r.Add <Temp2>();
                    //r.Add<MaxKvRule>();
                    //r.Add<MinKvRule>();
                    //r.Add<ScoutKvRule>();
                });
            });

            var visitor = new TextRuntimeVisitor();

            engine.Accept(visitor);
            Console.WriteLine(visitor);

            using (var session = engine.CreateSession())
            {
                session.Add(protocol1);
                session.Add(protocol2);

                session.Run();

                var changes = session.Facts <Changed>().ToArray();

                Console.WriteLine("\n\n");

                foreach (var change in changes)
                {
                    Console.WriteLine("{0} has changed in {1}", change.Fact.Parameter, change.Fact.Name);
                }
            }


            Console.WriteLine("P1: " + protocol1);
            Console.WriteLine("P2: " + protocol2);

            Console.ReadLine();
        }
        public void Should_not_activate_for_only_other_side()
        {
            _result = null;

            RulesEngine rulesEngine = RulesEngineFactory.New(x => { x.Add(_rule); });

            using (Session session = rulesEngine.CreateSession())
            {
                session.Add(new Order {
                    Name = "MAMA", Amount = 10001.0m
                });
                session.Run();
            }

            var visitor = new TextRuntimeVisitor();

            rulesEngine.Accept(visitor);

            Console.WriteLine(visitor);

            Assert.IsNull(_result);
        }
        public void Should_compile_and_execute()
        {
            _result = null;

            RulesEngine rulesEngine = RulesEngineFactory.New(x => { x.Add(_rule); });

            using (Session session = rulesEngine.CreateSession())
            {
                session.Add(new Order {
                    Name = "JOE", Amount = 10001.0m
                });
                session.Run();
            }

            var visitor = new TextRuntimeVisitor();

            rulesEngine.Accept(visitor);

            Console.WriteLine(visitor);

            Assert.IsNotNull(_result);
            Assert.IsNotNull(_resultB);
        }
        public void Should_compile_and_execute()
        {
            _result = null;

            RulesEngine rulesEngine = RulesEngineFactory.New(x => { x.Add(_rule); });

            using (Session session = rulesEngine.CreateSession())
            {
                session.Add(new Order {Name = "JOE", Amount = 10001.0m});
                session.Run();
            }

            var visitor = new TextRuntimeVisitor();
            rulesEngine.Accept(visitor);

            Console.WriteLine(visitor);

            Assert.IsNotNull(_result);
            Assert.IsNotNull(_resultB);
        }
        public void Should_not_activate_for_only_other_side()
        {
            _result = null;

            RulesEngine rulesEngine = RulesEngineFactory.New(x => { x.Add(_rule); });

            using (Session session = rulesEngine.CreateSession())
            {
                session.Add(new Order {Name = "MAMA", Amount = 10001.0m});
                session.Run();
            }

            var visitor = new TextRuntimeVisitor();
            rulesEngine.Accept(visitor);

            Console.WriteLine(visitor);

            Assert.IsNull(_result);
        }