use of org.camunda.bpm.dmn.engine.impl.DmnDecisionTableInputImpl in project camunda-engine-dmn by camunda.
the class DmnTransformTest method shouldTransformInputs.
@Test
public void shouldTransformInputs() {
DmnDecisionImpl decisionEntity = (DmnDecisionImpl) parseDecisionFromFile("decision1", TRANSFORM_DMN);
DmnDecisionTableImpl decisionTable = (DmnDecisionTableImpl) decisionEntity.getDecisionLogic();
List<DmnDecisionTableInputImpl> inputs = decisionTable.getInputs();
assertThat(inputs).hasSize(2);
DmnDecisionTableInputImpl input = inputs.get(0);
assertThat(input.getId()).isEqualTo("input1");
assertThat(input.getName()).isEqualTo("camunda");
assertThat(input.getInputVariable()).isEqualTo("camunda");
DmnExpressionImpl inputExpression = input.getExpression();
assertThat(inputExpression).isNotNull();
assertThat(inputExpression.getId()).isEqualTo("inputExpression");
assertThat(inputExpression.getName()).isNull();
assertThat(inputExpression.getExpressionLanguage()).isEqualTo("camunda");
assertThat(inputExpression.getExpression()).isEqualTo("camunda");
assertThat(inputExpression.getTypeDefinition()).isNotNull();
assertThat(inputExpression.getTypeDefinition().getTypeName()).isEqualTo("string");
input = inputs.get(1);
assertThat(input.getId()).isEqualTo("input2");
assertThat(input.getName()).isNull();
assertThat(input.getInputVariable()).isEqualTo(DmnDecisionTableInputImpl.DEFAULT_INPUT_VARIABLE_NAME);
inputExpression = input.getExpression();
assertThat(inputExpression).isNotNull();
assertThat(inputExpression.getId()).isNull();
assertThat(inputExpression.getName()).isNull();
assertThat(inputExpression.getExpressionLanguage()).isNull();
assertThat(inputExpression.getExpression()).isNull();
assertThat(inputExpression.getTypeDefinition()).isNotNull();
assertThat(inputExpression.getTypeDefinition()).isEqualTo(new DefaultTypeDefinition());
}
use of org.camunda.bpm.dmn.engine.impl.DmnDecisionTableInputImpl in project camunda-engine-dmn by camunda.
the class DefaultDmnTransform method transformDecisionTableInput.
protected DmnDecisionTableInputImpl transformDecisionTableInput(Input input) {
DmnElementTransformHandler<Input, DmnDecisionTableInputImpl> handler = handlerRegistry.getHandler(Input.class);
DmnDecisionTableInputImpl dmnInput = handler.handleElement(this, input);
// validate input id
if (dmnInput.getId() == null) {
throw LOG.decisionTableInputIdIsMissing(decision, dmnInput);
}
InputExpression inputExpression = input.getInputExpression();
if (inputExpression != null) {
parent = dmnInput;
DmnExpressionImpl dmnExpression = transformInputExpression(inputExpression);
if (dmnExpression != null) {
dmnInput.setExpression(dmnExpression);
}
}
return dmnInput;
}
use of org.camunda.bpm.dmn.engine.impl.DmnDecisionTableInputImpl in project camunda-engine-dmn by camunda.
the class DecisionTableEvaluationHandler method evaluateDecisionTable.
protected void evaluateDecisionTable(DmnDecisionTableImpl decisionTable, VariableContext variableContext, DmnDecisionTableEvaluationEventImpl evaluationResult) {
int inputSize = decisionTable.getInputs().size();
List<DmnDecisionTableRuleImpl> matchingRules = new ArrayList<DmnDecisionTableRuleImpl>(decisionTable.getRules());
for (int inputIdx = 0; inputIdx < inputSize; inputIdx++) {
// evaluate input
DmnDecisionTableInputImpl input = decisionTable.getInputs().get(inputIdx);
DmnEvaluatedInput evaluatedInput = evaluateInput(input, variableContext);
evaluationResult.getInputs().add(evaluatedInput);
// compose local variable context out of global variable context enhanced with the value of the current input.
VariableContext localVariableContext = getLocalVariableContext(input, evaluatedInput, variableContext);
// filter rules applicable with this input
matchingRules = evaluateInputForAvailableRules(inputIdx, input, matchingRules, localVariableContext);
}
setEvaluationOutput(decisionTable, matchingRules, variableContext, evaluationResult);
}
Aggregations