Пример #1
0
        private void collectFiredRules(OrderedDictionary /*<String, SimpleRule>*/ firedRules, Rule rule, Dictionary <string, object> dict /*, EvaluationContext context*/)
        {
            /*Predicate predicate = rule.getPredicate();
             * if(predicate == null){
             *      throw new InvalidFeatureException(rule);
             * }
             *
             * Boolean status = PredicateUtil.evaluate(predicate, context);
             * if(status == null || !status.booleanValue()){
             * return;
             * } // End if*/
            PredicateResult status = rule.Evaluate(dict);

            if (status == PredicateResult.Unknown || status == PredicateResult.False)
            {
                return;
            }

            if (rule is SimpleRule)
            {
                SimpleRule simpleRule = (SimpleRule)rule;

                firedRules.Add(simpleRule.Score, simpleRule);
            }
            else
            {
                if (rule is CompoundRule)
                {
                    CompoundRule compoundRule = (CompoundRule)rule;
                    foreach (Rule childRule in compoundRule.Rules)
                    {
                        collectFiredRules(firedRules, childRule, dict);
                    }
                }
                else
                {
                    throw new PmmlException("Type of Rule not supported");
                }
            }
        }