Exemple #1
0
        public virtual bool TryEvaluate(out RuleOutcome outcome)
        {
            outcome = null;

            try {
                outcome = Evaluate();
                return(true);
            } catch (Exception ex) {
                return(false);
            }
        }
Exemple #2
0
        public virtual bool TryEvaluate(out RuleOutcome outcome){

            outcome = null;

            try {
                outcome = Evaluate();
                return true;
            } catch (Exception ex){
                return false;
            }

        }
Exemple #3
0
        public virtual RuleOutcome EvaluateRuleSet(RuleScope scope, bool includeGlobalScope = true, Func <Rule, RuleScope, bool> scopeEvaluator = null)
        {
            List <Rule> rules = GetRulesByScope(scope, includeGlobalScope, scopeEvaluator);

            if (rules != null && rules.Count > 0)
            {
                foreach (var rule in rules)
                {
                    RuleOutcome outcome = rule.Evaluate();
                    if (!outcome.IsAllowed)
                    {
                        //rule pipeline failed :(
                        return(outcome);
                    }
                }
            }

            return(RuleOutcome.Allowed);
        }
 public virtual RuleOutcome EvaluateRuleSet(T context, RuleScope[] ruleScopes, bool includeGlobalScope = true, Func <Rule, RuleScope, bool> scopeEvaluator = null)
 {
     foreach (var scope in ruleScopes)
     {
         IEnumerable <Rule> rules = GetRulesByScope(scope, includeGlobalScope, scopeEvaluator);
         if (rules != null && rules.Any())
         {
             foreach (var rule in rules)
             {
                 Debug.WriteLine(String.Format("Rule: {0}: {1} ({2} - {3})", rule.Name, rule.Number, scope.ToString(), typeof(Rule).Name));
                 RuleOutcome outcome = ((Rule <T>)rule).Evaluate(context);
                 if (!outcome.IsAllowed)
                 {
                     //rule pipeline failed :(
                     return(outcome);
                 }
             }
         }
     }
     return(RuleOutcome.Allowed);
 }