Probar conjuntos de reglas mediante Microsoft Rules Composer (versión preliminar)
Se aplica a: Azure Logic Apps (estándar)
Importante
Esta funcionalidad está en versión preliminar y está sujeta a las Condiciones de uso complementarias para las versiones preliminares de Microsoft Azure.
A medida que compila el conjunto de reglas para que pueda integrar la lógica de negocios con los flujos de trabajo Estándar, pruebe el conjunto de reglas de forma incremental o antes de usar las reglas de la aplicación. De este modo, podrá comprobar sobre la marcha que las reglas funcionan como espera, o podrá encontrar y solucionar antes los problemas cuando sus reglas sean menos complejas y más fáciles de solucionar.
Si espera a probar todas sus reglas al mismo tiempo o cuando ya haya terminado, y sus reglas son largas o complejas, podría tener más errores o problemas de los que pensaba, que podrían tardar más en resolverse o resultar difíciles de solucionar.
Requisitos previos
Descargue e instale el Microsoft Rules Composer.
El archivo XML que contiene el conjunto de reglas en el que desea trabajar y los datos en los que desea probar.
Para agregar datos, especifique sus valores en los archivos XML a los que hace referencia desde la ventana Seleccionar datos que se abre después de seleccionar Probar conjunto de reglas en los pasos siguientes. Es posible que quiera crear un creador de datos para agregar datos de .NET. Para obtener más información, consulte Crear creadores y recuperadores de datos.
Probar una versión del conjunto de reglas
Abra el Microsoft Rules Composer. En la ventana Explorador de RuleSet, seleccione la versión del conjunto de reglas que desea probar, que abre la ventana de información de la versión.
En el menú contextual de la versión del conjunto de reglas, seleccione Probar conjunto de reglas.
En el cuadro Seleccionar datos que aparece, la ventana superior muestra los tipos de datos a los que hacen referencia las reglas del conjunto de reglas.
Para agregar una instancia de dato, en Documentos XML o Clases .NET, seleccione un tipo de dato correspondiente y, a continuación, seleccione Agregar instancia.
Nota:
Si afirma una clase derivada en una regla, pero las reglas se escriben directamente en los miembros de la clase base, una instancia de clase base se afirma en su lugar y las condiciones se evalúan en la instancia de clase base.
Para quitar una instancia de dato, seleccione el tipo de dato correspondiente y, a continuación, seleccione Quitar instancia.
Para agregar un creador de datos que haya compilado, en la ventana Creadores de datos, seleccione Agregar.
Cuando lo tenga todo preparado, seleccione Probar.
La Ventana de salida muestra la salida del seguimiento de prueba del conjunto de reglas.
Abra el menú contextual de la ventana de salida de prueba y seleccione una opción para guardar, borrar, seleccionar o copiar el texto de salida para poder revisar los resultados.
En la tabla siguiente se describen los comandos de la Ventana de salida que puede usar para trabajar con el texto de salida:
Tarea Comando de método abreviado Borrar el texto de la Ventana de salida. Borrar todo Copiar en el Portapapeles el texto seleccionado de la Ventana de salida. Copiar Seleccione todo el texto de la Ventana de salida. Seleccionar todo Guardar el texto de la Ventana de salida en un archivo especificado. Guardar en el archivo
Salida del seguimiento de prueba del conjunto de reglas
En esta sección se describe la información de seguimiento y las actividades incluidas con el seguimiento al probar un conjunto de reglas mediante Microsoft Rules Composer. La salida de seguimiento puede incluir los siguientes tipos de instrucción:
- Actividad de datos
- Evaluación de condición
- Actualización de agenda
- Regla activada
Actividad de datos
Esta actividad indica los cambios en los datos realizados en la memoria de trabajo del motor. En el ejemplo siguiente se muestra una entrada de actividad de dato de ejemplo:
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
En la tabla siguiente se describe la información de esta entrada:
Elemento | Descripción |
---|---|
Identificador de instancias de motor de reglas | Un identificador único de la instancia RuleEngine que proporciona el entorno de ejecución para la activación de reglas. |
Nombre de conjunto de reglas | Nombre del conjunto de reglas. |
Operación | Los siguientes tipos de operación pueden producirse en una actividad de dato: - Aserción: se agrega un dato a la memoria de trabajo. Nota: si el tipo de un dato asertivo no coincide con ninguno de los tipos usados en el conjunto de reglas, la función Assert muestra el error "Assert – Fact Unrecognized". - Actualización: una regla actualiza un dato, que se debe reafirmar en el motor para su reevaluación, en función de los nuevos datos y el estado. - Retirar: se quita un dato de la memoria de trabajo. |
Tipo de objeto | El tipo de dato de una actividad determinada: - TypedXmlDocument Las aserciones se muestran para las instancias de TypedXmlDocument primarias y secundarias. |
Identificador de instancia de objeto | Id. de instancia único para la referencia de datos. |
Evaluación de condición
Esta actividad indica el resultado de la evaluación de predicados individuales. En el ejemplo siguiente se muestra una entrada de evaluación de condición de ejemplo:
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
En la tabla siguiente se describe la información de esta entrada:
Elemento | Descripción |
---|---|
Expresión de prueba | Expresión simple unaria o binaria de una regla. |
Valor del operando izquierdo | Valor del término situado a la izquierda de una expresión. |
Valor del operando derecho | Valor del término situado a la derecha de una expresión. |
Resultado de la prueba | Resultado de la evaluación, que es True o False. |
Actualización de agenda
Esta actividad indica las reglas que se agregan a la agenda del motor de reglas para su posterior ejecución. En el ejemplo siguiente se muestra una entrada de actualización de agenda de ejemplo:
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
En la tabla siguiente se describe la información de esta entrada:
Elemento | Descripción |
---|---|
Operación | Operación que agrega o quita reglas de la agenda. |
Nombre de la regla | Nombre de la regla que se agrega o quita de la agenda. |
Criterios de resolución de conflictos | La prioridad de una regla, que determina el orden relativo de ejecución de las acciones y dónde se ejecutan primero las acciones de mayor prioridad. |
Regla activada
Esta actividad indica la ejecución de acciones de una regla. En el ejemplo siguiente se muestra una entrada desencadenada por una regla:
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
Función Update
En este ejemplo se muestra una regla de ejemplo "InventoryCheck" y una regla "Ship" en un conjunto de reglas de ejemplo denominado "Order". Cuando se comprueba por primera vez la regla, la condición asociada a la regla "Ship" se evalúa como False. Sin embargo, cuando se activa la regla "InventoryCheck", se cambia el campo InventoryAvailable en Order y el comando Update se emite al motor para el "objeto Order", lo que provoca la reevaluación de la regla "Ship". En esta ocasión la condición se evalúa como True y la regla "Ship" se activa.
Nota:
Si las reglas se escriben incorrectamente, el encadenamiento de reenvío con la función Update podría provocar un bucle infinito. En este evento, al probar el conjunto de reglas en Microsoft Rules Composer, recibirá un mensaje de error con el texto "El motor de reglas detectó un bucle de ejecución".
Regla InventoryCheck
IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)
Regla Ship
IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder
Salida
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
Ejemplos de salida de seguimiento de prueba del conjunto de reglas
En esta sección se proporcionan ejemplos que muestran la salida de prueba del conjunto de reglas para distintos tipos de datos.
Tipo de dato de la clase .NET
Este ejemplo es una regla de ejemplo denominada "TestRule1" en un conjunto de reglas denominado "LoanProcessing":
IF test.get_ID > 0
THEN <do something>
Salida
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 de dato TypedXmlDocument
En este ejemplo se muestra que una entidad TypedXmlDocument con el tipo de documento denominado Microsoft.Samples.BizTalk.LoansProcessor.Case se declaró en el motor de reglas. En función del valor de Selector XPath definido en la regla, el motor crea y declara una entidad TypedXmlDocument secundaria con el tipo denominado Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, en función del tipo de documento y la cadena del selector. Esta entidad TypedXmlDocument secundaria se evalúa como True en la condición, lo que origina una actualización de agenda y activación de reglas. Las entidades TypedXmlDocument primarias y secundarias se retiran.
En este ejemplo se muestra la regla de ejemplo denominada "TestRule1" en un conjunto de reglas denominado "LoanProcessing":
IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>
Salida
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