Delen via


Regelsets testen met behulp van Microsoft Rules Composer (preview)

Van toepassing op: Azure Logic Apps (Standard)

Belangrijk

Deze mogelijkheid is in preview en is onderworpen aan de aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.

Wanneer u uw regelset bouwt, zodat u bedrijfslogica kunt integreren met uw standaardwerkstromen, test u uw regelset stapsgewijs of voordat u de regels in uw toepassing gebruikt. Op die manier kunt u controleren of de regels op de manier werken die u onderweg verwacht, of u kunt problemen sneller vinden en oplossen wanneer uw regels minder complex en eenvoudiger zijn om problemen op te lossen.

Als u wacht om uw regels allemaal tegelijk te testen of wanneer u klaar bent en uw regels lang of complex zijn, krijgt u mogelijk meer fouten of problemen dan u dacht, wat langer kan duren om problemen op te lossen of moeilijk op te lossen.

Vereisten

  • Download en installeer de Microsoft Rules Composer.

  • Het XML-bestand met de regelset waaraan u wilt werken en de feiten waaraan u wilt testen.

    Als u feiten wilt toevoegen, geeft u de waarden op in de XML-bestanden waarnaar u verwijst in het venster Feiten selecteren die wordt geopend nadat u Testregelset hebt geselecteerd in de volgende stappen. Misschien wilt u een maker van feiten maken om .NET-feiten toe te voegen. Zie Makers en retrievers bouwen voor meer informatie.

Een regelsetversie testen

  1. Open de Microsoft Rules Composer. Selecteer in het venster RuleSet Explorer de regelsetversie die u wilt testen, waardoor het venster met versiegegevens wordt geopend.

  2. Selecteer in het snelmenu van de regelsetversie testregelset.

    In het vak Feiten selecteren dat wordt weergegeven, worden in het bovenste venster de feitentypen weergegeven waarnaar wordt verwezen door de regelsetregels.

  3. Als u een feitenexemplaren wilt toevoegen, selecteert u onder XML-documenten of .NET-klassen een bijbehorend feitentype en selecteert u Vervolgens Exemplaar toevoegen.

    Notitie

    Als u een afgeleide klasse in een regel bevestigt, maar de regels rechtstreeks worden geschreven op basis van de leden van de basisklasse, wordt in plaats daarvan een basisklasse-exemplaar asserteerd en worden de voorwaarden geëvalueerd op basis van het basisklasse-exemplaar.

  4. Als u een feitenexemplaren wilt verwijderen, selecteert u het bijbehorende feitentype en selecteert u Vervolgens Exemplaar verwijderen.

  5. Als u een maker van een feit wilt toevoegen die u hebt gemaakt, selecteert u Toevoegen in het venster Feitenmakers.

  6. Wanneer u klaar bent, selecteert u Testen.

    In het uitvoervenster ziet u de uitvoer van de testtraceringsregelset.

  7. Open het snelmenu voor het testuitvoervenster en selecteer een optie om de uitvoertekst op te slaan, te wissen, te selecteren of te kopiëren, zodat u de resultaten kunt bekijken.

    In de volgende tabel worden de uitvoervensteropdrachten beschreven die u kunt gebruiken om met de uitvoertekst te werken:

    Opdracht Snelkoppelingsopdracht
    Wis alle tekst uit het venster Uitvoer. Alles wissen
    Kopieer de geselecteerde tekst in het uitvoervenster naar het klembord. kopie
    Selecteer alle tekst in het venster Uitvoer. Alles selecteren
    Sla de tekst in het uitvoervenster op in een opgegeven bestand. Opslaan in bestand

Uitvoer van testtracering voor regelset

In deze sectie worden de traceringsgegevens en -activiteiten beschreven die bij de tracering zijn opgenomen wanneer u een regelset test met behulp van Microsoft Rules Composer. Traceringsuitvoer kan de volgende instructietypen bevatten:

  • Feitenactiviteit
  • Evaluatie van voorwaarde
  • Agenda-update
  • Regel geactiveerd

Feitenactiviteit

Deze activiteit geeft wijzigingen aan in de feiten in het werkgeheugen van de engine. In het volgende voorbeeld ziet u een voorbeeld van een activiteitsvermelding voor feiten:

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 de volgende tabel worden de gegevens in deze vermelding beschreven:

Item Beschrijving
Exemplaar-id van regelengine Een unieke id voor het RuleEngine-exemplaar dat de uitvoeringsomgeving biedt voor het starten van de regel.
Naam van regelset De naam van de regelset.
Bewerking De volgende bewerkingstypen kunnen optreden in een feitenactiviteit:

- Assert: Er wordt een feit toegevoegd aan het werkgeheugen. Opmerking: als het type voor een asserted feit niet overeenkomt met een van de typen die worden gebruikt in de regelset, geeft de functie Assert de fout 'Assert - Fact Unrecognized' weer.

- Update: Een regel werkt een feit bij, dat vervolgens opnieuw moet worden ingevoerd in de engine voor herwaardering, op basis van de nieuwe gegevens en status.

- Intrekken: Een feit wordt verwijderd uit het werkgeheugen.
Objecttype Het feitentype voor een bepaalde activiteit: - TypedXmlDocument

Asserties worden weergegeven voor zowel bovenliggende als onderliggende TypedXmlDocument-exemplaren .
Objectexemplaren-id De unieke exemplaar-id voor de feitenreferentie.

Evaluatie van voorwaarde

Deze activiteit geeft het resultaat aan van het evalueren van afzonderlijke predicaten. In het volgende voorbeeld ziet u een voorbeeld van een evaluatievermelding voor voorwaarde:

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 de volgende tabel worden de gegevens in deze vermelding beschreven:

Item Beschrijving
Testexpressie Een eenvoudige unaire of binaire expressie binnen een regel.
Linkeroperandwaarde De waarde van de term aan de linkerkant van een expressie.
Rechteroperandwaarde De waarde van de term rechts van een expressie.
Testresultaat Het resultaat van de evaluatie, die Waar of Onwaar is.

Agenda-update

Deze activiteit geeft de regels aan die worden toegevoegd aan de agenda van de regelengine voor latere uitvoering. In het volgende voorbeeld ziet u een voorbeeld van een agenda-updatevermelding:

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 de volgende tabel worden de gegevens in deze vermelding beschreven:

Item Beschrijving
Bewerking De bewerking waarmee regels worden toegevoegd aan of verwijderd uit de agenda.
Regelnaam De naam van de regel die wordt toegevoegd aan of verwijderd uit de agenda.
Criteria voor conflictoplossing De prioriteit van een regel, die de relatieve volgorde bepaalt voor wanneer acties worden uitgevoerd en waar acties met een hogere prioriteit eerst worden uitgevoerd.

Regel geactiveerd

Deze activiteit geeft de uitvoering van de acties van een regel aan. In het volgende voorbeeld ziet u een regel geactiveerde vermelding:

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

De functie Update

In dit voorbeeld ziet u een voorbeeldregel 'InventoryCheck' en een 'Verzendregel' in een voorbeeldregelset met de naam 'Order'. Wanneer de regel voor het eerst wordt gecontroleerd, wordt de voorwaarde die is gekoppeld aan de regel 'Verzend', geëvalueerd als Onwaar. Wanneer de regel InventoryCheck echter wordt geactiveerd, wordt het veld InventoryAvailable op de Order gewijzigd en wordt de opdracht Update uitgegeven aan de engine voor het 'Orderobject', waardoor de herwaardering voor de regel 'Schip' wordt veroorzaakt. Deze keer wordt de voorwaarde geëvalueerd als Waar en wordt de regel 'Schip' geactiveerd.

Notitie

Als uw regels onjuist zijn geschreven, kan doorsturen met de functie Update een oneindige lus veroorzaken. In dit geval krijgt u, wanneer u de regelset in de Microsoft Rules Composer test, een foutbericht met de tekst 'De regelengine heeft een uitvoeringslus gedetecteerd'.

InventoryCheck-regel

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

Verzendregel

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

Uitvoer

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

Voorbeelden van uitvoer van regelsettesttracering

In deze sectie vindt u voorbeelden van testuitvoer voor regelset voor verschillende soorten feiten.

.NET Class fact type

Dit voorbeeld is een voorbeeldregel met de naam TestRule1 in een regelset met de naam 'LoanProcessing':

IF test.get_ID > 0
THEN <do something>

Uitvoer

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-feitentype

In dit voorbeeld ziet u dat een TypedXmlDocument-entiteit met het documenttype Microsoft.Samples.BizTalk.LoansProcessor.Case in de regelengine wordt opgenomen. Op basis van de XPath Selector-waarde die in de regel is gedefinieerd, maakt en bevestigt de engine een onderliggende TypedXmlDocument-entiteit met het type Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType op basis van het documenttype en de selectortekenreeks. Deze onderliggende Entiteit TypedXmlDocument evalueert waar in de voorwaarde, waardoor een agenda-update en regel worden geactiveerd. De bovenliggende en onderliggende TypedXmlDocument-entiteiten worden vervolgens ingetrokken.

In dit voorbeeld ziet u de voorbeeldregel met de naam TestRule1 in een regelset met de naam 'LoanProcessing':

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

Uitvoer

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