Testovací sady pravidel pomocí nástroje Microsoft Rules Composer

Platí pro: Azure Logic Apps (Standard)

Tento průvodce ukazuje, jak testovat sady pravidel pomocí nástroje Microsoft Rules Composer a obsahuje příklady výstupu pro testování pravidel.

Proč testovat sady pravidel přírůstkově?

Při vytváření sady pravidel pro integraci obchodní logiky s pracovními postupy standardní aplikace logiky otestujte sadu pravidel přírůstkově nebo alespoň před použitím pravidel v aplikaci. Tímto způsobem můžete potvrdit, že každé pravidlo funguje očekávaným způsobem, nebo můžete rychleji najít a opravit problémy, když jsou pravidla méně složitá a snadněji řešit potíže.

Pokud počkáte na testování všech pravidel najednou, zejména pokud jsou vaše pravidla dlouhá nebo složitá, může dojít k více chybám, než se čekalo, což trvá déle, než se vyřeší, a může být obtížnější ladit.

Požadavky

  • Stáhněte a nainstalujte nástroj Microsoft Rules Composer.

  • Soubor XML obsahující sadu pravidel, na které chcete pracovat, a fakta, na které chcete testovat.

    Pokud chcete přidat fakta, zadejte jejich hodnoty v souborech XML, na které odkazujete v okně Vybrat fakta , které se otevře po výběru testovací sady pravidel v následujících krocích. Možná budete chtít vytvořit generátor pro přidávání .NET faktů. Další informace najdete v tématu Vytváření tvůrců faktů a retrieverů.

Testování verze sady pravidel

  1. Otevřete nástroj Microsoft Rules Composer. V okně Průzkumníka sady pravidel vyberte verzi sady pravidel, kterou chcete otestovat. Otevře se okno s informacemi o verzi.

  2. V místní nabídce sady pravidel vyberte sadu testovacích pravidel.

    V dialogovém okně Vybrat fakta, které se objeví, horní okno ukazuje typy faktů odkazované pravidly pravidlové sady.

  3. Pokud chcete přidat instanci faktu, vyberte v části Dokumenty XML nebo třídy .NET odpovídající typ faktu a pak vyberte Přidat instanci.

    Poznámka:

    Pokud do pravidla vypíšete odvozenou třídu, ale pravidla jsou přímo zapsána proti členům základní třídy, je místo toho uplatněna instance základní třídy a podmínky jsou vyhodnoceny proti instanci základní třídy.

  4. Pokud chcete odebrat instanci faktů, vyberte odpovídající typ faktu a pak vyberte Odebrat instanci.

  5. Pokud chcete přidat tvůrce faktů, kterého jste vytvořili, vyberte v okně Fact Creators možnost Přidat.

  6. Až budete připraveni, vyberte Test.

    Okno Výstup zobrazuje trasování testovací sady pravidel výstupu.

  7. Otevřete místní nabídku okna výstupu testu a vyberte možnost pro uložení, vymazání, výběr nebo zkopírování výstupního textu, abyste mohli výsledky zkontrolovat.

    Následující tabulka popisuje příkazy okna Výstup, které můžete použít pro práci s výstupním textem:

    Úloha Klávesová zkratka pro příkaz
    Vymažte veškerý text z okna Výstup. Vymazat vše
    Zkopírujte vybraný text v okně Výstupu do schránky. Kopírování
    Vyberte veškerý text v okně Výstup. Vybrat vše
    Uložte text obsažený v okně Výstup do zadaného souboru. Uložit do souboru

Výstup trasování testovací sady pravidel

Tato část popisuje informace o sledování a aktivity zahrnuté do trasování při testování sady pravidel pomocí nástroje Microsoft Rules Composer. Výstup sledování může obsahovat následující typy příkazů:

  • Práce s fakty
  • Vyhodnocení podmínky
  • Aktualizace agendy
  • Pravidlo se aktivovalo

Aktivita faktů

Tato aktivita označuje změny faktů v pracovní paměti motoru. Následující příklad ukazuje příklad záznamu aktivity související s fakty.

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

Následující tabulka popisuje informace v této položce:

Položka Popis
Identifikátor instance pravidlového modulu Jedinečný identifikátor pro instanci RuleEngine, která poskytuje prostředí provádění pro spuštění pravidla.
Název sady pravidel Název sady pravidel.
Operace V rámci aktivity faktů můžou nastat následující typy operací:

- Assert: Do pracovní paměti se přidá fakt. Poznámka: Pokud typ kontrolního faktu neodpovídá žádnému z typů použitých v sadě pravidel, zobrazí funkce Assert chybu Assert – Fact Unrecognized.

- Aktualizace: Pravidlo aktualizuje fakt, který se pak musí znovu sestavit do modulu pro opětovné hodnocení na základě nových dat a stavu.

- Odvolání: Fakt se odebere z pracovní paměti.
Typ objektu Typ faktu pro konkrétní aktivitu: – TypedXmlDocument

Aserty jsou zobrazeny pro nadřazené i podřízené instance TypedXmlDocument.
Identifikátor instance objektu Jedinečný identifikátor instance pro referenci faktu.

Vyhodnocení podmínky

Tato aktivita označuje výsledek vyhodnocení jednotlivých predikátů. Následující příklad ukazuje ukázkovou položku vyhodnocení podmínky:

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

Následující tabulka popisuje informace v této položce:

Položka Popis
Testovací výraz Jednoduchý unární nebo binární výraz v rámci pravidla.
Levá hodnota operandu Hodnota termínu na levé straně výrazu.
Hodnota pravého operandu Hodnota termínu na pravou stranu výrazu.
Výsledek testu Výsledek vyhodnocení, který je true nebo false.

Aktualizace agendy

Tato aktivita označuje pravidla, která se přidají do agendy pravidlového procesoru pro následné provedení. Následující příklad ukazuje ukázkovou položku aktualizace agendy:

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

Následující tabulka popisuje informace v této položce:

Položka Popis
Operace Operace, která přidává nebo odebírá pravidla z programu.
Název pravidla Název pravidla, které je přidáno nebo odebráno z programu.
Kritéria řešení konfliktů Priorita pravidla, které určuje relativní pořadí, kdy se akce spouštějí a kde se nejprve provádějí akce s vyšší prioritou.

Pravidlo se aktivovalo

Tato aktivita označuje spuštění akcí pravidla. Následující příklad ukazuje položku aktivovanou pravidlem:

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

Funkce aktualizace

Tento příklad ukazuje ukázkové pravidlo InventoryCheck a pravidlo Ship v ukázkové sadě pravidel s názvem Objednávka. Při první kontrole pravidla se podmínka přidružená k pravidlu Ship vyhodnotí jako Nepravda. Když se však aktivuje pravidlo InventoryCheck, změní se pole InventoryAvailable v objednávce a příkaz Update se vydá modulu pro "objekt Objednávky", což způsobí opětovné hodnocení pravidla "Ship". Tentokrát se podmínka vyhodnotí jako True a pravidlo Ship se aktivuje.

Poznámka:

Pokud jsou vaše pravidla nesprávně napsaná, může dopředné řetězení s funkcí Update způsobit nekonečnou smyčku. Když v této události otestujete sadu pravidel v nástroji Microsoft Rules Composer, zobrazí se chybová zpráva s textem "Modul pravidel zjistil smyčku provádění".

Pravidlo Kontroly inventáře

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

Pravidlo expedice

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

Výstup

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

Příklady výstupu trasování testovací sady pravidel

Tato část obsahuje příklady, které ukazují výstup testu sady pravidel pro různé typy faktů.

Typ faktu třídy .NET

Tento příklad je ukázkové pravidlo s názvem TestRule1 v sadě pravidel s názvem LoanProcessing:

IF test.get_ID > 0
THEN <do something>

Výstup

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

Typ faktu pro TypedXmlDocument

Tento příklad ukazuje, že entita TypedXmlDocument s typem dokumentu s názvem Microsoft.Samples.BizTalk.LoansProcessor.Case je uplatněna do modulu pravidel. Na základě hodnoty XPath Selektor definované v pravidle mechanismus vytvoří a potvrdí podřízenou entitu TypedXmlDocument typu Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, na základě typu dokumentu a řetězce selektoru. Tato podřízená entita TypedXmlDocument se v podmínce vyhodnotí jako True, což způsobuje aktualizaci agendy a spuštění pravidla. Nadřazené a podřízené entity TypedXmlDocument jsou pak odvolány.

Tento příklad ukazuje ukázkové pravidlo s názvem TestRule1 v sadě pravidel s názvem LoanProcessing:

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

Výstup

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