public AssignInventoryPolicy() { _ruleRepository = new RuleRepository(); _ruleRepository.Load(x => x.From(typeof(HasInventoryRule))); var rc = new RuleCompiler(); var rules = _ruleRepository.GetRuleSets(); _factory = rc.Compile(rules); }
public AcceptOrderPolicy(IInventoryLevels inventoryLevels) { _inventoryLevels = inventoryLevels; var rc = new RuleCompiler(); var ruleRepo = new RuleRepository(); ruleRepo.Load(x => x.From(typeof(HasInventoryRule), typeof(DoWeHaveEnoughInventory), typeof(NeedShippingOptionsRule), typeof(InternationalShipping), typeof(RejectShippingOptionBasedOnNexus))); _sessionFactory = rc.Compile(ruleRepo.GetRuleSets().Where(rs=>rs.Name == "AcceptOrderPolicy")); }
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(); }
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(); }
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(); }
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); }
private static void Main(string[] args) { var dwelling = new Dwelling {Address = "1 Main Street, New York, NY", Type = DwellingTypes.SingleHouse}; var dwelling2 = new Dwelling {Address = "2 Main Street, New York, NY", Type = DwellingTypes.SingleHouse}; var policy1 = new Policy {Name = "Silver", PolicyType = PolicyTypes.Home, Price = 1200, Dwelling = dwelling}; var policy2 = new Policy {Name = "Gold", PolicyType = PolicyTypes.Home, Price = 2300, Dwelling = dwelling2}; var customer1 = new Customer {Name = "John Do", Age = 22, Sex = SexTypes.Male, Policy = policy1}; var customer2 = new Customer {Name = "Emily Brown", Age = 32, Sex = SexTypes.Female, Policy = policy2}; var repository = new RuleRepository(); repository.Load("Test", x => x.From(typeof (Program).Assembly)); var ruleSets = repository.GetRuleSets(); IRuleCompiler compiler = new RuleCompiler(); ISessionFactory factory = compiler.Compile(ruleSets); ISession session = factory.CreateSession(); session.Insert(policy1); session.Insert(policy2); session.Insert(customer1); session.Insert(customer2); session.Insert(dwelling); session.Insert(dwelling2); customer1.Age = 10; session.Update(customer1); session.Retract(customer2); session.Fire(); session.Insert(customer2); session.Fire(); customer1.Age = 30; session.Update(customer1); session.Fire(); }
public void SetUp() { _repository = new RuleRepository(); }
private ISessionFactory CreateTarget() { var repository = new RuleRepository(); repository.Load(x => x.From(typeof(OneFactRule))); return repository.Compile(); }