Testovací sady pravidel pomocí nástroje Microsoft Rules Composer (Preview)
Platí pro: Azure Logic Apps (Standard)
Důležité
Tato funkce je ve verzi Preview a podléhá dodatečným podmínkám použití pro microsoft Azure Preview.
Při vytváření sady pravidel, abyste mohli integrovat obchodní logiku se standardními pracovními postupy, otestujte sadu pravidel přírůstkově nebo před použitím pravidel ve vaší aplikaci. Tímto způsobem můžete zkontrolovat, že pravidla fungují tak, jak očekáváte, nebo můžete najít a opravit problémy dříve, když jsou pravidla méně složitá a snadněji řešit potíže.
Pokud počkáte na testování pravidel najednou nebo až skončíte, a vaše pravidla jsou dlouhá nebo složitá, může dojít k více chybám nebo problémům, než jste si mysleli, což může trvat déle, než se vyřeší nebo je obtížné vyřešit.
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. Můžete chtít vytvořit tvůrce faktů pro přidání faktů .NET. Další informace najdete v tématu Vytváření tvůrců faktů a retrieverů.
Testování verze sady pravidel
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.
V místní nabídce sady pravidel vyberte sadu testovacích pravidel.
V dialogovém okně Vybrat fakta , které se zobrazí, zobrazí horní okno typy faktů odkazované pravidly sady pravidel.
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.
Pokud chcete odebrat instanci faktů, vyberte odpovídající typ faktu a pak vyberte Odebrat instanci.
Pokud chcete přidat tvůrce faktů, kterého jste vytvořili, vyberte v okně Fact Creators možnost Přidat.
Až budete připraveni, vyberte Test.
Okno Výstup zobrazuje výstup trasování testovací sady pravidel.
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 Příkaz Zástupce Vymažte veškerý text z okna Výstup. Vymazat vše Zkopírujte vybraný text v okně Výstup 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ů:
- Aktivita faktů
- Vyhodnocení podmínky
- Aktualizace agendy
- Pravidlo se aktivovalo
Aktivita faktů
Tato aktivita označuje změny faktů v pracovní paměti modulu. Následující příklad ukazuje ukázkovou položku aktivity faktů:
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 stroje pravidel | Jedinečný identifikátor instance RuleEngine , který poskytuje spouštěcí prostředí pro aktivaci pravidla. |
Název sady pravidel | Název sady pravidel. |
Operace | V aktivitě 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 Kontrolní výrazy se zobrazují pro nadřazené i podřízené instance TypedXmlDocument . |
Identifikátor instance objektu | Jedinečné ID instance pro odkaz na fakta. |
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 levou stranu 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 programu modulu pravidel pro následné spuštění. 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 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 Update
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 řetězení s funkcí Update způsobit nekonečné opakování. 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 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 Selector definované v pravidle modul vytvoří a uplatní podřízenou entitu TypedXmlDocument s typem s názvem 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 aktivaci pravidla. Nadřazené a podřízené entity TypedXmlDocument jsou pak odvolána.
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