diff --git a/dmn-verifier-app/pom.xml b/dmn-verifier-app/pom.xml index 4323696b0a231960c07c2c314187bb65a6d93c77..b61fe67ffe13fbdd7a3bc1ae402ea66b6ef4580b 100644 --- a/dmn-verifier-app/pom.xml +++ b/dmn-verifier-app/pom.xml @@ -12,7 +12,7 @@ <properties> <build.name>ROOT</build.name> - <version.camunda>7.10.0</version.camunda> + <version.camunda>7.11.0</version.camunda> </properties> <repositories> diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java index 32ed1a630ffc3c6f9c13a011f8c1801f82df6128..f733227431c63af264a13f5e93594ffe7b7e355e 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java @@ -87,6 +87,10 @@ public class DmnRuleMap { dmnRuleMap.inputColumns.add(it); dmnRuleMap.inputs.put(it, new ArrayList<>()); List<Value> inList = dmnRuleMap.inputs.get(it); + if (DataType.BOOLEAN == it.dataType) { + it.addPredefinedValues("true"); + it.addPredefinedValues("false"); + } int r = 0; for (DmnDecisionTableRuleImpl rule : table.getRules()) { DmnExpressionImpl condition = rule.getConditions().get(i); @@ -96,6 +100,12 @@ public class DmnRuleMap { dmnRuleMap.ruleInputValues.getOrDefault(value.getRuleIdentifier(), new ArrayList<>()); rules.add(value); dmnRuleMap.ruleInputValues.put(value.getRuleIdentifier(), rules); + // If string, add to possible values + if (DataType.STRING == it.dataType && value.getOrgExpression() != null) { + it.addPredefinedValues( + value.getOrgExpression()); // TODO: add predifined Values from org "Predefined + // Values" + } } i++; } @@ -106,6 +116,10 @@ public class DmnRuleMap { dmnRuleMap.outputColumns.add(ot); dmnRuleMap.outputs.put(ot, new ArrayList<>()); List<Value> outList = dmnRuleMap.outputs.get(ot); + if (DataType.BOOLEAN == ot.dataType) { + ot.addPredefinedValues("true"); + ot.addPredefinedValues("false"); + } int r = 0; for (DmnDecisionTableRuleImpl rule : table.getRules()) { DmnExpressionImpl conclusion = rule.getConclusions().get(i); @@ -116,6 +130,10 @@ public class DmnRuleMap { value.getRuleIdentifier(), new ArrayList<>()); rules.add(value); dmnRuleMap.ruleOutputValues.put(value.getRuleIdentifier(), rules); + // If string, add to possible values + if (DataType.STRING == ot.dataType && value.getOrgExpression() != null) { + ot.addPredefinedValues(value.getOrgExpression()); + } } i++; } @@ -163,12 +181,16 @@ public class DmnRuleMap { inputColumns.stream() .filter(i -> i.getDecisionKey().equals(ot.getDecisionKey())) .collect(Collectors.toList())) { - // only, if the label didnt exists in prev created cols - if (newInputTypes.stream() + // only, if the label didn't exists in previously created input + Optional<InputType> existingInputType = + newInputTypes.stream() .filter(i -> i.label.equals(inputType.label) && i.dataType == inputType.dataType) - .limit(1) - .count() - < 1) { + .findFirst(); + if (existingInputType.isPresent()) { + inputType + .getPredefinedValues() + .forEach(p -> existingInputType.get().addPredefinedValues(p)); + } else { InputType newInputType = new InputType(inputType); newInputType.setOverwrittenDecisionKey(newDmnKey); newInputTypes.add(newInputType); diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java index 09eb087292aab86b907d280562fd09f63f4d9f74..ca97925656002ea00133643981d731fe41055c8e 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java @@ -1,7 +1,9 @@ package de.unikoblenz.fgbks.dmn.core.dmnhelper; import de.unikoblenz.fgbks.dmn.core.models.RuleIdentifier; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; import org.camunda.bpm.dmn.engine.DmnDecision; import org.camunda.bpm.dmn.engine.impl.DmnExpressionImpl; @@ -12,6 +14,7 @@ public abstract class Type { protected final DataType dataType; protected final String label; protected String overwrittenDecisionKey; + protected Set<String> predefinedValues; public String getDecisionKey() { if (overwrittenDecisionKey != null) { @@ -40,12 +43,21 @@ public abstract class Type { this.overwrittenDecisionKey = overwrittenDecisionKey; } + public Set<String> getPredefinedValues() { + return new HashSet<>(predefinedValues); + } + + public void addPredefinedValues(String predefinedValue) { + predefinedValues.add(predefinedValue); + } + protected Type(DmnDecision decision, String id, DataType dataType, String label) { this.decision = decision; this.id = id; this.dataType = dataType; this.label = label; this.overwrittenDecisionKey = null; + this.predefinedValues = new HashSet<>(); } public Type(Type type) { @@ -54,6 +66,7 @@ public abstract class Type { this.dataType = type.dataType; this.label = type.label; this.overwrittenDecisionKey = type.overwrittenDecisionKey; + this.predefinedValues = new HashSet<>(type.predefinedValues); } public boolean isMergedType() { diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierResult.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierResult.java index dbb6725f42c96f43b5dccfd360340cc3cf322682..a43e1f1af32848c44002023e60a5a31ec2f45365 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierResult.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierResult.java @@ -2,8 +2,8 @@ package de.unikoblenz.fgbks.dmn.core.models; import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import java.io.Serializable; -import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Set; @@ -27,7 +27,7 @@ public class VerifierResult implements Serializable { protected VerifierResult() { super(); - verifications = new ArrayList<>(); + verifications = new LinkedList<>(); } @XmlElement(name = "multiTable") diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java index 74386bf1aac19cf3d053ed7a4d08c8c870475f24..05ba137694602b639d85d3c09a8c79b48dc6f668 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java @@ -25,7 +25,7 @@ public enum VerifierType { false), Equivalent("Checking for synonyms in columns.", EquivalentVerifier.class, true, false, false), Overlap("Checking for overlapping rules.", OverlappingVerifier.class, true, true, false), - Missing("Checking for missing rules.", MissingVerifier.class, true, false, false), + Missing("Checking for missing rules.", MissingVerifier.class, false, false, false), PartialReduction( "Checking for partial reduction of rules (combination).", PartialReductionVerifier.class, @@ -41,31 +41,31 @@ public enum VerifierType { MultiTableIdentical( "Checking for identical rules in multiple tables with identical outcome column.", MultiTableIdenticalVerifier.class, - true, + false, true, true), MultiTableOverlapping( "Checking for overlapping rules in multiple tables with identical outcome column.", MultiTableOverlappingVerifier.class, - true, + false, true, true), MultiTableSubsumption( "Checking for subsumptions in multiple tables with identical outcome column.", MultiTableSubsumptionVerifier.class, - true, + false, true, true), MultiTableEquivalent( "Checking for synonyms in columns in multiple tables with identical outcome column.", MultiTableEquivalentVerifier.class, - true, + false, false, true), MultiTablePartialReduction( "Checking for partial reduction of rules (combination) in multiple tables with identical outcome column.", MultiTablePartialReductionVerifier.class, - true, + false, false, true); diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/MissingVerifier.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/MissingVerifier.java index f22b72dbaeceb343f2848888a435ea3b5ba0e325..3093f0cf1195e4399282be6962ccff7f3ba7dad7 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/MissingVerifier.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/MissingVerifier.java @@ -7,6 +7,7 @@ import de.unikoblenz.fgbks.dmn.core.models.RuleIdentifier; import de.unikoblenz.fgbks.dmn.core.models.VerificationResult; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -63,7 +64,7 @@ public class MissingVerifier extends AbstractVerifier { private void checkForMissingRules( List<Type> inputs, List<Value> values, List<Value[]> missingRules) { // search the missing rules, which are in contact with the current rule - List<Value[]> inContactRules = new ArrayList<>(); + List<Value[]> inContactRules = new LinkedList<>(); for (Value[] missingRule : missingRules) { if (isInContact(missingRule, values)) { inContactRules.add(missingRule); @@ -72,7 +73,7 @@ public class MissingVerifier extends AbstractVerifier { // remove found rules from current missingRules missingRules.removeAll(inContactRules); // Build new missing rules from in contact rules - List<Value[]> newMissingRules = new ArrayList<>(); + List<Value[]> newMissingRules = new LinkedList<>(); for (Value[] missingRuleValues : inContactRules) { newMissingRules.addAll(constructNewMissingRules(inputs, missingRuleValues, values)); } @@ -92,7 +93,7 @@ public class MissingVerifier extends AbstractVerifier { private List<Value[]> constructNewMissingRules( List<Type> inputs, Value[] missingRuleValues, List<Value> values) { - List<Value[]> newMissingRules = new ArrayList<>(); + List<Value[]> newMissingRules = new LinkedList<>(); for (int i = 0; i < missingRuleValues.length; i++) { // change bound for i-1 if (i != 0) { diff --git a/dmn-verifier-app/src/main/resources/sampleDMN.dmn b/dmn-verifier-app/src/main/resources/sampleDMN.dmn index 6f55a0830bd5bd36d9a6f03fc3dc9a303e39be45..ae0971edf4bfed2863986181ccda8be6f68b356d 100644 --- a/dmn-verifier-app/src/main/resources/sampleDMN.dmn +++ b/dmn-verifier-app/src/main/resources/sampleDMN.dmn @@ -14,6 +14,9 @@ <inputExpression id="LiteralExpression_16k88l6" typeRef="string"> <text>testString</text> </inputExpression> + <inputValues id="UnaryTests_1dqtimh"> + <text>"Hello","World","Nicole"</text> + </inputValues> </input> <output id="output_1" typeRef="string" /> <rule id="DecisionRule_1cwar6s"> @@ -21,7 +24,7 @@ <text>=10</text> </inputEntry> <inputEntry id="UnaryTests_1wdwt7k"> - <text>"Hallo"</text> + <text>"Hello"</text> </inputEntry> <outputEntry id="LiteralExpression_0q4dj07"> <text></text> @@ -43,7 +46,7 @@ <text>=10</text> </inputEntry> <inputEntry id="UnaryTests_04ee59d"> - <text>"Hallo"</text> + <text>"Hello"</text> </inputEntry> <outputEntry id="LiteralExpression_1vwq9kg"> <text></text> @@ -455,54 +458,54 @@ </rule> </decisionTable> </decision> - <decision id="Decision_13hi6aw" name="Missing 2"> - <extensionElements> - <biodi:bounds x="859" y="215" width="180" height="80" /> - </extensionElements> - <decisionTable id="DecisionTable_00f0o2m"> - <input id="InputClause_13up6c7" label="x"> - <inputExpression id="LiteralExpression_1dn7njr" typeRef="integer" /> - </input> - <input id="InputClause_0847npz" label="y"> - <inputExpression id="LiteralExpression_0obosay" typeRef="integer"> - <text></text> - </inputExpression> - </input> - <output id="OutputClause_18obzop" typeRef="string" /> - <rule id="DecisionRule_0oyfmhy"> - <inputEntry id="UnaryTests_0xy4bmj"> - <text>[2..4]</text> - </inputEntry> - <inputEntry id="UnaryTests_10fhwew"> - <text>[3..5]</text> - </inputEntry> - <outputEntry id="LiteralExpression_0dwkyvr"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_0vgwssx"> - <inputEntry id="UnaryTests_1lqrnuq"> - <text>[6..7]</text> - </inputEntry> - <inputEntry id="UnaryTests_13svgy5"> - <text>[2..7]</text> - </inputEntry> - <outputEntry id="LiteralExpression_01uesqf"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_1nc162p"> - <inputEntry id="UnaryTests_04orlte"> - <text>[3..5]</text> - </inputEntry> - <inputEntry id="UnaryTests_1au3mbz"> - <text>[6..8]</text> - </inputEntry> - <outputEntry id="LiteralExpression_1xsp0mf"> - <text></text> - </outputEntry> - </rule> - </decisionTable> + <decision id="Decision_13hi6aw" name="Missing 2"> + <extensionElements> + <biodi:bounds x="859" y="215" width="180" height="80" /> + </extensionElements> + <decisionTable id="DecisionTable_00f0o2m"> + <input id="InputClause_13up6c7" label="x"> + <inputExpression id="LiteralExpression_1dn7njr" typeRef="integer" /> + </input> + <input id="InputClause_0847npz" label="y"> + <inputExpression id="LiteralExpression_0obosay" typeRef="integer"> + <text></text> + </inputExpression> + </input> + <output id="OutputClause_18obzop" typeRef="string" /> + <rule id="DecisionRule_0oyfmhy"> + <inputEntry id="UnaryTests_0xy4bmj"> + <text>[2..4]</text> + </inputEntry> + <inputEntry id="UnaryTests_10fhwew"> + <text>[3..5]</text> + </inputEntry> + <outputEntry id="LiteralExpression_0dwkyvr"> + <text></text> + </outputEntry> + </rule> + <rule id="DecisionRule_0vgwssx"> + <inputEntry id="UnaryTests_1lqrnuq"> + <text>[6..7]</text> + </inputEntry> + <inputEntry id="UnaryTests_13svgy5"> + <text>[2..7]</text> + </inputEntry> + <outputEntry id="LiteralExpression_01uesqf"> + <text></text> + </outputEntry> + </rule> + <rule id="DecisionRule_1nc162p"> + <inputEntry id="UnaryTests_04orlte"> + <text>[3..5]</text> + </inputEntry> + <inputEntry id="UnaryTests_1au3mbz"> + <text>[6..8]</text> + </inputEntry> + <outputEntry id="LiteralExpression_1xsp0mf"> + <text></text> + </outputEntry> + </rule> + </decisionTable> </decision> <decision id="Decision_0m4xor4" name="Partial Reduction"> <extensionElements> diff --git a/dmn-verifier-app/src/main/webapp/index.xhtml b/dmn-verifier-app/src/main/webapp/index.xhtml index dbd17ee8129ff7b8fac01326293f0a2ca79ad1e5..d692b52fa101a74aa335e5841f8e75efb0b97b89 100644 --- a/dmn-verifier-app/src/main/webapp/index.xhtml +++ b/dmn-verifier-app/src/main/webapp/index.xhtml @@ -3,8 +3,7 @@ xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" - xmlns:p="http://primefaces.org/ui" - xmlns:c="http://java.sun.com/jsp/jstl/core"> + xmlns:p="http://primefaces.org/ui"> <ui:define name="content"> <link rel="stylesheet" href="https://unpkg.com/dmn-js@6.3.1/dist/assets/diagram-js.css"/> <link rel="stylesheet" href="https://unpkg.com/dmn-js@6.3.1/dist/assets/dmn-js-shared.css"/> diff --git a/dmn-verifier-app/src/test/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMapTest.java b/dmn-verifier-app/src/test/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMapTest.java index c587364bffac4b8b1f223f82fbb8b6b39812c1d7..7ebb2d48a9f8eda5b12ec2408ad5d601a6f1d6c9 100644 --- a/dmn-verifier-app/src/test/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMapTest.java +++ b/dmn-verifier-app/src/test/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMapTest.java @@ -7,26 +7,33 @@ import java.io.InputStream; import java.util.List; import org.camunda.bpm.dmn.engine.DmnDecision; import org.camunda.bpm.dmn.engine.DmnEngineConfiguration; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; class DmnRuleMapTest { - private List<DmnDecision> dmnDecisions; - @BeforeEach - void init() throws FileNotFoundException { + @Test + void testMultiTable() throws FileNotFoundException { File f = new File("."); InputStream inputStream = new FileInputStream( new File(getClass().getClassLoader().getResource("dmnMultiTable1.dmn").getFile())); - this.dmnDecisions = + List<DmnDecision> dmnDecisions = DmnEngineConfiguration.createDefaultDmnEngineConfiguration() .buildEngine() .parseDecisions(inputStream); + DmnRuleMap rm = DmnRuleMap.createMapFromDmn(dmnDecisions); } @Test - void testCreation() { + void testPredefinedValues() throws FileNotFoundException { + File f = new File("."); + InputStream inputStream = + new FileInputStream( + new File(getClass().getClassLoader().getResource("dmnPredefinedValues.dmn").getFile())); + List<DmnDecision> dmnDecisions = + DmnEngineConfiguration.createDefaultDmnEngineConfiguration() + .buildEngine() + .parseDecisions(inputStream); DmnRuleMap rm = DmnRuleMap.createMapFromDmn(dmnDecisions); } } diff --git a/dmn-verifier-app/src/test/resources/dmnPredefinedValues.dmn b/dmn-verifier-app/src/test/resources/dmnPredefinedValues.dmn new file mode 100644 index 0000000000000000000000000000000000000000..c8c8087854024c006fbe524e4d03dbe653f9ba5d --- /dev/null +++ b/dmn-verifier-app/src/test/resources/dmnPredefinedValues.dmn @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/1.0" id="Definitions_1kjh9a2" name="DRD" namespace="http://camunda.org/schema/1.0/dmn"> + <decision id="Decision_13nychf" name="Identical"> + <extensionElements> + <biodi:bounds x="87" y="130" width="180" height="80" /> + </extensionElements> + <decisionTable id="decisionTable_1"> + <input id="input_1"> + <inputExpression id="inputExpression_1" typeRef="integer"> + <text>testNumber</text> + </inputExpression> + </input> + <input id="InputClause_0rrhtk1"> + <inputExpression id="LiteralExpression_16k88l6" typeRef="string"> + <text>testString</text> + </inputExpression> + <inputValues id="UnaryTests_1dqtimh"> + <text>"Hello","World","Nicole"</text> + </inputValues> + </input> + <output id="output_1" typeRef="string" /> + <rule id="DecisionRule_1cwar6s"> + <inputEntry id="UnaryTests_0pk3kty"> + <text>=10</text> + </inputEntry> + <inputEntry id="UnaryTests_1wdwt7k"> + <text>"Hello"</text> + </inputEntry> + <outputEntry id="LiteralExpression_0q4dj07"> + <text></text> + </outputEntry> + </rule> + <rule id="DecisionRule_1p34o1d"> + <inputEntry id="UnaryTests_1ch9v1c"> + <text>=10</text> + </inputEntry> + <inputEntry id="UnaryTests_01s94by"> + <text>"Nicole"</text> + </inputEntry> + <outputEntry id="LiteralExpression_06akk3i"> + <text></text> + </outputEntry> + </rule> + <rule id="DecisionRule_0qsr7sc"> + <inputEntry id="UnaryTests_15uwa59"> + <text>=10</text> + </inputEntry> + <inputEntry id="UnaryTests_04ee59d"> + <text>"Hello"</text> + </inputEntry> + <outputEntry id="LiteralExpression_1vwq9kg"> + <text></text> + </outputEntry> + </rule> + <rule id="DecisionRule_1js41zm"> + <inputEntry id="UnaryTests_1txm13n"> + <text>=11</text> + </inputEntry> + <inputEntry id="UnaryTests_1jlekat"> + <text></text> + </inputEntry> + <outputEntry id="LiteralExpression_1qpe5et"> + <text></text> + </outputEntry> + </rule> + <rule id="DecisionRule_12uwz7k"> + <inputEntry id="UnaryTests_18blk05"> + <text>=11</text> + </inputEntry> + <inputEntry id="UnaryTests_12rozq9"> + <text></text> + </inputEntry> + <outputEntry id="LiteralExpression_01a2ulw"> + <text></text> + </outputEntry> + </rule> + </decisionTable> + </decision> +</definitions> diff --git a/dmn-verifier-app/src/test/resources/emptyDMN.dmn b/dmn-verifier-app/src/test/resources/emptyDMN.dmn deleted file mode 100644 index 73f512d15fe89bed7f3029e37912e153ce10ef34..0000000000000000000000000000000000000000 --- a/dmn-verifier-app/src/test/resources/emptyDMN.dmn +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/1.0" id="Definitions_1kjh9a2" name="DRD" namespace="http://camunda.org/schema/1.0/dmn"> - <decision id="Decision_13nychf" name="Decision 1"> - <extensionElements> - <biodi:bounds x="120" y="145" width="180" height="80" /> - </extensionElements> - <decisionTable id="decisionTable_1"> - <input id="input_1"> - <inputExpression id="inputExpression_1" typeRef="string"> - <text></text> - </inputExpression> - </input> - <output id="output_1" typeRef="string" /> - </decisionTable> - </decision> -</definitions> diff --git a/dmn-verifier-app/src/test/resources/sampleDMN.dmn b/dmn-verifier-app/src/test/resources/sampleDMN.dmn deleted file mode 100644 index 45ebc85d2745f4868e2d2adbcf952bf6381ea8af..0000000000000000000000000000000000000000 --- a/dmn-verifier-app/src/test/resources/sampleDMN.dmn +++ /dev/null @@ -1,201 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/1.0" id="Definitions_1kjh9a2" name="DRD" namespace="http://camunda.org/schema/1.0/dmn"> - <decision id="Decision_13nychf" name="Identical test"> - <extensionElements> - <biodi:bounds x="120" y="145" width="180" height="80" /> - </extensionElements> - <decisionTable id="decisionTable_1"> - <input id="input_1"> - <inputExpression id="inputExpression_1" typeRef="integer"> - <text>Testnumber</text> - </inputExpression> - </input> - <input id="InputClause_0rrhtk1"> - <inputExpression id="LiteralExpression_16k88l6" typeRef="string"> - <text></text> - </inputExpression> - </input> - <output id="output_1" typeRef="string" /> - <rule id="DecisionRule_1cwar6s"> - <inputEntry id="UnaryTests_0pk3kty"> - <text>=10</text> - </inputEntry> - <inputEntry id="UnaryTests_1wdwt7k"> - <text>"Hallo"</text> - </inputEntry> - <outputEntry id="LiteralExpression_0q4dj07"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_1p34o1d"> - <inputEntry id="UnaryTests_1ch9v1c"> - <text>=10</text> - </inputEntry> - <inputEntry id="UnaryTests_01s94by"> - <text>"Anna"</text> - </inputEntry> - <outputEntry id="LiteralExpression_06akk3i"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_0qsr7sc"> - <inputEntry id="UnaryTests_15uwa59"> - <text>=10</text> - </inputEntry> - <inputEntry id="UnaryTests_04ee59d"> - <text>"Hallo"</text> - </inputEntry> - <outputEntry id="LiteralExpression_1vwq9kg"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_1js41zm"> - <inputEntry id="UnaryTests_1txm13n"> - <text>=11</text> - </inputEntry> - <inputEntry id="UnaryTests_1jlekat"> - <text></text> - </inputEntry> - <outputEntry id="LiteralExpression_1qpe5et"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_12uwz7k"> - <inputEntry id="UnaryTests_18blk05"> - <text>=11</text> - </inputEntry> - <inputEntry id="UnaryTests_12rozq9"> - <text></text> - </inputEntry> - <outputEntry id="LiteralExpression_01a2ulw"> - <text></text> - </outputEntry> - </rule> - </decisionTable> - </decision> - <decision id="Decision_1vo386g" name="Subsumption test 1"> - <extensionElements> - <biodi:bounds x="344" y="74" width="180" height="80" /> - </extensionElements> - <decisionTable id="DecisionTable_0tq1rr0"> - <input id="InputClause_0f5fjmn"> - <inputExpression id="LiteralExpression_0flv94t" typeRef="integer" /> - </input> - <output id="OutputClause_0c6vpaw" typeRef="string" /> - <rule id="DecisionRule_15aojnz"> - <inputEntry id="UnaryTests_0wp6h38"> - <text>[0..10]</text> - </inputEntry> - <outputEntry id="LiteralExpression_0m0psw2"> - <text>"Hello"</text> - </outputEntry> - </rule> - <rule id="DecisionRule_0al9vbu"> - <inputEntry id="UnaryTests_0rynlvv"> - <text>[0..5]</text> - </inputEntry> - <outputEntry id="LiteralExpression_0f6oge7"> - <text>"World"</text> - </outputEntry> - </rule> - <rule id="DecisionRule_0p54cry"> - <inputEntry id="UnaryTests_0ntn86o"> - <text>[7..9]</text> - </inputEntry> - <outputEntry id="LiteralExpression_1atols8"> - <text>"Hello"</text> - </outputEntry> - </rule> - <rule id="DecisionRule_0h2fkl8"> - <inputEntry id="UnaryTests_11ajd7x"> - <text>[7..15]</text> - </inputEntry> - <outputEntry id="LiteralExpression_0drd4qx"> - <text>"FuBa"</text> - </outputEntry> - </rule> - </decisionTable> - </decision> - <decision id="Decision_19xi89b" name="Subsumption test 2"> - <extensionElements> - <biodi:bounds x="343" y="178" width="180" height="80" /> - </extensionElements> - <decisionTable id="DecisionTable_0p3gy3p"> - <input id="InputClause_095mouf"> - <inputExpression id="LiteralExpression_0by8u52" typeRef="integer" /> - </input> - <input id="InputClause_1noqtoh"> - <inputExpression id="LiteralExpression_1w9f5gq" typeRef="string"> - <text></text> - </inputExpression> - </input> - <output id="OutputClause_0xupopk" typeRef="string" /> - <rule id="DecisionRule_0kkfntw"> - <inputEntry id="UnaryTests_12wi462"> - <text>[10..20]</text> - </inputEntry> - <inputEntry id="UnaryTests_0kardbu"> - <text>"a"</text> - </inputEntry> - <outputEntry id="LiteralExpression_09o0uoj"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_02ugnup"> - <inputEntry id="UnaryTests_10mg943"> - <text>[11..19]</text> - </inputEntry> - <inputEntry id="UnaryTests_16v2m5l"> - <text>"a"</text> - </inputEntry> - <outputEntry id="LiteralExpression_1n8yp0s"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_1l9le35"> - <inputEntry id="UnaryTests_1nyire8"> - <text>[12..18]</text> - </inputEntry> - <inputEntry id="UnaryTests_1lbqwex"> - <text>"b"</text> - </inputEntry> - <outputEntry id="LiteralExpression_0h5ubao"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_0ok83ek"> - <inputEntry id="UnaryTests_04p4mkt"> - <text>[12..18]</text> - </inputEntry> - <inputEntry id="UnaryTests_1w75h2z"> - <text>"a"</text> - </inputEntry> - <outputEntry id="LiteralExpression_1s6eocn"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_1fy5k22"> - <inputEntry id="UnaryTests_09z2anu"> - <text>[13..17]</text> - </inputEntry> - <inputEntry id="UnaryTests_1yd8iel"> - <text></text> - </inputEntry> - <outputEntry id="LiteralExpression_0c4gtb4"> - <text></text> - </outputEntry> - </rule> - <rule id="DecisionRule_18921uy"> - <inputEntry id="UnaryTests_1cbt1dj"> - <text>[0..21]</text> - </inputEntry> - <inputEntry id="UnaryTests_1515ccv"> - <text></text> - </inputEntry> - <outputEntry id="LiteralExpression_1u5cl6z"> - <text></text> - </outputEntry> - </rule> - </decisionTable> - </decision> -</definitions>