Freigeben über


Regelauswertung in RuleSets

Die Regelntechnologie wird in Windows Workflow Foundation hauptsächlich auf zwei Arten bereitgestellt:

  • Als Bedingungen für Aktivitäten.

  • Als Vorwärtsverkettungs-Regelsatz in einer PolicyActivity-Aktivität.

Die Vorwärtsverkettung wird weiter unten in diesem Abschnitt beschrieben. Kurz gesagt, bezeichnet sie die Fähigkeit, für Aktionen einer Regel zu veranlassen, dass andere abhängige Regeln erneut ausgewertet werden.

Der Hauptgrund für einen Entwickler für die Verwendung einer Regelbedingung anstelle einer Codebedingung ist, dass Regelbedingungen Teil des Modells werden und während der Ausführung von Workflowinstanzen bei Laufzeit dynamisch aktualisiert werden können. Ein zweiter Vorteil der Regelbedingungen ist, dass als Teil des Modells anspruchsvollere Tools zusätzlich zum Modell erstellt werden können, um weitere Erstellungsmöglichkeiten, eine Abhängigkeitsverwaltung, eine bedingungsübergreifende Analyse usw. bereitzustellen.

Von der PolicyActivity-Aktivität werden die Definition und die Ausführung eines RuleSet gekapselt. Bei einem RuleSet handelt es sich um eine Auflistung von Regeln mit einem Satz Ausführungssemantik. Bei Regeln handelt es sich wiederum um If-Then-Else-Ausdrücke, die auf Workflowmembern verwendet werden.

Regelauswertung

Jede Regel in einem RuleSet verfügt über einen Prioritätswert mit einem Standard von "0". Die Regeln in einem RuleSet können als eine nach den Prioritätswerten sortierte Auflistung betrachtet werden. Die Regeln werden von der Windows Workflow Foundation-Regelauswertung individuell ausgewertet. Die Aktionen der Regel werden basierend auf den Ergebnissen der Bedingungsauswertung der Regel ausgeführt.

Der Auswertungsmechanismus kann konzeptionell folgendermaßen beschrieben werden:

  1. Beginnen Sie mit der Liste aktiver Regeln.

  2. Suchen Sie die Regel mit der höchsten Priorität.

  3. Werten Sie die Regel aus, und führen Sie ihre Then/Else-Aktionen entsprechend aus.

  4. Falls durch die Aktionen einer Regel ein Feld oder eine Eigenschaft aktualisiert wird, das/die von der Bedingung von mindestens einer vorherigen Regel in der Liste (mit einer höheren Priorität) verwendet wird, müssen diese vorherigen Regeln neu ausgewertet werden.

    Hinweis

    Nur die Regeln mit einer spezifischen Abhängigkeit werden neu bewertet.

  5. Setzen Sie den Prozess fort, bis alle Regeln im RuleSet ausgewertet wurden (oder der Prozess wird angehalten).

Nehmen Sie für das folgende konzeptionelle Beispiel folgenden Regelsatz an, in dem "A", "B" usw. für die Daten im Workflow stehen.

Rule 4 (Priority = 4)
IF A = 15
THEN B = 5

Rule 3 (Priority = 3)
IF C = 5
THEN B = 10

Rule 2 (Priority 2)
IF D = 2
THEN A = 15

Rule 1 (Priority 1)
IF B = 5 
THEN E = 7

Nehmen Sie an, dass Sie über folgende Eingabedaten verfügen:

  • A = 0

  • B = 0

  • C = 5

  • D = 2

  • E = 0

Die Auswertung wird folgendermaßen fortgesetzt:

  1. Regel 4 wird ausgewertet; die Auswertung ergibt false, und da sie über keine Else-Aktionen verfügt, werden keine Aktionen ausgeführt.

  2. Die Auswertung von Regel 3 ergibt true und ihre Aktion wird ausgeführt, wodurch B = 10 festgelegt wird. Regel 4 ist nicht vom Wert von B abhängig; aus diesem Grund wird die Auswertung mit Regel 2 fortgesetzt.

  3. Die Auswertung von Regel 2 ergibt true und die Aktion wird ausgeführt. Dadurch wird A = 15 festgelegt.

  4. Die Regeln 3 und 2 werden nicht neu ausgewertet, da ihre Bedingungen sich nicht auf den Wert A beziehen. Da der Wert A jedoch in den Bedingungen von Regel 4 verwendet wird, wird diese neu ausgewertet. Die Auswertung ergibt true und die Aktion wird ausgeführt, wodurch B = 5 festgelegt wird. Die Regeln 4, 3 und 2 sind nicht vom Wert von B abhängig, sodass die Auswertung mit Regel 1 fortgesetzt wird.

  5. Die Auswertung von Regel 1 ergibt true und die Aktion wird ausgeführt. Dadurch wird E = 7 festgelegt.

Das resultierende Dataset lautet nun folgendermaßen:

  • A = 15

  • B = 5

  • C = 5

  • D = 2

  • E = 7

Siehe auch

Referenz

RuleSet
PolicyActivity
RuleSet

Konzepte

Workflowänderungen an Bedingungen
Verwenden von RuleSets in Workflows

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.