Compartir a través de


Agenda y prioridad

Para comprender cómo el motor de reglas de negocios evalúa las reglas y ejecuta acciones, debe comprender los conceptos de agenda y prioridad.

Agenda

La agenda es una programación que utiliza el motor para poner en cola las reglas que van a ejecutarse. Se encuentra en una instancia del motor y actúa sobre una única directiva, no sobre una serie de directivas. Cuando se impone un dato en la memoria de trabajo y se cumplen las condiciones de una determinada regla, la regla se coloca en la agenda y se ejecuta de acuerdo con la prioridad. Las acciones de una regla se ejecutan en orden descendente y después se ejecutan las acciones de la siguiente regla que haya en la agenda.

Las acciones que pertenecen a una regla se consideran como un bloque, de modo que se ejecutan todas las acciones antes de pasar a la regla siguiente. Todas las acciones de un bloque de reglas se ejecutarán con independencia de las demás acciones del bloque. Para obtener más información sobre la aserción, vea Funciones de control del motor.

El siguiente ejemplo muestra cómo funciona la agenda.

Rule1

IF  
Fact1 == 1  
THEN  
Action1  
Action2  

Regla 2

IF  
Fact1 > 0  
THEN  
Action3  
Action4  

Imponemos en el motor el hecho Fact1, que tiene un valor de 1. Como se cumplen las condiciones de las reglas Rule1 y Rule2, ambas reglas se mueven a la agenda para que se ejecuten las acciones correspondientes.

Memoria de trabajo Agenda
Fact1 (valor = 1) Rule1

- Acción1
- Acción2

Regla 2

- Acción3
- Acción4

Priority

La prioridad de ejecución se establece en cada regla individual, con una prioridad predeterminada de 0 para todas las reglas. El valor de prioridad puede oscilar a ambos lados del 0, donde los números más grandes significan una mayor prioridad. Las acciones se ejecutan en orden desde prioridad más alta a prioridad más baja.

En el ejemplo siguiente se muestra cómo afecta la prioridad al orden de ejecución de las reglas.

Rule1 (prioridad = 0)

IF  
Fact1 == 1  
THEN  
Discount = 10%  

Rule2 (prioridad = 10)

IF  
Fact1 > 0  
THEN  
Discount = 15%  

Las condiciones de ambas reglas se cumplen, pero la regla Rule2 se ejecuta primero porque tiene una mayor prioridad. El descuento final es de un 10 por ciento, ya que es el resultado de la acción ejecutada para la regla Rule1, como se muestra en la tabla siguiente.

Memoria de trabajo Agenda
Fact1 (valor = 1) Regla 2

Descuento = 15%

Rule1

Descuento = 10%

Consulte también

Motor de reglas