Teilen über


Testen von Regelsätzen mit Microsoft Rules Composer (Vorschau)

Gilt für: Azure Logic Apps (Standard)

Wichtig

Diese Funktion befindet sich in der Vorschauphase und unterliegt den Zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauversionen.

Während Sie Ihren Regelsatz erstellen, um Geschäftslogik in Ihre Standardworkflows zu integrieren, testen Sie ihn inkrementell oder vor der Verwendung der Regeln in Ihrer Anwendung. Auf diese Weise können Sie überprüfen, ob die Regeln wie erwartet funktionieren. Außerdem können Sie Probleme schneller finden und beheben, wenn Ihre Regeln weniger komplex und einfacher zu behandeln sind.

Wenn Sie warten und am Ende alle Regeln gleichzeitig testen, sind Ihre Regeln möglicherweise bereits sehr umfangreich oder komplex, und Sie erhalten eventuell mehr Fehler oder Probleme, als Sie dachten. Dies kann die Zeit für Problembehandlung oder Nachweise dann deutlich verlängern.

Voraussetzungen

  • Laden Sie Microsoft Rules Composer herunter, und installieren Sie das Programm.

  • Die XML-Datei mit dem Regelsatz, an dem Sie arbeiten möchten, und die Fakten, die Sie testen möchten.

    Um Fakten hinzuzufügen, geben Sie deren Werte in den XML-Dateien an, auf die Sie im Fenster Fakten auswählen verweisen, das geöffnet wird, nachdem Sie in den folgenden Schritten Regelsatz testen auswählen. Möglicherweise sollten Sie auch einen Faktenersteller erstellen, um .NET-Fakten hinzuzufügen. Weitere Informationen finden Sie unter Erstellen von Faktenerstellern und -abrufern.

Testen einer Regelsatzversion

  1. Öffnen Sie Microsoft Rules Composer. Wählen Sie im Fenster Regelsatz-Explorer die Regelsatzversion aus, die Sie testen möchten. Damit wird das Versionsinformationsfenster geöffnet.

  2. Wählen Sie im Kontextmenü der Regelsatzversion die Option Regelsatz testen aus.

    Im daraufhin angezeigten Feld Fakten auswählen werden im oberen Fenster die Faktentypen angezeigt, auf die durch die Regeln im Regelsatz verwiesen wird.

  3. Wenn Sie eine Fakteninstanz hinzufügen möchten, wählen Sie unter XML-Dokumente oder .NET-Klassen einen entsprechenden Faktentyp und dann Instanz hinzufügen aus.

    Hinweis

    Wenn Sie in einer Regel eine abgeleitete Klasse deklarieren, aber die Regeln direkt für die Basisklassenmitglieder geschrieben werden, wird stattdessen eine Basisklasseninstanz deklariert, und die Bedingungen werden für die Basisklasseninstanz ausgewertet.

  4. Um eine Fakteninstanz zu entfernen, wählen Sie den entsprechenden Faktentyp und dann Instanz entfernen aus.

  5. Um einen von Ihnen erstellten Faktenersteller hinzuzufügen, wählen Sie im Fenster Faktenersteller die Option Hinzufügen aus.

  6. Wählen Sie abschließend Testen aus.

    Im Ausgabefenster wird die Ausgabe der Ablaufverfolgung für den Regelsatztest angezeigt.

  7. Öffnen Sie das Kontextmenü für das Testausgabefenster, und wählen Sie eine Option zum Speichern, Löschen, Auswählen oder Kopieren des Ausgabetexts aus, damit Sie die Ergebnisse überprüfen können.

    In der folgenden Tabelle werden die Befehle im Ausgabefenster beschrieben, die Sie für die Arbeit mit dem Ausgabetext verwenden können:

    Aufgabe Kurzbefehl
    Löscht den gesamten Text im Ausgabefenster Auswahl aufheben
    Kopiert den im Ausgabefenster ausgewählten Text in die Zwischenablage Kopieren
    Markiert den gesamten Text im Ausgabefenster Alles markieren
    Speichert den Text im Ausgabefenster in einer angegebenen Datei In Datei speichern

Ausgabe der Ablaufverfolgung des Regelsatztests

In diesem Abschnitt werden die Nachverfolgungsinformationen und -aktivitäten beschrieben, die in der Ablaufverfolgung enthalten sind, wenn Sie einen Regelsatz mit Microsoft Rules Composer testen. Die Nachverfolgungsausgabe kann die folgenden Anweisungstypen enthalten:

  • Faktenaktivität
  • Bedingungsauswertung
  • Agendaaktualisierung
  • Regel ausgelöst

Faktenaktivität

Diese Aktivität gibt Änderungen an den Fakten im Arbeitsspeicher der Engine an. Das folgende Beispiel zeigt einen Beispieleintrag für eine Faktenaktivität:

FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872

In der folgenden Tabelle werden die Informationen in diesem Eintrag beschrieben:

Artikel Beschreibung
Regel-Engine-Instanz-ID Eindeutiger Bezeichner für die RuleEngine-Instanz, von der die Ausführungsumgebung für die ausgelöste Regel zur Verfügung gestellt wird
Regelsatzname Der Name des Regelsatzes
Vorgang Die folgenden Vorgangstypen können in einer Faktenaktivität vorkommen:

- Assert: Dem Arbeitsspeicher wurde ein Fakt hinzugefügt. Hinweis: Wenn der Typ für einen angegebenen Fakt keinem der Typen entspricht, die im Regelsatz verwendet werden, zeigt die Assert-Funktion den Fehler „Assert – Fact Unrecognized“ an.

- Update: Eine Regel aktualisiert einen Fakt, der dann basierend auf den neuen Daten und dem Zustand für die erneute Auswertung erneut in die Engine aufgenommen werden muss.

- Retract: Ein Fakt wurde aus dem Arbeitsspeicher entfernt.
Objekttyp Der Faktentyp für eine bestimmte Aktivität: - TypedXmlDocument

Assertionen treten sowohl für übergeordnete als auch untergeordnete TypedXmlDocument-Instanzen auf.
Objektinstanzbezeichner Die eindeutige Instanz-ID für den Faktenverweis.

Bedingungsauswertung

Diese Aktivität gibt das Ergebnis der Auswertung einzelner Prädikate an. Das folgende Beispiel zeigt einen Beispieleintrag für die Bedingungsauswertung:

CONDITION EVALUATION TEST (MATCH) 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:Root.EmploymentType/TimeInMonths >= 18
Left Operand Value: 31
Right Operand Value: 18
Test Result: True

In der folgenden Tabelle werden die Informationen in diesem Eintrag beschrieben:

Artikel Beschreibung
Testausdruck Ein einfacher unärer oder binärer Ausdruck innerhalb einer Regel.
Wert des linken Operanden Der Wert des Terms auf der linken Seite eines Ausdrucks.
Wert des rechten Operanden Der Wert des Terms auf der rechten Seite eines Ausdrucks.
Testergebnis Das Ergebnis der Auswertung, das entweder True oder False lautet.

Agendaaktualisierung

Diese Aktivität gibt Regeln an, die der Regel-Engine-Agenda zur nachfolgenden Ausführung hinzugefügt werden. Das folgende Beispiel zeigt einen Beispieleintrag für die Agendaaktualisierung:

AGENDA UPDATE 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: Employment Status Rule
Conflict Resolution Criteria: 0

In der folgenden Tabelle werden die Informationen in diesem Eintrag beschrieben:

Artikel Beschreibung
Vorgang Der Vorgang zum Hinzufügen oder Entfernen von Regeln in der Agenda.
Regelname Der Name für die Regel, die der Agenda hinzugefügt oder daraus entfernt wird.
Konfliktlösungskriterien Die Priorität einer Regel, die die relative Reihenfolge bestimmt, in der Aktionen ausgeführt werden, wobei Aktionen mit höherer Priorität zuerst ausgeführt werden.

Regel ausgelöst

Diese Aktivität weist auf die Ausführung einer Regelaktion hin. Das folgende Beispiel zeigt einen Eintrag einer ausgelösten Regel:

RULE FIRED 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Rule Name: Residency Status Rule
Conflict Resolution Criteria: 10

Funktion „Update“

Dieses Beispiel zeigt die Beispielregel „InventoryCheck“ und die Regel „Ship“ in einem Beispielregelsatz mit dem Namen „Order“. Bei der ersten Überprüfung der Regel wird die Bedingung, die der Regel „Ship“ zugeordnet ist, als False ausgewertet. Wenn die Regel „InventoryCheck“ jedoch ausgelöst wird, ändert sich das Feld InventoryAvailable in Order, und in der Engine wird ein Update-Befehl für das Order-Objekt ausgeführt, der eine erneute Auswertung der Regel „Ship“ verursacht. Dieses Mal wird die Bedingung als True ausgewertet, und die Regel „Ship“ wird ausgelöst.

Hinweis

Wenn Ihre Regeln fehlerhaft geschrieben wurden, kann eine Vorwärtsverkettung mit der Update-Funktion zu einer Endlosschleife führen. Wenn Sie den Regelsatz in Microsoft Rules Composer testen, erhalten Sie eine Fehlermeldung mit dem Text Die Regel-Engine hat eine Ausführungsschleife erkannt angezeigt.

Regel „InventoryCheck“

IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)

Regel „Ship“

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

Output

RULE ENGINE TRACE for RULESET: Order 3/17/2023 10:31:17 AM
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: null
Right Operand Value: True
Test Result: False
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Inventory
Object Instance Identifier: 446
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Inventory.AllocateInventory == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Update
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: Ship
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: Ship
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Order
Object Instance Identifier: 448
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Inventory
Object Instance Identifier: 446

Beispiele für Ausgaben der Ablaufverfolgung von Regelsatztests

Dieser Abschnitt enthält Beispiele für die Ausgabe von Regelsatztests für verschiedene Typen von Fakten.

Faktentyp: .NET-Klasse

In diesem Beispiel gibt es eine Beispielregel namens „TestRule1“ in einem Regelsatz mit dem Namen „LoanProcessing“:

IF test.get_ID > 0
THEN <do something>

Output

RULE ENGINE TRACE for RULESET: LoanProcessing 3/16/2023 9:50:28 AM
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872
CONDITION EVALUATION TEST (MATCH) 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Test Expression: MyTest.test.get_ID > 0
Left Operand Value: 100
Right Operand Value: 0
Test Result: True
AGENDA UPDATE 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: MyTest.test
Object Instance Identifier: 872

Faktentyp: TypedXmlDocument

Dieses Beispiel zeigt die Assertion einer TypedXmlDocument-Entität mit dem Dokumenttyp Microsoft.Samples.BizTalk.LoansProcessor.Case in der Regel-Engine. Gemäß dem in der Regel definierten Werts für den XPath-Selektor erstellt und übergibt die Engine dann eine untergeordnete TypedXmlDocument-Entität vom Typ Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, die auf dem Dokumenttyp und der Selektorzeichenfolge basiert. Die untergeordnete TypedXmlDocument-Entität wurde in der Bedingung als True ausgewertet, wodurch eine Agenda aktualisiert und eine Regel ausgelöst wurde. Die über- und untergeordneten TypedXmlDocument-Entitäten werden dann zurückgezogen.

In diesem Beispiel wird die Beispielregel „TestRule1“ in einem Regelsatz mit dem Namen „LoanProcessing“ gezeigt:

IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>

Output

RULE ENGINE TRACE for RULESET: LoanProcessing 3/17/2023 9:23:05 AM
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853
CONDITION EVALUATION TEST (MATCH) 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
Left Operand Value: 6
Right Operand Value: 4
Test Result: True
AGENDA UPDATE 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853