Example #1
0
        private static ConditionDeclaration CreateDefaultCondition()
        {
            Expression <Func <T, bool> > exp       = o => true;
            ConditionDeclaration         condition = Declaration.Condition(exp);

            return(condition);
        }
Example #2
0
        private RuleDeclaration CreatePreferredRule()
        {
            Expression <Func <Order, bool> > exp       = o => o.Customer.Preferred;
            ConditionDeclaration             condition = Declaration.Condition(exp);

            ConsequenceDeclaration consequence = Declaration.Consequence(() => Trace.WriteLine("Preferred Customer"));

            return(Declaration.Rule(new[] { condition }, new[] { consequence }));
        }
Example #3
0
        private RuleDeclaration CreateCustomerExistsRule()
        {
            Expression <Func <Order, bool> > exp = o => o.Customer != null;

            ConditionDeclaration   condition   = Declaration.Condition(exp);
            ConsequenceDeclaration consequence = Declaration.Consequence(() => Trace.WriteLine("Customer Exists"));

            return(Declaration.Rule(new[] { condition }, new[] { consequence }));
        }
Example #4
0
        private RuleDeclaration CreateOnlineOrderRule()
        {
            Expression <Func <Order, bool> > exp = o => o.Source == "Online";

            ConditionDeclaration   condition   = Declaration.Condition(exp);
            ConsequenceDeclaration consequence = Declaration.Consequence(() => Trace.WriteLine("Online Order"));

            return(Declaration.Rule(new[] { condition }, new[] { consequence }));
        }
Example #5
0
        private RuleDeclaration CreatePreferredRule()
        {
            Expression <Func <Order, bool> > exp       = o => o.Customer.Preferred;
            ConditionDeclaration             condition = Declaration.Condition(exp);

            ConsequenceDeclaration consequence = Declaration.Consequence <Order>(x => x.IsPreferred());

            return(Declaration.Rule(new[] { condition }, new[] { consequence }));
        }
Example #6
0
        private RuleDeclaration CustomerIsSpecified()
        {
            Expression <Func <Order, bool> > exp = o => o.Customer != null;

            ConditionDeclaration   condition   = Declaration.Condition(exp);
            ConsequenceDeclaration consequence = Declaration.Consequence <Order>(x => x.HasCustomer());

            return(Declaration.Rule(new[] { condition }, new[] { consequence }));
        }
Example #7
0
        private RuleDeclaration CreateOnlineOrderRule()
        {
            Expression <Func <Order, bool> > exp = o => o.Source == "Online";

            ConditionDeclaration   condition   = Declaration.Condition(exp);
            ConsequenceDeclaration consequence = Declaration.Consequence <Order>(x => x.IsOnline());

            return(Declaration.Rule(new[] { condition }, new[] { consequence }));
        }
Example #8
0
        public RuleConfigurator <T> When(Expression <Func <T, bool> > expression)
        {
            CompletePendingRules();

            ConditionDeclaration condition = Declaration.Condition(expression);

            _conditions.Add(condition);

            return(this);
        }
Example #9
0
        private void AddUnderLimitRule()
        {
            Expression <Func <OrderSubmitted, bool> > exp = o => o.Amount < 50.00m;

            ConditionDeclaration condition = Declaration.Condition(exp);
            ConsequenceDeclaration <OrderSubmitted> consequence = Declaration.Consequence <OrderSubmitted>(o => _underLimit(o.Element.Object));

            RuleDeclaration rule = Declaration.Rule(new[] { condition }, new[] { consequence });

            _engine.Add(rule);
        }
Example #10
0
        public RuleConfigurator <T> When <TCondition>()
            where TCondition : Condition <T>, new()
        {
            CompletePendingRules();

            ConditionDeclaration condition = Declaration.Condition <T>(x => new TCondition().IsSatisfiedBy(x));

            _conditions.Add(condition);

            return(this);
        }
Example #11
0
        private RuleDeclaration CreateActiveNotPreferredRule()
        {
            Expression <Func <Order, bool> > exp       = o => o.Customer.Preferred == false;
            ConditionDeclaration             condition = Declaration.Condition(exp);

            Expression <Func <Order, bool> > exp2       = o => o.Customer.Active;
            ConditionDeclaration             condition2 = Declaration.Condition(exp2);

            ConsequenceDeclaration consequence = Declaration.Consequence(() => Trace.WriteLine("Active, Not Preferred"));

            return(Declaration.Rule(new[] { condition, condition2 }, new[] { consequence }));
        }
Example #12
0
        private RuleDeclaration CreateActiveNotPreferredRule()
        {
            Expression <Func <Order, bool> > exp       = o => o.Customer.Preferred == false;
            ConditionDeclaration             condition = Declaration.Condition(exp);

            Expression <Func <Order, bool> > exp2       = o => o.Customer.Active;
            ConditionDeclaration             condition2 = Declaration.Condition(exp2);

            ConsequenceDeclaration consequence = Declaration.Consequence <Order>(x => x.IsActiveNotPreferred());

            return(Declaration.Rule(new[] { condition, condition2 }, new[] { consequence }));
        }
Example #13
0
        private RuleDeclaration CreateOnlinePreferredOrderRule()
        {
            Expression <Func <Order, bool> > exp       = o => o.Source == "Online";
            ConditionDeclaration             condition = Declaration.Condition(exp);

            Expression <Func <Order, bool> > exp2       = o => o.Customer.Preferred;
            ConditionDeclaration             condition2 = Declaration.Condition(exp2);

            ConsequenceDeclaration consequence = Declaration.Consequence <Order>(x => x.IsOnlinePreferred());

            return(Declaration.Rule(new[] { condition, condition2 }, new[] { consequence }));
        }
Example #14
0
        private void MatchExistingConditionNode <T>(ConditionDeclaration condition, ConditionNode <T> node)
        {
            if (condition.MatchType != typeof(T))
            {
                return;
            }

            if (node.Expression.ToString() != condition.Expression.ToString())
            {
                return;
            }

            AlphaNode <T> alphaNode = node.GetAlphaNode();
        }