Partager via


Tester des ensemble de règles avec l’Éditeur de règles Microsoft (préversion)

S’applique à : Azure Logic Apps (Standard)

Important

Cette fonctionnalité est en préversion et est soumise aux conditions d’utilisation supplémentaires des préversions de Microsoft Azure.

Lorsque vous générez votre ensemble de règles afin de pouvoir intégrer la logique métier à vos flux de travail Standard, testez votre ensemble de règles de manière incrémentielle ou avant d’utiliser les règles dans votre application. De cette façon, vous pouvez vérifier que les règles fonctionnent comme prévu le long de la route, ou vous pouvez trouver et résoudre les problèmes plus tôt lorsque vos règles sont moins complexes et plus faciles à résoudre.

Si vous attendez de tester vos règles en même temps ou lorsque vous avez terminé, et que vos règles sont longues ou complexes, vous risquez d’obtenir plus d’erreurs ou de problèmes que prévu, ce qui peut prendre plus de temps pour résoudre ou prouver difficile à résoudre.

Prérequis

  • Téléchargez et installez l’Éditeur de règles Microsoft.

  • Fichier XML qui contient l’ensemble de règles sur lequel vous souhaitez travailler et les faits que vous souhaitez tester.

    Pour ajouter des faits, spécifiez leurs valeurs dans les fichiers XML que vous référencez à partir de la fenêtre Sélectionner les faits qui s’ouvre après avoir sélectionné l’ensemble de règles de test dans les étapes suivantes. Vous pouvez créer un créateur de faits pour ajouter des faits .NET. Pour plus d’informations, consultez Créer des créateurs et des extracteurs de faits.

Tester une version d’ensemble de règles

  1. Ouvrez l’Éditeur de règles Microsoft. Dans la fenêtre de l’Explorateur RuleSet, sélectionnez la version de l’ensemble de règles que vous souhaitez tester, ce qui ouvre la fenêtre d’informations sur la version.

  2. Dans le menu contextuel de la version du jeu de règles, sélectionnez Tester Ruleset.

    Dans la zone Sélectionner les faits qui s’affichent, la fenêtre supérieure affiche les types de faits référencés par les règles d’ensemble de règles.

  3. Pour ajouter une instance de faits, sous Documents XML ou Classes .NET, sélectionnez un type de fait correspondant, puis sélectionnez Ajouter une instance.

    Remarque

    Si vous déclarez une classe dérivée dans une règle, mais que les règles sont directement écrites sur les membres de la classe de base, une instance de la classe de base est déclarée à la place et les conditions sont évaluées par rapport à l’instance de la classe de base.

  4. Pour supprimer une instance de faits, sélectionnez le type de fait correspondant, puis sélectionnez Supprimer l’instance.

  5. Pour ajouter un créateur de faits que vous avez créé, dans la fenêtre Fact Creators, sélectionnez Ajouter.

  6. Lorsque vous êtes prêt, sélectionnez Tester.

    La fenêtre Sortie affiche la sortie de trace de test de l’ensemble de règles.

  7. Ouvrez le menu contextuel de la fenêtre de sortie de test, puis sélectionnez une option pour enregistrer, effacer, sélectionner ou copier le texte de sortie afin de pouvoir passer en revue les résultats.

    Le tableau suivant décrit les commandes de la fenêtre Sortie que vous pouvez utiliser pour utiliser le texte de sortie :

    Tâche Commande de raccourci
    Supprimez tout le texte affiché dans la fenêtre Sortie. Effacer tout
    Copiez le texte sélectionné dans la fenêtre Sortie dans le Presse-papiers. Copy
    Sélectionnez tout le texte dans la fenêtre Sortie. Sélectionner tout
    Enregistrez le texte de la fenêtre Sortie dans un fichier spécifié. Enregistrer dans le fichier

Sortie de trace du test Ruleset

Cette section décrit les informations de suivi et les activités incluses dans la trace lorsque vous testez un ensemble de règles à l’aide de l’Éditeur de règles Microsoft. La sortie de suivi peut inclure les types d’instructions suivants :

  • Activité des faits
  • Évaluation de condition
  • Mise à jour de l'agenda
  • Règle déclenchée

Activité des faits

Cette activité indique les modifications apportées aux faits dans la mémoire de travail du moteur. L’exemple suivant montre un exemple d’entrée d’activité de faits :

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

Le tableau suivant décrit les informations contenues dans cette entrée :

Élément Description
Identificateur de l'instance du moteur de règles Identificateur unique de l’instance RuleEngine fournissant l’environnement d’exécution d’un déclenchement de règle.
Nom de l'ensemble des règles Nom de l’ensemble de règles.
Opération Les types d’opérations suivants peuvent se produire dans une activité de faits :

- Assert : un fait est ajouté à la mémoire de travail. Remarque : si le type d’un fait déclaré ne correspond à aucun des types utilisés dans l’ensemble de règles, la fonction Assert affiche l’erreur «  Assert – Fact Unrecognized ».

- Mise à jour : une règle met à jour un fait, qui doit ensuite être reaffirmé dans le moteur pour la réévaluation, en fonction des nouvelles données et de l’état.

- Rétraction : un fait est supprimé de la mémoire de travail.
Type d’objet Type de fait pour une activité particulière : - TypedXmlDocument

Les assertions sont affichées à la fois pour les instances TypedXmlDocument parentes et enfants.
Identificateur de l'instance d'objet ID d’instance unique pour la référence de faits.

Évaluation de condition

Cette activité indique le résultat de l'évaluation des prédicats individuels. L’exemple suivant montre un exemple d’entrée d’évaluation de condition :

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

Le tableau suivant décrit les informations contenues dans cette entrée :

Élément Description
Expression de test Une expression simple unaire ou binaire au sein d’un règle.
Valeur de l'opérande gauche Valeur du terme situé à gauche d’une expression.
Valeur de l'opérande droit valeur du terme situé à droite d’une expression.
Résultat du test Le résultat de l'évaluation, qui est soit True or False.

Mise à jour de l'agenda

Cette activité indique les règles qui sont ajoutées à l’agenda du moteur de règles pour être exécutées ultérieurement. L’exemple suivant montre un exemple d’entrée de mise à jour de l’agenda :

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

Le tableau suivant décrit les informations contenues dans cette entrée :

Élément Description
Opération Opération qui ajoute ou supprime des règles de l’ordre du jour.
Nom de la règle Nom de la règle qui est ajoutée ou supprimée de l’ordre du jour.
Critères de résolution des conflits Priorité d’une règle, qui détermine l’ordre relatif pour lequel les actions s’exécutent et où les actions de priorité supérieure s’exécutent en premier.

Règle déclenchée

Cette activité indique l’exécution des actions d’une règle. L’exemple suivant montre une entrée déclenchée par une règle :

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

Fonction Update

Cet exemple montre un exemple de règle « InventoryCheck » et une règle « Ship » dans un exemple de jeu de règles nommé « Order ». Lorsque la règle est vérifiée pour la première fois, la condition associée à la règle « Ship » prend la valeur False. Toutefois, lorsque la règle « InventoryCheck » se déclenche, le champ InventoryAvailable sur Order est modifié et la commande Update est émise au moteur pour l’objet « Order », ce qui entraîne la réévaluation de la règle « Ship ». Cette fois, la condition prend la valeur True et la règle Ship se déclenche.

Remarque

Si vos règles ne sont pas écrites correctement, le chaînage avant avec la fonction Mise à jour risque d'entraîner une boucle infinie. Dans cet événement, lorsque vous testez l’ensemble de règles dans l’Éditeur de règles Microsoft, vous obtenez un message d’erreur avec le texte « Le moteur de règles a détecté une boucle d’exécution ».

Règle InventoryCheck

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

Règle Ship

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

Sortie

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

Exemples de résultat du suivi du test de stratégies

Cette section fournit des exemples qui montrent la sortie de test de jeu de règles pour différents types de faits.

Type de faits de la classe .NET

Cet exemple est un exemple de règle nommée « TestRule1 » dans un ensemble de règles nommé « LoanProcessing » :

IF test.get_ID > 0
THEN <do something>

Sortie

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

Type de fait TypedXmlDocument

Cet exemple montre qu’une entité TypedXmlDocument avec le type de document nommé Microsoft.Samples.BizTalk.LoansProcessor.Case est déclaré dans le moteur de règles. Sur la base de la valeur du sélecteur XPath définie dans la règle, le moteur a alors créé et déclaré une entité TypedXmlDocument enfant de type Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType basée sur le type du document et la chaîne du sélecteur. Cette entité TypedXmlDocument enfant ayant la valeur True dans la condition, cela a provoqué la mise à jour de l'agenda et le déclenchement de la règle. Les entités parent et enfant TypedXmlDocument sont ensuite retirées.

Cet exemple montre l’exemple de règle nommée « TestRule1 » dans un ensemble de règles nommé « LoanProcessing » :

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

Sortie

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