protected internal virtual IDictionary <string, IDmnEvaluatedOutput> EvaluateOutputEntries( IList <DmnDecisionTableOutputImpl> decisionTableOutputs, DmnDecisionTableRuleImpl matchingRule, IVariableContext variableContext) { IDictionary <string, IDmnEvaluatedOutput> outputEntries = new Dictionary <string, IDmnEvaluatedOutput>(); for (var outputIdx = 0; outputIdx < decisionTableOutputs.Count; outputIdx++) { // evaluate output entry, skip empty expressions var conclusion = matchingRule.Conclusions[outputIdx]; if (IsNonEmptyExpression(conclusion)) { var value = EvaluateOutputEntry(conclusion, variableContext); // transform to output type var decisionTableOutput = decisionTableOutputs[outputIdx]; var typedValue = decisionTableOutput.TypeDefinition.Transform(value); // set on result var evaluatedOutput = new DmnEvaluatedOutputImpl(decisionTableOutput, typedValue); outputEntries[decisionTableOutput.OutputName] = evaluatedOutput; } } return(outputEntries); }
protected internal virtual void NotifyTransformListeners(IRule rule, DmnDecisionTableRuleImpl dmnRule) { foreach (var transformListener in transformListeners) { transformListener.transformDecisionTableRule(rule, dmnRule); } }
public virtual DmnTransformException DecisionTableRuleIdIsMissing(IDmnDecision dmnDecision, DmnDecisionTableRuleImpl dmnDecisionTableRule) { return (new DmnTransformException(ExceptionMessage("013", string.Format("The decision table rule '{0}' of decision '{1}' must have a 'id' attribute set.", dmnDecisionTableRule, dmnDecision)))); }
public virtual DmnTransformException DifferentNumberOfInputsAndInputEntries(int inputsSize, int inputEntriesSize, DmnDecisionTableRuleImpl rule) { return (new DmnTransformException(ExceptionMessage("005", string.Format("The number of inputs '{0}' and input entries differ '{1}' for rule '{2}'.", inputsSize, inputEntriesSize, rule)))); }
protected internal virtual IDmnEvaluatedDecisionRule EvaluateMatchingRule( IList <DmnDecisionTableOutputImpl> decisionTableOutputs, DmnDecisionTableRuleImpl matchingRule, IVariableContext variableContext) { var evaluatedDecisionRule = new DmnEvaluatedDecisionRuleImpl(matchingRule); var outputEntries = EvaluateOutputEntries(decisionTableOutputs, matchingRule, variableContext); evaluatedDecisionRule.OutputEntries = outputEntries; return(evaluatedDecisionRule); }
public DmnEvaluatedDecisionRuleImpl(DmnDecisionTableRuleImpl matchingRule) { id = matchingRule.Id; }