Drools - Regeln schreiben
Wenn Sie die Standardregel sehen, die im Hello World-Projekt (Sample.drl) geschrieben ist, werden viele Schlüsselwörter verwendet, die wir jetzt erläutern werden.
Sample.drl
Package- Jede Regel beginnt mit einem Paketnamen. Das Paket fungiert als Namespace für Regeln. Regelnamen innerhalb eines Pakets müssen eindeutig sein. Pakete in Regeln ähneln Paketen in Java.
Import statement- Unabhängig davon, auf welche Fakten Sie die Regel anwenden möchten, müssen diese Fakten importiert werden. Zum Beispiel com.sample.DroolsTest.Message; im obigen Beispiel.
Rule Definition- Es besteht aus dem Regelnamen, der Bedingung und der Konsequenz. Drools Schlüsselwörter sindrule, when, then, und end. Im obigen Beispiel lauten die Regelnamen "Hello World" und "GoodBye". Daswhen Teil ist die Bedingung sowohl in den Regeln als auch in der thenTeil ist die Folge. In der Regelterminologie ist diewhen Teil wird auch als LHS (linke Seite) und als bezeichnet then Teil als RHS (rechte Seite) der Regel.
Lassen Sie uns nun die Begriffe durchgehen, die in der Java-Datei verwendet werden, mit der die Drools geladen und die Regeln ausgeführt werden.
Wissensbasis
Knowledge Base ist eine Schnittstelle, die eine Sammlung von Regeln, Prozessen und internen Typen verwaltet. Es ist in der Verpackung enthaltenorg.drools.KnowledgeBase. In Drools werden diese üblicherweise als bezeichnetknowledge definitions oder knowledge. Wissensdefinitionen werden in gruppiertknowledge packages. Wissensdefinitionen können hinzugefügt oder entfernt werden. Der Hauptzweck der Knowledge Base besteht darin, sie zu speichern und wiederzuverwenden, da ihre Erstellung teuer ist. Die Knowledge Base bietet Methoden zum Erstellen von Wissenssitzungen.
Wissenssitzung
Die Wissenssitzung wird aus der Wissensdatenbank abgerufen. Es ist die Hauptschnittstelle für die Interaktion mit der Drools Engine. Es gibt zwei Arten von Wissenssitzungen:
Zustandslose Wissenssitzung
Stateful Knowledge Session
Zustandslose Wissenssitzung
Stateless Knowledge Session ist eine zustandslose Sitzung, die den einfachsten Anwendungsfall darstellt und keine Inferenz verwendet. Eine zustandslose Sitzung kann wie eine Funktion aufgerufen werden, indem einige Daten übergeben und dann einige Ergebnisse zurückgegeben werden. Häufige Beispiele für eine zustandslose Sitzung sind:
Validation
Ist diese Person für eine Hypothek berechtigt?
Calculation
Berechnen Sie eine Hypothekenprämie.
Routing and Filtering
Filtern Sie eingehende Nachrichten wie E-Mails in Ordner.
Senden Sie eingehende Nachrichten an ein Ziel
Stateful Knowledge Session
Stateful-Sitzungen haben eine längere Lebensdauer und ermöglichen iterative Änderungen im Laufe der Zeit. Einige häufige Anwendungsfälle für zustandsbehaftete Sitzungen sind:
Monitoring
Börsenüberwachung und -analyse für den halbautomatischen Kauf.
Diagnostics
Fehlersuche, medizinische Diagnostik
Logistics
Paketverfolgung und Zustellung
Knowledge Builder
Die KnoledgeBuilder-Oberfläche ist für die Erstellung eines KnowledgePackage aus Wissensdefinitionen (Regeln, Prozesse, Typen) verantwortlich. Es ist in der Verpackung enthaltenorg.drools.builder.KnowledgeBuilder. Die Wissensdefinitionen können in verschiedenen Formaten vorliegen. Wenn beim Erstellen Probleme auftreten, meldet der KnowledgeBuilder Fehler mithilfe der beiden folgenden Methoden:hasErrors und getError.
Das folgende Diagramm erläutert den Vorgang
Im obigen Beispiel haben wir, da wir ein einfaches Beispiel für eine zustandslose Wissenssitzung nehmen, die Tatsache in die Sitzung eingefügt. Anschließend wird die Methode fireAllRules () aufgerufen und Sie sehen die Ausgabe.
Im Falle einer Stateful-Knowledge-Sitzung muss das Stateful-Knowledge-Session-Objekt nach dem Auslösen der Regeln die Methode aufrufen dispose() um die Sitzung freizugeben und Speicherlecks zu vermeiden.