Ejemplo n.º 1
1
        private static void Main(string[] args)
        {
            //Load rules
            var repository = new RuleRepository();
            repository.Load(x => x.From(Assembly.GetExecutingAssembly()));

            //Compile rules
            var factory = repository.Compile();

            //Create a working session
            var session = factory.CreateSession();

            //Load domain model
            var customer1 = new Customer("John Doe") { IsPreferred = true };
            var account11 = new Account("12456789", customer1);
            var account12 = new Account("12456790", customer1);
            var account13 = new Account("12456791", customer1) {IsActive = false, IsDelinquent = true};
            var order11 = new Order(123456, customer1, 2, 25.0);
            var order12 = new Order(123457, customer1, 1, 100.0);
            var order13 = new Order(123458, customer1, 1, 5.0);

            var customer2 = new Customer("Sarah Jones");
            var account21 = new Account("22456789", customer2);
            var order21 = new Order(223456, customer2, 2, 2225.0);

            //Insert facts into rules engine's memory
            session.Insert(customer1);
            session.Insert(account11);
            session.Insert(account12);
            session.Insert(account13);
            session.Insert(order11);
            session.Insert(order12);
            session.Insert(order13);

            session.Insert(customer2);
            session.Insert(account21);
            session.Insert(order21);

            //Start match/resolve/act cycle
            session.Update(customer1);
            session.Fire();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var repository = new RuleRepository();
            repository.Load("Test", x => x.From(typeof(AssignFirstSeat).Assembly));

            var factory = repository.Compile();
            var session = factory.CreateSession();
            session.Events.FactInsertedEvent += EventProviderOnFactInsertedEvent;
            session.Events.FactUpdatedEvent += EventProviderOnFactUpdatedEvent;
            session.Events.FactRetractedEvent += EventProviderOnFactRetractedEvent;
            session.Events.ActivationCreatedEvent += EventProviderOnActivationCreatedEvent;
            session.Events.ActivationDeletedEvent += EventProviderOnActivationDeletedEvent;
            session.Events.RuleFiringEvent += EventProviderOnRuleFiringEvent;

            session.Insert(new Guest("N1", Gender.Male, new Hobby("H1")));
            session.Insert(new Guest("N2", Gender.Female, new Hobby("H1")));
            session.Insert(new Guest("N2", Gender.Female, new Hobby("H3")));
            session.Insert(new Guest("N3", Gender.Male, new Hobby("H3")));
            session.Insert(new Guest("N4", Gender.Male, new Hobby("H1")));
            session.Insert(new Guest("N4", Gender.Female, new Hobby("H2")));
            session.Insert(new Guest("N4", Gender.Female, new Hobby("H3")));
            session.Insert(new Guest("N5", Gender.Female, new Hobby("H2")));
            session.Insert(new Guest("N5", Gender.Female, new Hobby("H1")));
            session.Insert(new Count(1));
            session.Insert(new LastSeat(5));

            var context = new Context();
            session.Insert(context);

            session.Fire();
        }
Ejemplo n.º 3
0
        public void Compile()
        {
            //Load rules
            var repository = new RuleRepository();

            // Here is for the scriptedAssembly ... 
            // repository.Load(x => x.From(typeof(PreferredCustomerDiscountRule).Assembly));

            // Compile rules
            var factory = repository.Compile();

            //Create a working session
            var session = factory.CreateSession();

            //Load domain model
            // var customer = new Customer("John Doe") { IsPreferred = true };
            // var order1 = new Order(123456, customer, 2, 25.0);
            // var order2 = new Order(123457, customer, 1, 100.0);

            //Insert facts into rules engine's memory
            // session.Insert(customer);
            // session.Insert(order1);
            // session.Insert(order2);

            //Start match/resolve/act cycle
            session.Fire();
        }
Ejemplo n.º 4
0
        private static void Main(string[] args)
        {
            var repository = new RuleRepository();
            repository.Load(x => x.From(Assembly.GetExecutingAssembly()));

            ISessionFactory factory = repository.Compile();
            ISession session = factory.CreateSession();

            session.Insert(new Fact1 { Value = "TestValue" });

            VisualizerHost.Visualize(session);
        }
Ejemplo n.º 5
0
 private ISessionFactory CreateTarget()
 {
     var repository = new RuleRepository();
     repository.Load(x => x.From(typeof(OneFactRule)));
     return repository.Compile();
 }