Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
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 objeví, horní okno ukazuje typy faktů odkazované pravidly pravidlové sady.
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 trasování testovací sady pravidel výstupu.
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