Diese Präsentation bietet eine Einführung in die Automatisierung von Entscheidungen mit DMN-Tabellen und Decision Requirements Diagrammen im Zusammenspiel mit der Camunda Decision Engine.
2. 2
1. DMN
2. DMN in einen Prozess einbinden
3. Decision Requirements Diagram
4. DMN via REST nutzen
5. DMN Standalone nutzen
6. Expression Languages
Agenda
3. 1. Szenario
3
■ Eine Behörde kontrolliert Unternehmen, die Waren importieren
■ Anhand der festgestellten Mängel, werden Rechtsfolgen festgelegt
○ Bußgeld
○ Verwarnung
○ …
■ Die Rechtsfolgen richten sich nach Art der Vergehen sowie der Anzahl der Vergehen
■ Die Regeln sind die folgenden:
○ Wenn es einen Verstoß gegen das Artenschutzabkommen gibt, ist es eine Straftat, die
Staatsanwaltschaft muss ermitteln und die Ware wird beschlagnahmt.
○ Wenn die Ware eine falsche Bezeichnung hat und die falsche Herkunft angegeben wurde, wird ein
Bußgeld verhängt und die Ware ebenfalls beschlagnahmt
○ Wenn entweder die Artikelbezeichnung oder die falsche Herkunft angegeben wurde, bekommt der
Importeur ein Hinweisschreiben
○ Wenn keine Mängel vorliegen, wird der Importeur in einem Abschlussschreiben darüber informiert
5. envite consulting GmbH
DMN
5
Label
Input Variablenname
Expression Language, mit der
ausgewertet wird
Variablenname, auf den der
Input gemapped wird
Typ der Input-Variable
7. envite consulting GmbH
Hit-Policies
1. Unique
■ Es trifft genau eine Regel zu
■ Wenn mehr Regeln zu treffen, wird ein Fehler geworfen
2. Any
■ Es können mehrere Regeln zutreffen
■ Alle zutreffenden Regeln müssen dasselbe Ergebnis liefern
3. First
■ Es können mehrere Regeln zutreffen
■ Die erste zutreffende Regeln wird verwendet
4. Rule Order
■ Es können mehrere Regeln zutreffen
■ Die Ergebnisse werden in der Reihenfolge gesammelt, wie sie in der Tabelle
aufgeführt sind
5. Collect
■ Es können mehrere Regeln zutreffen
■ Die Ergebnisse werden in willkürlicher Reihenfolge gesammelt
■ Die Ergebnisse können aggregiert werden: Sum, Min, Max, Count
7
10. envite consulting GmbH
Map Decision Result
https://docs.camunda.org/manual/latest/user-guide/process-engine/decisions/bpmn-cmmn/#predefined-mapping-of-the-decisio
n-result
10
Mapping Result DMN Output
singleEntry TypedValue Eine Zeile/Regel, die zutrifft, mit einem
Output-Parameter
singleResult Map<String, Object> Eine Zeile/Regel, die zutrifft, mit mehreren
Output-Parametern
collectEntries List<Object> Mehrere Zeilen/Regeln können zutreffen mit
je einem Output-Parameter
resultList List<Map<String, Object>> Mehrere Zeilen/Regeln, die zutreffen, mit
jeweils mehreren Output-Parametern
14. envite consulting GmbH
Vorteile von DMN-Tabellen
■ Übersichtlicher als Quellcode
■ Komplexe Entscheidungen können in DMN übersichtlicher abgebildet werden als in
BPMN
■ DMN Tabellen können auch vom Fachbereich angepasst werden
■ Entscheidungen können im Nachhinein im Cockpit/Optimize nachvollzogen werden
14
16. envite consulting GmbH
DMN via Rest
https://docs.camunda.org/manual/latest/refer
ence/rest/decision-definition/post-evaluate/
16
17. 2. Szenario
17
■ Die Behörde kann nicht alle Importeure kontrollieren
■ Es werden Unternehmen stichprobenartig kontrolliert
■ Abhängig vom errechneten Risiko, dass ein Vergehen vorliegen könnte,
○ kann die Behörde das Unternehmen vor Ort kontrollieren
○ die Einfuhrdokumente kontrollieren,
○ gar keine Kontrolle durchführen
■ Der Risiko-Score wird berechnet anhand
○ des Warenwerts
○ Des Herkkunftslandes
○
18. envite consulting GmbH
Standalone DMN-Engine
■ Die DMN-Engine kann auch eigenständig ohne die Process Engine in eine beliebige
Java-Anwendung eingebettet werden
18
<dependency>
<groupId>org.camunda.bpm.dmn</groupId>
<artifactId>camunda-engine-dmn</artifactId>
<version>${camunda.version}</version>
</dependency>
DmnEngine dmnEngine = DmnEngineConfiguration.createDefaultDmnEngineConfiguration().buildEngine();
InputStream dmnInputStream = //…
DmnDecision decision = dmnEngine.parseDecision("Decision_AuditNecessity", dmnInputStream);
Map<String, Object> inputData = new HashMap<>();
//…
DmnDecisionTableResult result = dmnEngine.evaluateDecisionTable(decision, inputData);
20. envite consulting GmbH
FEEL als Expression Language
20
Warenwert größer/gleich 0
und kleiner/gleich 1.000
Warenwert größer 1.000
und kleiner/gleich
10.000
Warenwert größer
10.000
Herkunftsland ist in der Liste
der Risiko-Länder enthalten
https://camunda.github.io/feel-scala/docs/reference/