use of org.camunda.bpm.model.dmn.instance.Decision in project camunda-bpm-platform by camunda.
the class DecisionDefinitionDeployerTest method createDmnModelInstanceNegativeHistoryTimeToLive.
protected static DmnModelInstance createDmnModelInstanceNegativeHistoryTimeToLive() {
DmnModelInstance modelInstance = Dmn.createEmptyModel();
Definitions definitions = modelInstance.newInstance(Definitions.class);
definitions.setId(DmnModelConstants.DMN_ELEMENT_DEFINITIONS);
definitions.setName(DmnModelConstants.DMN_ELEMENT_DEFINITIONS);
definitions.setNamespace(DmnModelConstants.CAMUNDA_NS);
modelInstance.setDefinitions(definitions);
Decision decision = modelInstance.newInstance(Decision.class);
decision.setId("Decision-1");
decision.setName("foo");
decision.setCamundaHistoryTimeToLive(-5);
modelInstance.getDefinitions().addChildElement(decision);
return modelInstance;
}
use of org.camunda.bpm.model.dmn.instance.Decision in project camunda-bpm-platform by camunda.
the class DecisionDefinitionDeployerTest method createDmnModelInstance.
protected static DmnModelInstance createDmnModelInstance() {
DmnModelInstance modelInstance = Dmn.createEmptyModel();
Definitions definitions = modelInstance.newInstance(Definitions.class);
definitions.setId(DmnModelConstants.DMN_ELEMENT_DEFINITIONS);
definitions.setName(DmnModelConstants.DMN_ELEMENT_DEFINITIONS);
definitions.setNamespace(DmnModelConstants.CAMUNDA_NS);
modelInstance.setDefinitions(definitions);
Decision decision = modelInstance.newInstance(Decision.class);
decision.setId("Decision-1");
decision.setName("foo");
decision.setCamundaHistoryTimeToLive(5);
modelInstance.getDefinitions().addChildElement(decision);
DecisionTable decisionTable = modelInstance.newInstance(DecisionTable.class);
decisionTable.setId(DmnModelConstants.DMN_ELEMENT_DECISION_TABLE);
decisionTable.setHitPolicy(HitPolicy.FIRST);
decision.addChildElement(decisionTable);
Input input = modelInstance.newInstance(Input.class);
input.setId("Input-1");
input.setLabel("Input");
decisionTable.addChildElement(input);
InputExpression inputExpression = modelInstance.newInstance(InputExpression.class);
inputExpression.setId("InputExpression-1");
Text inputExpressionText = modelInstance.newInstance(Text.class);
inputExpressionText.setTextContent("input");
inputExpression.setText(inputExpressionText);
inputExpression.setTypeRef("string");
input.setInputExpression(inputExpression);
Output output = modelInstance.newInstance(Output.class);
output.setName("output");
output.setLabel("Output");
output.setTypeRef("string");
decisionTable.addChildElement(output);
return modelInstance;
}
use of org.camunda.bpm.model.dmn.instance.Decision in project camunda-dmn-model by camunda.
the class ExampleCompatibilityTest method shouldGetElements.
@Test
public void shouldGetElements() {
// Definitions
Definitions definitions = modelInstance.getDefinitions();
assertThat(definitions).isNotNull();
assertThat(definitions.getId()).isEqualTo("definitions");
assertThat(definitions.getName()).isEqualTo("definitions");
assertThat(definitions.getNamespace()).isEqualTo(TEST_NAMESPACE);
assertElementIsEqualToId(definitions, "definitions");
// Imports
Collection<Import> imports = definitions.getImports();
assertThat(imports).isEmpty();
// Item definitions
Collection<ItemDefinition> itemDefinitions = definitions.getItemDefinitions();
assertThat(itemDefinitions).isEmpty();
// DRG elements
Collection<DrgElement> drgElements = definitions.getDrgElements();
assertThat(drgElements).isNotEmpty().hasSize(1);
// Decision
Decision decision = (Decision) drgElements.iterator().next();
assertThat(decision).isNotNull();
assertThat(decision.getId()).isEqualTo("decision");
assertThat(decision.getName()).isEqualTo("Check Order");
assertElementIsEqualToId(decision, "decision");
// Decision table
DecisionTable decisionTable = (DecisionTable) decision.getExpression();
assertThat(decisionTable).isNotNull();
assertThat(decisionTable.getId()).isEqualTo("decisionTable");
assertElementIsEqualToId(decisionTable, "decisionTable");
// Input clauses
List<Input> inputs = new ArrayList<>(decisionTable.getInputs());
assertThat(inputs).hasSize(2);
Iterator<Input> inputIterator = inputs.iterator();
// 1. Input clause
Input input = inputIterator.next();
assertThat(input.getId()).isEqualTo("input1");
assertThat(input.getLabel()).isEqualTo("Customer Status");
InputExpression inputExpression = input.getInputExpression();
assertThat(inputExpression.getId()).isEqualTo("inputExpression1");
assertThat(inputExpression.getTypeRef()).isEqualTo("string");
assertThat(inputExpression.getText().getTextContent()).isEqualTo("status");
InputValues inputValues = input.getInputValues();
assertThat(inputValues.getText().getTextContent()).isEqualTo("\"bronze\",\"silver\",\"gold\"");
// 2. Input clause
input = inputIterator.next();
assertThat(input.getId()).isEqualTo("input2");
assertThat(input.getLabel()).isEqualTo("Order Sum");
inputExpression = input.getInputExpression();
assertThat(inputExpression.getId()).isEqualTo("inputExpression2");
assertThat(inputExpression.getTypeRef()).isEqualTo("double");
// Output clause
List<Output> outputs = new ArrayList<>(decisionTable.getOutputs());
assertThat(outputs).hasSize(2);
// 1. Output clause
Output output = outputs.get(0);
assertThat(output.getId()).isEqualTo("output1");
assertThat(output.getLabel()).isEqualTo("Check Result");
assertThat(output.getName()).isEqualTo("result");
assertThat(output.getTypeRef()).isEqualTo("string");
OutputValues outputValues = output.getOutputValues();
assertThat(outputValues.getText().getTextContent()).isEqualTo("\"ok\",\"notok\"");
// 2. Output clause
output = outputs.get(1);
assertThat(output.getId()).isEqualTo("output2");
assertThat(output.getLabel()).isEqualTo("Reason");
assertThat(output.getName()).isEqualTo("reason");
assertThat(output.getTypeRef()).isEqualTo("string");
// Rules
List<Rule> rules = new ArrayList<>(decisionTable.getRules());
// 1. Rule
Rule rule = rules.get(0);
assertThat(rule.getId()).isEqualTo("rule1");
List<InputEntry> inputEntries = new ArrayList<>(rule.getInputEntries());
assertThat(inputEntries).hasSize(2);
assertThat(inputEntries.get(0).getText().getTextContent()).isEqualTo("\"bronze\"");
assertThat(inputEntries.get(1).getText().getTextContent()).isEmpty();
List<OutputEntry> outputEntries = new ArrayList<>(rule.getOutputEntries());
assertThat(outputEntries).hasSize(2);
assertThat(outputEntries.get(0).getText().getTextContent()).isEqualTo("\"notok\"");
assertThat(outputEntries.get(1).getText().getTextContent()).isEqualTo("\"work on your status first, as bronze you're not going to get anything\"");
// 2. Rule
rule = rules.get(1);
assertThat(rule.getId()).isEqualTo("rule2");
inputEntries = new ArrayList<>(rule.getInputEntries());
assertThat(inputEntries).hasSize(2);
assertThat(inputEntries.get(0).getText().getTextContent()).isEqualTo("\"silver\"");
assertThat(inputEntries.get(1).getText().getTextContent()).isEqualTo("< 1000");
outputEntries = new ArrayList<>(rule.getOutputEntries());
assertThat(outputEntries).hasSize(2);
assertThat(outputEntries.get(0).getText().getTextContent()).isEqualTo("\"ok\"");
assertThat(outputEntries.get(1).getText().getTextContent()).isEqualTo("\"you little fish will get what you want\"");
// 3. Rule
rule = rules.get(2);
assertThat(rule.getId()).isEqualTo("rule3");
inputEntries = new ArrayList<>(rule.getInputEntries());
assertThat(inputEntries).hasSize(2);
assertThat(inputEntries.get(0).getText().getTextContent()).isEqualTo("\"silver\"");
assertThat(inputEntries.get(1).getText().getTextContent()).isEqualTo(">= 1000");
outputEntries = new ArrayList<>(rule.getOutputEntries());
assertThat(outputEntries).hasSize(2);
assertThat(outputEntries.get(0).getText().getTextContent()).isEqualTo("\"notok\"");
assertThat(outputEntries.get(1).getText().getTextContent()).isEqualTo("\"you took too much man, you took too much!\"");
// 4. Rule
rule = rules.get(3);
assertThat(rule.getId()).isEqualTo("rule4");
inputEntries = new ArrayList<>(rule.getInputEntries());
assertThat(inputEntries).hasSize(2);
assertThat(inputEntries.get(0).getText().getTextContent()).isEqualTo("\"gold\"");
assertThat(inputEntries.get(1).getText().getTextContent()).isEmpty();
outputEntries = new ArrayList<>(rule.getOutputEntries());
assertThat(outputEntries).hasSize(2);
assertThat(outputEntries.get(0).getText().getTextContent()).isEqualTo("\"ok\"");
assertThat(outputEntries.get(1).getText().getTextContent()).isEqualTo("\"you get anything you want\"");
// Element collections
Collection<ElementCollection> elementCollections = definitions.getElementCollections();
assertThat(elementCollections).isEmpty();
// Business contexts
Collection<BusinessContextElement> businessContextElements = definitions.getBusinessContextElements();
assertThat(businessContextElements).isEmpty();
}
use of org.camunda.bpm.model.dmn.instance.Decision in project camunda-dmn-model by camunda.
the class DmnWriterTest method shouldReadJDK9StyleModel.
/**
* <p>There is an issue in JDK 9+ that changes how CDATA section are serialized:
*
* <p>https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8223291
*
* <p>< JDK9:
*
* <pre>
* <inputEntry id="inputEntry1">
* <text><![CDATA[>= 1000]]></text>
* </inputEntry>
* </pre>
*
* <p>(the text element has one child node, a CDATA section)
*
* <p>>= JDK9:
*
* <pre>
* <inputEntry id="inputEntry1">
* <text>
* <![CDATA[>= 1000]]>
* </text>
* </inputEntry>
* </pre>
*
* <p>(the text element has three child nodes, a text node, a CDATA section and another text node)
*
* <p>This test ensures, that a JDK9-formatted model can be read
* and the text content method returns the CDATA value only
*/
@Test
public void shouldReadJDK9StyleModel() {
DmnModelInstance modelInstance = Dmn.readModelFromStream(ExampleCompatibilityTest.class.getResourceAsStream("JDK9-style-CDATA.dmn"));
Decision decision = (Decision) modelInstance.getDefinitions().getDrgElements().iterator().next();
DecisionTable decisionTable = (DecisionTable) decision.getExpression();
Rule rule = decisionTable.getRules().iterator().next();
InputEntry inputEntry = rule.getInputEntries().iterator().next();
String textContent = inputEntry.getText().getTextContent();
assertThat(textContent).isEqualTo(">= 1000");
}
use of org.camunda.bpm.model.dmn.instance.Decision 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);
}
Aggregations