Dela via


Testa regeluppsättningar med Microsoft Rules Composer

Gäller för: Azure Logic Apps (Standard)

Den här guiden visar hur du testar regeluppsättningar med hjälp av Microsoft Rules Composer och innehåller utdataexempel för regeltestning.

Varför testa regeluppsättningar stegvis?

När du skapar en regeluppsättning för att integrera affärslogik med dina standardarbetsflöden för logikappar testar du regeluppsättningen stegvis eller åtminstone innan du använder reglerna i ditt program. På så sätt kan du bekräfta att varje regel fungerar som du förväntar dig, eller hitta och åtgärda problem tidigare när dina regler är mindre komplexa och enklare att felsöka.

Om du väntar med att testa alla regler samtidigt, särskilt när dina regler är långa eller komplexa, kan du få fler fel än förväntat, vilket tar längre tid att lösa och visar sig vara svårare att felsöka.

Förutsättningar

  • Ladda ned och installera Microsoft Rules Composer.

  • XML-filen som innehåller den regeluppsättning som du vill arbeta med och de fakta som du vill testa.

    Om du vill lägga till fakta anger du deras värden i DE XML-filer som du refererar till i fönstret Välj fakta som öppnas när du har valt Testregler i följande steg. Du kanske vill skapa en faktaskapare för att lägga till .NET-fakta. För mer information, se Bygg faktaskapare och hämtningsverktyg.

Testa en regeluppsättningsversion

  1. Öppna Microsoft Rules Composer. I fönstret RuleSet Explorer väljer du den regeluppsättningsversion som du vill testa, vilket öppnar fönstret versionsinformation.

  2. I regeluppsättningsversionens snabbmeny väljer du Testa regeluppsättning.

    I rutan Välj fakta som visas visar det övre fönstret de faktatyper som refereras till av regeluppsättningsreglerna.

  3. Om du vill lägga till en faktainstans under XML-dokument eller .NET-klasser väljer du en motsvarande faktatyp och väljer sedan Lägg till instans.

    Kommentar

    Om du hävdar en härledd klass i en regel, men reglerna skrivs direkt mot basklassmedlemmarna, hävdas en basklassinstans i stället och villkoren utvärderas mot basklassinstansen.

  4. Om du vill ta bort en faktainstans väljer du motsvarande faktatyp och väljer sedan Ta bort instans.

  5. Om du vill lägga till en faktaskapare som du har skapat väljer du Lägg till i fönstret Faktaskapare.

  6. När du är klar väljer du Test.

    Utdatafönstret visar testspårningens utdata för regeluppsättningen.

  7. Öppna snabbmenyn för testutdatafönstret och välj ett alternativ för att spara, rensa, markera eller kopiera utdatatexten så att du kan granska resultatet.

    I följande tabell beskrivs de utdatafönsterkommandon som du kan använda för att arbeta med utdatatexten:

    Uppgift Genvägskommando
    Rensa all text från utdatafönstret. Rensa allt
    Kopiera den markerade texten i utdatafönstret till Urklipp. Kopiera
    Markera all text i utdatafönstret. Välj alla
    Spara texten i utdatafönstret till en angiven fil. Spara i fil

Utdata för regeluppsättningstestspårning

I det här avsnittet beskrivs spårningsinformation och aktiviteter som ingår i spårningen när du testar en regeluppsättning med hjälp av Microsoft Rules Composer. Spårningsutdata kan innehålla följande typer av instruktioner:

  • Faktaaktivitet
  • Villkorsutvärdering
  • Uppdatering av agenda
  • Regel aktiverades

Faktaaktivitet

Den här aktiviteten anger ändringar i fakta i motorns arbetsminne. I följande exempel visas ett exempel på en faktaaktivitetspost:

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

I följande tabell beskrivs informationen i den här posten:

Objekt beskrivning
Instansidentifierare för regelmotor En unik identifierare för RuleEngine-instansen som tillhandahåller körmiljön för regelutförandet.
Namn på regeluppsättning Namnet på regeluppsättningen.
Åtgärd Följande åtgärdstyper kan inträffa i en faktaaktivitet:

- Assert: Ett faktum läggs till i arbetsminnet. Obs! Om typen för ett påstått faktum inte matchar någon av de typer som används i regeluppsättningen ger funktionen Assert felet "Assert – Fact Unrecognized".

- Uppdatering: En regel uppdaterar ett faktum som sedan måste bekräftas i motorn för omvärdering, baserat på nya data och tillstånd.

- Återkalla: Ett faktum avlägsnas från arbetsminnet.
Objekttyp Faktatypen för en viss aktivitet: – TypedXmlDocument

Utsagor visas för både överordnade och underordnade TypedXmlDocument-instanser.
Objektinstansidentifierare Det unika instans-ID:t för faktareferensen.

Villkorsutvärdering

Den här aktiviteten anger resultatet från utvärdering av enskilda predikat. I följande exempel visas ett exempel på en post för utvärdering av villkor:

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

I följande tabell beskrivs informationen i den här posten:

Objekt beskrivning
Testuttryck Ett enkelt unärt eller binärt uttryck i en regel.
Vänster operandvärde Värdet för termen på vänstersidan av ett uttryck.
Höger operandvärde Värdet för termen till höger i ett uttryck.
Testresultat Resultatet från utvärderingen, som antingen är Sant eller Falskt.

Uppdatering av agenda

Den här aktiviteten anger de regler som läggs till i regelmotorns agenda för senare utförande. I följande exempel visas ett exempel på en uppdateringspost för agendan:

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

I följande tabell beskrivs informationen i den här posten:

Objekt beskrivning
Åtgärd Åtgärden som lägger till eller tar bort regler från dagordningen.
Regelnamn Namnet på regeln som läggs till eller tas bort från dagordningen.
Konfliktlösningsvillkor Prioriteten för en regel, som avgör den relativa ordningen för när åtgärder körs och var åtgärder med högre prioritet körs först.

Regel aktiverades

Den här aktiviteten anger utförandet av en regels åtgärd. I följande exempel visas en regel som utlösts:

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

Uppdateringsfunktion

Det här exemplet visar ett exempel på en "InventoryCheck"-regel och en "Ship"-regel i en exempelregeluppsättning med namnet "Order". När regeln först kontrolleras utvärderas villkoret som är associerat med "Ship"-regeln till False. Men när "InventoryCheck"-regeln utlöses ändras fältet InventoryAvailable i ordern och kommandot Uppdatera utfärdas till motorn för "Order-objektet", vilket orsakar omvärdering för "Ship"-regeln. Den här gången utvärderas villkoret till True och regeln "Ship" utlöses.

Kommentar

Om dina regler är felaktiga kan forward chaining med funktionen Uppdatera orsaka en oändlig loop. I det här fallet får du ett felmeddelande när du testar regeluppsättningen i Microsoft Rules Composer med texten "Regelmotorn identifierade en körningsloop".

InventoryCheck-regel

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

Skeppsregel

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

Resultat

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

Exempel på loggutdata för regelverkstest

Det här avsnittet innehåller exempel som visar regeluppsättningens testutdata för olika typer av fakta.

Faktatyp för .NET-klass

Det här exemplet är en exempelregel med namnet "TestRule1" i en regeluppsättning med namnet "LoanProcessing":

IF test.get_ID > 0
THEN <do something>

Resultat

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

TypedXmlDocument faktatyp

Det här exemplet visar att en TypedXmlDocument-entitet med dokumenttypen Microsoft.Samples.BizTalk.LoansProcessor.Case bekräftas i regelmotorn. Baserat på värdet av XPath Selector som definierats i regeln, skapar och verifierar motorn en underordnad entitet av typen TypedXmlDocument med typen Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, baserat på dokumenttypen och väljaresträngen. Den här underordnade Entiteten TypedXmlDocument utvärderas till True i villkoret, vilket orsakar en uppdatering av agendan och regelavfyrning. De föräldra- och barn-TypedXmlDocument-entiteterna tillbakadras sedan.

Det här exemplet visar exempelregeln med namnet "TestRule1" i en regeluppsättning med namnet "LoanProcessing":

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

Resultat

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