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
Open de Microsoft Rules Composer. Selecteer in het venster RuleSet Explorer de regelsetversie die u wilt testen, waardoor het venster met versiegegevens wordt geopend.
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.
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.
Als u een feitenexemplaren wilt verwijderen, selecteert u het bijbehorende feitentype en selecteert u Vervolgens Exemplaar verwijderen.
Als u een maker van een feit wilt toevoegen die u hebt gemaakt, selecteert u Toevoegen in het venster Feitenmakers.
Wanneer u klaar bent, selecteert u Testen.
In het uitvoervenster ziet u de uitvoer van de testtraceringsregelset.
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