Example #1
0
        public void Setup()
        {
            _called = null;

            var configurator = new RuntimeConfiguratorImpl();

            var engine = configurator.RulesEngine;

            PropertyNode <A, decimal> propertyNode = configurator.Property <A, decimal>(x => x.Amount);

            ConditionNode <Token <A, decimal> > conditionNode = configurator.Condition <A, decimal>(x => x > 10000.0m);

            propertyNode.AddActivation(conditionNode);

            AlphaNode <Token <A, decimal> > edgeAlpha = configurator.Alpha <A, decimal>();

            conditionNode.AddActivation(edgeAlpha);

            AlphaNode <A> alphaNode = configurator.GetAlphaNode <A>();

            alphaNode.AddActivation(propertyNode);

            JoinNode <A> joinNode = configurator.Join(alphaNode);

            DelegateProductionNode <A> productionNode = configurator.Delegate <A>((session, x) => _called = x);

            joinNode.AddActivation(productionNode);

            LeftJoinNode <A, decimal> leftNode = configurator.Left <A, decimal>(alphaNode);

            leftNode.AddActivation(joinNode);

            edgeAlpha.AddActivation(leftNode);

            using (StatefulSession session = engine.CreateSession())
            {
                session.Add(new A(10001.0m));
                session.Run();
            }
        }