use of org.camunda.bpm.model.dmn.instance.OutputEntry in project camunda-engine-dmn by camunda.
the class DefaultDmnTransform method transformDecisionTableRule.
protected DmnDecisionTableRuleImpl transformDecisionTableRule(Rule rule) {
DmnElementTransformHandler<Rule, DmnDecisionTableRuleImpl> handler = handlerRegistry.getHandler(Rule.class);
DmnDecisionTableRuleImpl dmnRule = handler.handleElement(this, rule);
// validate rule id
if (dmnRule.getId() == null) {
throw LOG.decisionTableRuleIdIsMissing(decision, dmnRule);
}
List<DmnDecisionTableInputImpl> inputs = this.decisionTable.getInputs();
List<InputEntry> inputEntries = new ArrayList<InputEntry>(rule.getInputEntries());
if (inputs.size() != inputEntries.size()) {
throw LOG.differentNumberOfInputsAndInputEntries(inputs.size(), inputEntries.size(), dmnRule);
}
for (InputEntry inputEntry : inputEntries) {
parent = dmnRule;
DmnExpressionImpl condition = transformInputEntry(inputEntry);
dmnRule.getConditions().add(condition);
}
List<DmnDecisionTableOutputImpl> outputs = this.decisionTable.getOutputs();
List<OutputEntry> outputEntries = new ArrayList<OutputEntry>(rule.getOutputEntries());
if (outputs.size() != outputEntries.size()) {
throw LOG.differentNumberOfOutputsAndOutputEntries(outputs.size(), outputEntries.size(), dmnRule);
}
for (OutputEntry outputEntry : outputEntries) {
parent = dmnRule;
DmnExpressionImpl conclusion = transformOutputEntry(outputEntry);
dmnRule.getConclusions().add(conclusion);
}
return dmnRule;
}
use of org.camunda.bpm.model.dmn.instance.OutputEntry in project camunda-dmn-model by camunda.
the class ExpressionLanguageTest method shouldReadExpressionLanguage.
@Test
@DmnModelResource(resource = EXPRESSION_LANGUAGE_DMN)
public void shouldReadExpressionLanguage() {
Definitions definitions = modelInstance.getDefinitions();
assertThat(definitions.getExpressionLanguage()).isEqualTo(EXPRESSION_LANGUAGE);
DecisionTable decisionTable = modelInstance.getModelElementById("decisionTable");
Input input = decisionTable.getInputs().iterator().next();
assertThat(input.getInputExpression().getExpressionLanguage()).isEqualTo(EXPRESSION_LANGUAGE);
assertThat(input.getInputValues().getExpressionLanguage()).isEqualTo(EXPRESSION_LANGUAGE);
Output output = decisionTable.getOutputs().iterator().next();
assertThat(output.getOutputValues().getExpressionLanguage()).isEqualTo(EXPRESSION_LANGUAGE);
Rule rule = decisionTable.getRules().iterator().next();
InputEntry inputEntry = rule.getInputEntries().iterator().next();
assertThat(inputEntry.getExpressionLanguage()).isEqualTo(EXPRESSION_LANGUAGE);
OutputEntry outputEntry = rule.getOutputEntries().iterator().next();
assertThat(outputEntry.getExpressionLanguage()).isEqualTo(EXPRESSION_LANGUAGE);
}
use of org.camunda.bpm.model.dmn.instance.OutputEntry in project camunda-dmn-model by camunda.
the class ExpressionLanguageTest method shouldWriteExpressionLanguage.
@Test
public void shouldWriteExpressionLanguage() throws Exception {
modelInstance = Dmn.createEmptyModel();
Definitions definitions = generateNamedElement(Definitions.class, "definitions");
definitions.setNamespace(TEST_NAMESPACE);
definitions.setExpressionLanguage(EXPRESSION_LANGUAGE);
modelInstance.setDocumentElement(definitions);
Decision decision = generateNamedElement(Decision.class, "Check Order");
definitions.addChildElement(decision);
DecisionTable decisionTable = generateElement(DecisionTable.class);
decision.addChildElement(decisionTable);
Input input = generateElement(Input.class);
decisionTable.getInputs().add(input);
InputExpression inputExpression = generateElement(InputExpression.class);
inputExpression.setExpressionLanguage(EXPRESSION_LANGUAGE);
input.setInputExpression(inputExpression);
InputValues inputValues = generateElement(InputValues.class);
inputValues.setExpressionLanguage(EXPRESSION_LANGUAGE);
inputValues.setText(generateElement(Text.class));
input.setInputValues(inputValues);
Output output = generateElement(Output.class);
decisionTable.getOutputs().add(output);
OutputValues outputValues = generateElement(OutputValues.class);
outputValues.setExpressionLanguage(EXPRESSION_LANGUAGE);
outputValues.setText(generateElement(Text.class));
output.setOutputValues(outputValues);
Rule rule = generateElement(Rule.class);
decisionTable.getRules().add(rule);
InputEntry inputEntry = generateElement(InputEntry.class);
inputEntry.setExpressionLanguage(EXPRESSION_LANGUAGE);
inputEntry.setText(generateElement(Text.class));
rule.getInputEntries().add(inputEntry);
OutputEntry outputEntry = generateElement(OutputEntry.class);
outputEntry.setExpressionLanguage(EXPRESSION_LANGUAGE);
rule.getOutputEntries().add(outputEntry);
assertModelEqualsFile(EXPRESSION_LANGUAGE_DMN);
}
use of org.camunda.bpm.model.dmn.instance.OutputEntry in project camunda-dmn-model by camunda.
the class OutputEntryImpl method registerType.
public static void registerType(ModelBuilder modelBuilder) {
ModelElementTypeBuilder typeBuilder = modelBuilder.defineType(OutputEntry.class, DMN_ELEMENT_OUTPUT_ENTRY).namespaceUri(DMN11_NS).extendsType(LiteralExpression.class).instanceProvider(new ModelTypeInstanceProvider<OutputEntry>() {
public OutputEntry newInstance(ModelTypeInstanceContext instanceContext) {
return new OutputEntryImpl(instanceContext);
}
});
typeBuilder.build();
}
use of org.camunda.bpm.model.dmn.instance.OutputEntry in project camunda-dmn-model by camunda.
the class ExampleTestCompatibility method shouldWriteElements.
@Test
public void shouldWriteElements() throws Exception {
modelInstance = Dmn.createEmptyModel();
// Definitions
Definitions definitions = generateNamedElement(Definitions.class, "definitions");
definitions.setNamespace(TEST_NAMESPACE);
modelInstance.setDocumentElement(definitions);
// Decision
Decision decision = generateNamedElement(Decision.class, "Check Order");
definitions.addChildElement(decision);
// Decision table
DecisionTable decisionTable = generateElement(DecisionTable.class);
decision.addChildElement(decisionTable);
// 1. Input clause
Input input = generateElement(Input.class, 1);
input.setLabel("Customer Status");
InputExpression inputExpression = generateElement(InputExpression.class, 1);
inputExpression.setTypeRef("string");
Text text = generateElement(Text.class);
text.setTextContent("status");
inputExpression.setText(text);
input.setInputExpression(inputExpression);
InputValues inputValues = generateElement(InputValues.class);
text = generateElement(Text.class);
text.setTextContent("\"bronze\",\"silver\",\"gold\"");
inputValues.setText(text);
input.setInputValues(inputValues);
decisionTable.getInputs().add(input);
// 2. Input clause
input = generateElement(Input.class, 2);
input.setLabel("Order Sum");
inputExpression = generateElement(InputExpression.class, 2);
inputExpression.setTypeRef("double");
text = generateElement(Text.class);
text.setTextContent("sum");
inputExpression.setText(text);
input.setInputExpression(inputExpression);
decisionTable.getInputs().add(input);
// 1. Output clause
Output output = generateElement(Output.class, 1);
output.setLabel("Check Result");
output.setName("result");
output.setTypeRef("string");
OutputValues outputValues = generateElement(OutputValues.class);
text = generateElement(Text.class);
text.setTextContent("\"ok\",\"notok\"");
outputValues.setText(text);
output.setOutputValues(outputValues);
decisionTable.getOutputs().add(output);
// 2. Output clause
output = generateElement(Output.class, 2);
output.setLabel("Reason");
output.setName("reason");
output.setTypeRef("string");
decisionTable.getOutputs().add(output);
// 1. Rule
Rule rule = generateElement(Rule.class, 1);
InputEntry inputEntry = generateElement(InputEntry.class, 1);
text = generateElement(Text.class);
text.setTextContent("\"bronze\"");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
inputEntry = generateElement(InputEntry.class, 2);
text = generateElement(Text.class);
text.setTextContent("");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
OutputEntry outputEntry = generateElement(OutputEntry.class, 1);
text = generateElement(Text.class);
text.setTextContent("\"notok\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
outputEntry = generateElement(OutputEntry.class, 2);
text = generateElement(Text.class);
text.getDomElement().addCDataSection("\"work on your status first, as bronze you're not going to get anything\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
decisionTable.getRules().add(rule);
// 2. Rule
rule = generateElement(Rule.class, 2);
inputEntry = generateElement(InputEntry.class, 3);
text = generateElement(Text.class);
text.setTextContent("\"silver\"");
rule.getInputEntries().add(inputEntry);
inputEntry.setText(text);
inputEntry = generateElement(InputEntry.class, 4);
text = generateElement(Text.class);
text.getDomElement().addCDataSection("< 1000");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
outputEntry = generateElement(OutputEntry.class, 3);
text = generateElement(Text.class);
text.setTextContent("\"ok\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
outputEntry = generateElement(OutputEntry.class, 4);
text = generateElement(Text.class);
text.setTextContent("\"you little fish will get what you want\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
decisionTable.getRules().add(rule);
// 3. Rule
rule = generateElement(Rule.class, 3);
inputEntry = generateElement(InputEntry.class, 5);
text = generateElement(Text.class);
text.setTextContent("\"silver\"");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
inputEntry = generateElement(InputEntry.class, 6);
text = generateElement(Text.class);
text.getDomElement().addCDataSection(">= 1000");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
outputEntry = generateElement(OutputEntry.class, 5);
text = generateElement(Text.class);
text.setTextContent("\"notok\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
outputEntry = generateElement(OutputEntry.class, 6);
text = generateElement(Text.class);
text.setTextContent("\"you took too much man, you took too much!\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
decisionTable.getRules().add(rule);
// 4. Rule
rule = generateElement(Rule.class, 4);
inputEntry = generateElement(InputEntry.class, 7);
text = generateElement(Text.class);
text.setTextContent("\"gold\"");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
inputEntry = generateElement(InputEntry.class, 8);
text = generateElement(Text.class);
text.setTextContent("");
inputEntry.setText(text);
rule.getInputEntries().add(inputEntry);
outputEntry = generateElement(OutputEntry.class, 7);
text = generateElement(Text.class);
text.setTextContent("\"ok\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
outputEntry = generateElement(OutputEntry.class, 8);
text = generateElement(Text.class);
text.setTextContent("\"you get anything you want\"");
outputEntry.setText(text);
rule.getOutputEntries().add(outputEntry);
decisionTable.getRules().add(rule);
assertModelEqualsFile(EXAMPLE_DMN);
}
Aggregations