Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Azure Logic Apps (Standard)
In deze handleiding ziet u hoe u regelsets test met behulp van Microsoft Rules Composer en uitvoervoorbeelden voor het testen van regels bevat.
Waarom regelsets incrementeel testen?
Wanneer u een regelset bouwt om bedrijfslogica te integreren met uw standaardwerkstromen voor logische apps, test u uw regelset stapsgewijs of ten minste voordat u de regels in uw toepassing gebruikt. Op die manier kunt u bevestigen dat elke regel werkt zoals u verwacht, of sneller problemen kunt vinden en oplossen wanneer uw regels minder complex en eenvoudiger zijn om problemen op te lossen.
Als u wacht om al uw regels tegelijkertijd te testen, met name wanneer uw regels lang of complex zijn, krijgt u mogelijk meer fouten dan verwacht. Dit duurt langer om op te lossen en is moeilijker om fouten op te sporen.
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 factoren maken en ophalen 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 de optie Test Ruleset.
In het vak Feiten selecteren dat verschijnt, worden in het bovenste venster de feitentypen weergegeven waarnaar door de regels van de regelset wordt verwezen.
Om een feitenexemplaar toe te voegen, selecteert u onder XML-documenten of .NET-klassen een bijbehorend feitentype en selecteert u 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 feitenvoorbeeld wilt verwijderen, selecteert u het bijbehorende feitentype en selecteert u 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 testtracering van de regelset.
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 sneltoetsopdracht 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 uitspraaktypen bevatten:
- Feitenactiviteit
- Voorwaardenevaluatie
- 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:
| Onderdeel | Beschrijving |
|---|---|
| Exemplaar-id van regelengine | Een unieke identificatie voor het RuleEngine-exemplaar dat de uitvoeringsomgeving biedt voor het afvuren 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 ouder- als kind-TypedXmlDocument-instanties. |
| Objectinstance-identificatie | De unieke exemplaar-id voor de feitenreferentie. |
Voorwaardenevaluatie
Deze activiteit geeft het resultaat aan van het evalueren van afzonderlijke predicaten. In het volgende voorbeeld ziet u een voorbeeld van een voorwaardeevaluatievermelding:
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:
| Onderdeel | 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 aan de rechterkant van een uitdrukking. |
| Testresultaat | Het resultaat van de evaluatie, dat 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:
| Onderdeel | Beschrijving |
|---|---|
| Operatie | 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 door een regel getriggerde 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 tracering van regelsettests
In deze sectie vindt u voorbeelden van testuitvoer voor regelset voor verschillende soorten feiten.
.NET Class feittype
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 TypedXmlDocument-entiteit evalueert tot True in de voorwaarde, waardoor een agenda-update en regel wordt geactiveerd. De bovenliggende en afgeleide 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