Es handelt sich um eine Modellierungsnotation für die Entscheidungsfindung, die von OMG (Object Managemnt Group) festgelegt wurde. In den letzten Jahren hat es als Methode zur Entscheidungsautomatisierung im Wissensteil von RPA Aufmerksamkeit erregt.
https://www.omg.org/spec/DMN/About-DMN/
Das größte Merkmal von DMN ist, dass Sie das Entscheidungsmodell so ausführen können, dass es für den Menschen im Code so wie er ist leicht zu verstehen ist. Sie können den Betrieb von DMN mit dem DMN-Simulator von Camunda (https://camunda.com/dmn/simulator/) testen. In dieser Stichprobe wird das optimale Gericht (Gericht) basierend auf der Jahreszeit und der Anzahl der Gäste bestimmt, und das optimale Getränk (Getränke) wird basierend auf dem Gericht und den Gästen mit Kindern bestimmt. Machen. "Optimal" bedeutet hier basierend auf einer vorgegebenen Logik (Wissen von Unternehmen und Einzelpersonen). DMN gibt diese Logik in einer Tabelle an, die als Entscheidungstabelle bezeichnet wird. Weitere Informationen finden Sie unter hier.
Setzen Sie die Entscheidungstabelle auf Getränke, Gäste mit Kindern auf wahr, Jahreszeit auf Herbst und Wie viele Gäste auf 2. Zwei Getränke, Aecht Schlenkerla Rauchbier und Apfelsaft, wurden wie folgt ausgegeben. Auf dem Bildschirm können Sie sehen, dass Spareribs als Gericht ausgewählt wurde, das die eingegebenen Bedingungen erfüllt. Das deutsche Bier Aecht Schlenkerla Rauchbier wurde als Getränk zu Spareribs ausgewählt. Apfelsaft ist für Kinder, nicht wahr? Dies ist das Ergebnis der Auswahl des am besten geeigneten Getränks aus dem "Wissen", das als Entscheidungstabelle bezeichnet wird, basierend auf der eingegebenen Saison und der Anzahl der Gäste.
Hinter den Kulissen dieses Simulators befindet sich die Camunda DMN Engine, auf der das DMN ausgeführt wird. Führen Sie dieses Mal diese Camunda DMN Engine lokal aus, um den DMN auszuführen.
Dieses Mal verwenden wir die Beispiel-DMN-Datei von Camunda als DMN zur Überprüfung. Laden Sie die DMN-Beispieldatei von "DMN-Tabelle herunterladen" auf der DMN-Simulatorseite herunter. Zum Anzeigen und Bearbeiten von DMN-Dateien ist ein DMN-Designtool erforderlich. Persönlich empfehle ich Camunda Modeler, das eigenständig und einfach zu bedienen ist. Übrigens, wenn Sie nur DMN ausführen möchten, benötigen Sie keine Designtools.
Die Camunda DMN Engine wird auf Maven Central veröffentlicht. Fügen Sie dem POM die folgende Abhängigkeit hinzu.
<dependency>
<groupId>org.camunda.bpm.dmn</groupId>
<artifactId>camunda-engine-dmn</artifactId>
</dependency>
Unten finden Sie einen Java-Beispielcode, der DMN ausführt.
//Einstellungen für DMN-Dateipfad und Entscheidungs-ID
String dmnFilePath = "./simulation.dmn";
String decisionId = "beverages";
//Eingabedateneinstellungen
Map<String, Object> input = new HashMap<String, Object>();
input.put("season", "Fall"); //Herbst
input.put("guestCount", 2); //2 Gäste
input.put("guestsWithChildren",true); //Mit Kindern
//DMN-Motorengenerierung
DmnEngine dmnEngine = DmnEngineConfiguration.createDefaultDmnEngineConfiguration().buildEngine();
//Entscheidungsgenerierung
DmnDecision decision = dmnEngine.parseDecision(decisionId,new FileInputStream(dmnFilePath));
//Führen Sie DMN aus
DmnDecisionResult result = dmnEngine.evaluateDecision(decision,input);
//Ausführungsergebnis abrufen
for(Map<String,Object> entry : result.getResultList()) {
System.out.println(entry.get("beverages"));
}
Hier wird die Entscheidungs-ID als ID der Entscheidungstabelle angegeben. Dies ist der Wert, der an der folgenden Stelle in der von Camunda Modeler angezeigten Entscheidungstabelle festgelegt wurde.
Die Eingabe erhält den gleichen Wert wie im Beispiel für die frühere Ausführung des DMN-Simulators. Wenn ich den obigen Code ausführe, erhalte ich das gleiche Ergebnis wie beim DMN-Simulator wie unten.
Aecht Schlenkerla Rauchbier
Apple Juice
Da die Ausgabe der Entscheidungstabelle "Getränke" nur Getränke ist, können Sie an dieser Entscheidungstabelle nur Getränke erhalten. Aber trotzdem möchte ich sowohl das ausgewählte Essen als auch das Getränk bekommen. Bearbeiten Sie also die Entscheidungstabelle, um die Ausgabe zu erhöhen. Im folgenden Beispiel wird Camunda Modeler zum Bearbeiten der Entscheidungstabelle verwendet.
Fügen Sie der Ausgabe von Getränken eine Spalte hinzu, wie unten gezeigt. Dann wird der Wert von Dish, der eine der Eingaben dieser Entscheidungstabelle ist, als Ausgabe verwendet. Das "gewünschte Gericht" in dieser Ausgabespalte bedeutet einen Verweis auf den Ausdruck (Variablenname) des Gerichts.
Das Eingabeelement der Entscheidungstabelle hat Label, eine Anzeigebezeichnung, Expression, die den Variablennamen oder den Ausdruck des Werts festlegt, und Type, das den Datentyp des Werts angibt. In Camunda Modeler wird Ausdruck nur angezeigt, wenn Sie auf die Kopfzeile Eingabe klicken. In der Beispiel-DMN ist die Spalte Ausdruck der Schüssel erwünscht. Verwenden Sie diesen Wert, wenn Sie auf andere Spalten verweisen.
Schreiben Sie als Nächstes "Get Execution Result" in den obigen Java-Code, damit sowohl Essen als auch Trinken wie folgt angezeigt werden können.
//Ausführungsergebnis abrufen
for(Map<String,Object> entry : result.getResultList()) {
System.out.println(entry.get("desiredDish") + " with " + entry.get("beverages"));
}
Das Ausführungsergebnis ist unten dargestellt. Sie können jetzt sowohl Essen als auch Trinken bekommen.
Spareribs with Aecht Schlenkerla Rauchbier
Spareribs with Apple Juice
Recommended Posts