public static ExpressionUnaryOperation CreateExpressionUnaryOperation(global::RuleService.Models.Expressions.ExpressionUnaryOperator @operator, global::RuleService.Models.Expressions.Expression operand)
        {
            ExpressionUnaryOperation expressionUnaryOperation = new ExpressionUnaryOperation();

            expressionUnaryOperation.Operator = @operator;
            if ((operand == null))
            {
                throw new global::System.ArgumentNullException("operand");
            }
            expressionUnaryOperation.Operand = operand;
            return(expressionUnaryOperation);
        }
예제 #2
0
        private static Expression CreateExpression(Container container)
        {
            var expression = ExpressionBinaryOperation.CreateExpressionBinaryOperation(
                ExpressionBinaryOperator.And,
                ExpressionBinaryOperation.CreateExpressionBinaryOperation(
                    ExpressionBinaryOperator.Or,
                    ExpressionVariable.CreateExpressionVariable(CreateRuleVariable(container)),
                    ExpressionVariable.CreateExpressionVariable(CreateRuleVariable(container))
                    ),
                ExpressionUnaryOperation.CreateExpressionUnaryOperation(
                    ExpressionUnaryOperator.Not,
                    ExpressionVariable.CreateExpressionVariable(CreateRuleVariable(container))
                    )
                );

            return(expression);
        }
예제 #3
0
        public static void Main(string[] args)
        {
            Uri serviceUri = new Uri("http://localhost:38054");
            var container  = new Container(serviceUri);

            var firstRuleVariableId  = CreateRuleVariable(container);
            var secondRuleVariableId = CreateRuleVariable(container);
            var thirdRuleVariableId  = CreateRuleVariable(container);

            var expression = ExpressionBinaryOperation.CreateExpressionBinaryOperation(
                ExpressionBinaryOperator.And,
                ExpressionBinaryOperation.CreateExpressionBinaryOperation(
                    ExpressionBinaryOperator.Or,
                    ExpressionVariable.CreateExpressionVariable(firstRuleVariableId),
                    ExpressionVariable.CreateExpressionVariable(secondRuleVariableId)
                    ),
                ExpressionUnaryOperation.CreateExpressionUnaryOperation(
                    ExpressionUnaryOperator.Not,
                    ExpressionVariable.CreateExpressionVariable(thirdRuleVariableId)
                    )
                );

            var rule = Rule.CreateRule(int.MaxValue, "My Rule");

            rule.Expression = expression;
            container.AddToRules(rule);
            container.SaveChanges();
            Console.Out.WriteLine(rule.ToString());

            var ruleVariables     = container.Rules.ByKey(rule.Id).Variables.ToList();
            var firstRuleVariable = ruleVariables.Find(rv => rv.Id == firstRuleVariableId);

            Console.Out.WriteLine(firstRuleVariable.ToString());
            var secondRuleVariable = ruleVariables.Find(rv => rv.Id == firstRuleVariableId);

            Console.Out.WriteLine(secondRuleVariable.ToString());
            var thirdRuleVariable = ruleVariables.Find(rv => rv.Id == firstRuleVariableId);

            Console.Out.WriteLine(thirdRuleVariable.ToString());
        }