Set di regole di test con Microsoft Rules Composer (anteprima)
Si applica: App per la logica di Azure (Standard)
Importante
Questa funzionalità è in anteprima ed è soggetta alle Condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure.
Quando si compila il set di regole in modo che sia possibile integrare la logica di business con i flussi di lavoro Standard, testare il set di regole in modo incrementale o prima di usare le regole nell'applicazione. In questo modo, è possibile verificare che le regole funzionino nel modo previsto lungo il percorso oppure è possibile trovare e risolvere i problemi prima quando le regole sono meno complesse e facili da risolvere.
Se si attende di testare tutte le regole contemporaneamente o quando si esegue tutte le operazioni e le regole sono lunghe o complesse, è possibile che si verifichino più errori o problemi di quanto si pensa, che potrebbero richiedere più tempo per risolvere o dimostrare difficile risolvere i problemi.
Prerequisiti
Scaricare e installare Microsoft Rules Composer.
File XML che contiene il set di regole su cui si desidera lavorare e i fatti che si desidera testare.
Per aggiungere fatti, specificare i relativi valori nei file XML a cui si fa riferimento dalla finestra Seleziona fatti che si apre dopo aver selezionato Test Ruleset nei passaggi seguenti. È possibile creare un creatore di fatti per aggiungere fatti .NET. Per altre informazioni, vedere Creare creatori di fatti e retriever.
Testare una versione del set di regole
Aprire Microsoft Rules Composer. Nella finestra Esplora regole selezionare la versione del set di regole da testare, che apre la finestra delle informazioni sulla versione.
Dal menu di scelta rapida della versione del set di regole selezionare Set di regole di test.
Nella casella Seleziona fatti visualizzata nella finestra superiore vengono visualizzati i tipi di fatti a cui fanno riferimento le regole del set di regole.
Per aggiungere un'istanza dei fatti, in Documenti XML o classi .NET selezionare un tipo di fatto corrispondente e quindi selezionare Aggiungi istanza.
Nota
Se si asserisce una classe derivata in una regola, ma le regole vengono scritte direttamente sui membri della classe base, viene invece asserta un'istanza della classe base e le condizioni vengono valutate rispetto all'istanza della classe base.
Per rimuovere un'istanza dei fatti, selezionare il tipo di fatto corrispondente e quindi selezionare Rimuovi istanza.
Per aggiungere un creatore di fatti compilato, nella finestra Fact Creators (Creatori di fatti) selezionare Aggiungi.
Quando si è pronti, selezionare Test.
La finestra Output mostra l'output di traccia del test del set di regole.
Aprire il menu di scelta rapida per la finestra di output del test e selezionare un'opzione per salvare, cancellare, selezionare o copiare il testo di output in modo da poter esaminare i risultati.
La tabella seguente descrive i comandi della finestra di output che è possibile usare per usare il testo di output:
Attività Comando di scelta rapida Cancellare tutto il testo dalla finestra Output. Cancella tutto Copiare il testo selezionato negli Appunti nella finestra Output. Copia Selezionare tutto il testo nella finestra Output. Seleziona tutto Salvare il testo contenuto nella finestra Output in un file specificato. Salva nel file
Output di traccia del test del set di regole
In questa sezione vengono descritte le informazioni di rilevamento e le attività incluse nella traccia quando si testa un set di regole usando Microsoft Rules Composer. L'output di rilevamento può includere i tipi di istruzione seguenti:
- Attività dei fatti
- Valutazione delle condizioni
- Aggiornamento agenda
- Regola attivata
Attività dei fatti
Questa attività indica le modifiche apportate ai fatti nella memoria di lavoro del motore. L'esempio seguente mostra una voce di attività dei fatti di esempio:
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
Nella tabella seguente vengono descritte le informazioni contenute in questa voce:
Articolo | Descrizione |
---|---|
Identificatore dell'istanza del motore di regole | Identificatore univoco per l'istanza ruleEngine che fornisce l'ambiente di esecuzione per la generazione della regola. |
Nome set di regole | Nome del set di regole. |
Operazione | I tipi di operazione seguenti possono verificarsi in un'attività dei fatti: - Assert: un fatto viene aggiunto alla memoria funzionante. Nota: se il tipo per un fatto assertato non corrisponde ad alcuno dei tipi usati nel set di regole, la funzione Assert visualizza l'errore "Assert – Fact Unrecognized". - Aggiornamento: una regola aggiorna un fatto, che deve quindi essere rivalutato nel motore per la rivalutazione, in base ai nuovi dati e allo stato. - Ritiro: un fatto viene rimosso dalla memoria di lavoro. |
Tipo oggetto | Tipo di fatto per una particolare attività: - TypedXmlDocument Le asserzioni vengono visualizzate per le istanze TypedXmlDocument padre e figlio. |
Identificatore dell'istanza dell'oggetto | ID istanza univoco per il riferimento al fatto. |
Valutazione delle condizioni
Questa attività indica il risultato della valutazione di singoli predicati. L'esempio seguente mostra una voce di valutazione della condizione di esempio:
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
Nella tabella seguente vengono descritte le informazioni contenute in questa voce:
Articolo | Descrizione |
---|---|
Espressione di test | Espressione unaria o binaria semplice all'interno di una regola. |
Valore dell'operando sinistro | Valore del termine a sinistra di un'espressione. |
Valore operando destro | Valore del termine a destra di un'espressione. |
Risultato del test | Risultato della valutazione, ovvero True o False. |
Aggiornamento agenda
Questa attività indica le regole aggiunte all'agenda del motore regole per l'esecuzione successiva. L'esempio seguente mostra una voce di aggiornamento dell'agenda di esempio:
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
Nella tabella seguente vengono descritte le informazioni contenute in questa voce:
Articolo | Descrizione |
---|---|
Operazione | Operazione che aggiunge o rimuove le regole dall'agenda. |
Nome regola | Nome della regola che viene aggiunta o rimossa dall'agenda. |
Criteri di risoluzione dei conflitti | Priorità di una regola, che determina l'ordine relativo per l'esecuzione delle azioni e la posizione in cui le azioni con priorità più alta vengono eseguite per prime. |
Regola attivata
Questa attività indica l'esecuzione delle azioni di una regola. L'esempio seguente mostra una voce attivata da una regola:
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
Funzione Update
Questo esempio mostra una regola "InventoryCheck" di esempio e una regola "Ship" in un set di regole di esempio denominato "Order". Quando la regola viene verificata per la prima volta, la condizione associata alla regola "Ship" restituisce False. Tuttavia, quando viene attivata la regola "InventoryCheck", il campo InventoryAvailable nell'ordine viene modificato e il comando Update viene emesso al motore per l'oggetto "Order", causando la rivalutazione per la regola "Ship". Questa volta, la condizione restituisce True e la regola "Ship" viene attivata.
Nota
Se le regole sono scritte in modo non corretto, il concatenamento in avanti con la funzione Update potrebbe causare un ciclo infinito. In questo caso, quando si testa il set di regole in Microsoft Rules Composer, viene visualizzato un messaggio di errore con il testo "Il motore delle regole ha rilevato un ciclo di esecuzione".
Regola InventoryCheck
IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)
Regola di spedizione
IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder
Output
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
Esempi di output di traccia del test del set di regole
In questa sezione vengono forniti esempi che mostrano l'output del test del set di regole per diversi tipi di fatti.
Tipo di fatto della classe .NET
Questo esempio è una regola di esempio denominata "TestRule1" in un set di regole denominato "LoanProcessing":
IF test.get_ID > 0
THEN <do something>
Output
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
Tipo di fatto TypedXmlDocument
Questo esempio mostra che un'entità TypedXmlDocument con il tipo di documento denominato Microsoft.Samples.BizTalk.LoansProcessor.Case viene asserta nel motore regole. In base al valore del selettore XPath definito nella regola, il motore crea ed asserisce un'entità TypedXmlDocument figlio con il tipo denominato Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, in base al tipo di documento e alla stringa del selettore. Questa entità TypedXmlDocument figlio restituisce True nella condizione, causando un aggiornamento dell'agenda e la generazione di regole. Le entità TypedXmlDocument padre e figlio vengono quindi ritirate.
Questo esempio mostra la regola di esempio denominata "TestRule1" in un set di regole denominato "LoanProcessing":
IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>
Output
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