Auswerten von Bedingungen und Ausführen von Aktionen
Das Geschäftsregel-Framework bietet eine leistungsfähige Rückschluss-Engine, die Regeln mit .NET-Objekten, XML-Dokumenten oder Datenbanktabellen verknüpfen kann.
Die Geschäftsregel-Engine verwendet zum Ausführen von Richtlinien einen dreistufigen Algorithmus. Diese drei Stufen lauten:
Übereinstimmung. In der Übereinstimmungsphase werden Fakten unter Verwendung der in den Regelbedingungen definierten Prädikaten mit Prädikaten abgeglichen, die den Faktentyp verwenden (Objektverweise, die im Arbeitsspeicher der Regel-Engine verwaltet werden). Um diesen Ablauf effizienter zu gestalten, werden Mustervergleiche für alle Regeln in der Richtlinie durchgeführt, und für die gemeinsam von Regeln verwendeten Bedingungen werden nur ein Mal Übereinstimmungen gesucht. Teilweise Bedingungsübereinstimmungen können im Arbeitsspeicher gespeichert werden, um künftige Mustervergleiche zu beschleunigen. Die Ausgabe der Mustervergleichsphase besteht aus Aktualisierungen für die Regel-Engine-Agenda.
Konfliktlösung. In der Konfliktlösungsphase werden die Regelkandidaten für die Ausführung überprüft, um den nächsten Satz Regelaktionen zu ermitteln, die basierend auf einem vorbestimmten Auflösungsschema ausgeführt werden sollen. Alle in der Übereinstimmungsstufe gefundenen Regelkandidaten werden der Regel-Engine-Agenda hinzugefügt.
Das standardmäßige Konfliktlösungsschema basiert auf den Regelprioritäten in einer Richtlinie. Die Priorität ist eine konfigurierbare Eigenschaft einer Regel im Geschäftsregelersteller. Je größer der Wert, desto höher die Priorität – daher werden, wenn mehrere Regeln ausgelöst werden, die Aktionen mit einer höheren Priorität zuerst ausgeführt.
Action (Aktion) . In der Aktionsphase werden die Aktionen in der aufgelösten Regel ausgeführt. Hinweis: Regelaktionen können neue Fakten an die Regel-Engine übergeben, wodurch der Zyklus fortgesetzt wird. Dies nennt man auch "Vorwärtsverkettung". Hierbei ist es wichtig zu beachten, dass der Algorithmus niemals Vorrang vor der aktuell ausführenden Regel hat. Alle Aktionen für die aktuell ausgelöste Regel werden ausgeführt, bevor die Übereinstimmungsstufe wiederholt wird. Die anderen Regeln in der Agenda werden jedoch erst ausgelöst, wenn die Übereinstimmungsstufe erneut beginnt. In der Übereinstimmungsphase kann es dazu kommen, dass diese Regeln aus der Agenda entfernt werden, bevor sie ausgelöst werden.
Das folgende Beispiel zeigt einen dreistufigen Algorithmus vom Typ "Übereinstimmung-Konfliktlösung-Aktion".
Regel 1: Auswerten des Einkommens
Deklarative Darstellung:
Ein Antragsteller gilt nur dann als kreditwürdig, wenn das Verhältnis von Einkommen/Kredit kleiner als 0,2 ist.
IF—THEN-Darstellung unter Verwendung von Geschäftsobjekten:
IF Application.Income / Property.Price < 0.2 THEN Assert new CreditRating( Application)
Regel 2: Bewertung der Bonität
Deklarative Darstellung:
Der Antrag sollte nur dann genehmigt werden, wenn die Kreditwürdigkeit über 725 liegt.
WENN – THEN Darstellung mithilfe von Geschäftsobjekten:
IF Application.SSN = CreditRating.SSN AND CreditRating.Value > 725 THEN SendApprovalLetter(Application)
In der folgenden Tabelle werden die Fakten zusammengefasst.
Fakt | Felder |
---|---|
Application – Ein XML-Dokument, das einen Darlehensantrag für eine Immobilie darstellt | - Einkommen = 65.000 USD - SSN = XXX-XX-XXXX |
Property – Ein XML-Dokument, das die Immobilie darstellt, die gekauft werden soll | - Preis = $225.000 |
CreditRating – Ein XML-Dokument, das die Kreditwürdigkeit des Antragstellers enthält | - Wert = 0 – 800 - SSN = XXX-XX-XXXX |
Zunächst sind der Arbeitsspeicher und die Agenda der Regel-Engine leer. Nachdem die Anwendung die Fakten "Application" und "Property" hinzugefügt hat, werden der Arbeitspeicher und die Agenda der Regel-Engine wie folgt aktualisiert.
Arbeitsspeicher | Agenda |
---|---|
– Anwendung -Eigenschaft |
Regel 1 |
Regel 1 wird der Tagesordnung hinzugefügt, da ihre Bedingung (Application.Income / Property.Price < 0.2) während der Übereinstimmungsphase auf true ausgewertet wurde. Im Arbeitsspeicher befindet sich kein CreditRating-Fakt, also wurde die Bedingung für Regel 2 nicht bewertet. Da Regel 1 die einzige Regel in der Agenda ist, wird die Regel ausgeführt und dann aus der Agenda entfernt. Die einzige für Regel 1 definierte Aktion führt dazu, dass dem Arbeitsspeicher ein neues Fakt (CreditRating-Dokument für den Antragsteller) hinzugefügt wird. Nachdem die Ausführung der Regel 1 abgeschlossen ist, kehrt der Fokus zur Übereinstimmungsphase zurück. Da der Fakt "CreditRating" das einzige neue Objekt ist, für das eine Übereinstimmung gesucht wird, lauten die Ergebnisse der Übereinstimmungsphase wie folgt:
Arbeitsspeicher | Agenda |
---|---|
– Anwendung -Eigenschaft - CreditRating |
Regel 2 |
An dieser Stelle wird Regel 2 ausgeführt, was zum Aufruf einer Funktion führt, die einen Genehmigungsbrief an den Antragsteller sendet. Nachdem Regel 2 abgeschlossen ist, kehrt die Ausführung des Vorwärtsverkettungs-Algorithmus in die Übereinstimmungsphase zurück. Da keine weiteren Fakten für die Übereinstimmung vorhanden sind und die Agenda leer ist, wird die Vorwärtsverkettung abgeschlossen, und die Richtlinie ist vollständig ausgeführt.