Comprobador de congruencia

El mecanismo de análisis de coherencia encuentra reglas en conflicto semánticamente como, por ejemplo, reglas que nunca se seleccionan, reglas que nunca se aplican, reglas equivalentes, reglas redundantes, reglas en conflicto y conflictos entre tablas de decisiones o árboles de decisiones.

La comprobación de coherencia es un mecanismo para comprobar si las reglas no contienen elementos en conflicto semánticamente.

Las ambigüedades se pueden encontrar en una sola regla o en un conjunto de reglas. Por ejemplo:

  • Una sola regla puede contener condiciones contradictorias y, por lo tanto, nunca se aplica.

  • Se pueden aplicar dos reglas al mismo objeto y establecer un atributo determinado en dos valores diferentes. Estas reglas son contradictorias.

La comprobación de coherencia va más allá de los aspectos de sintaxis para considerar también la semántica. Es decir, cómo se comporta la regla durante la ejecución. Utilizando Diseñador de reglas , puede elegir qué comprobaciones se llevan a cabo.

Las comprobaciones de coherencia pertenecen a una de las categorías siguientes:

La comprobación de coherencia informa de problemas en las reglas:
  • Si hay un flujo de reglas en el proyecto de reglas, el mecanismo de comprobación de coherencia informa de problemas en las reglas que se incluyen en una tarea de reglas y que se pueden seleccionar en tiempo de ejecución.

    El mecanismo compara sólo las reglas que podrían estar en la misma tarea. En el caso de una tarea de regla con filtrado de selección dinámica, el mecanismo tiene en cuenta las reglas que esta tarea potencialmente selecciona. Una regla se considera potencialmente seleccionable cuando no se puede establecer que definitivamente no se puede seleccionar.

  • Si no hay ningún flujo de reglas en el proyecto de reglas, es probable que se seleccionen todas las reglas del proyecto.
  • Da una indicación de la coherencia de sus normas, pero no puede identificar todos los problemas potenciales. Por lo tanto, un informe de comprobación de coherencia vacío no es una garantía de que no haya problemas en las reglas analizadas.

Para obtener más información, consulte Selección de regla de tiempo de ejecución y Alteración temporal de regla.

Consejo: En la vista de análisis de reglas, puede introducir un límite para el número de resultados que se devuelven:
La imagen muestra el ajuste del límite.

Si tiene un conjunto de reglas con numerosos problemas, establecer un límite puede producir resultados más rápidamente y generar un informe más pequeño y manejable. El análisis se detiene cuando alcanza el límite.

Si desea que el análisis continúe, haga clic en Continuar análisis de reglas en el informe Estadísticas.

Reglas que no se seleccionan nunca

Las reglas se notifican como nunca seleccionadas cuando no forman parte de una tarea de regla y no se pueden seleccionar en tiempo de ejecución. Para obtener más información, consulte Selección de regla de tiempo de ejecución y Alteración temporal de regla.

Reglas que no se aplican nunca

Una regla se analiza como nunca aplicable cuando sus condiciones nunca se pueden cumplir.

Normalmente, la sintaxis de estas reglas es correcta, pero las reglas contienen errores de lógica comunes. Por ejemplo:

  • El operador incorrecto se utiliza para combinar sentencias de condición, por ejemplo and en lugar de or: the category of the customer is Gold and the category of the customer is Platinum.

  • Los valores se invierten, por ejemplo, en la regla siguiente: the age of the customer is between 70 and 50.

  • Los valores en las condiciones no están dentro del rango permitido.

Reglas con infracción de rango

Para reducir el riesgo de errores, algunos miembros sólo pueden asignarse valores dentro de un rango especificado. Por ejemplo, la tasa de interés anual de un préstamo puede limitarse a valores entre 0 y 10.

Si una regla contiene una acción que intenta asignar un valor que no está dentro del rango permitido, Diseñador de reglas muestra un error de violación de rango en el informe y en el Editor de reglas.

Reglas con condiciones equivalentes

El mecanismo de comprobación de coherencia también notifica reglas en las que las partes de la condición tienen el mismo significado y en las que las partes de la acción son diferentes pero no están en conflicto.

Las reglas con condiciones equivalentes no representan necesariamente una situación de error, pero podrían ser buenos candidatos para fusionarse.

Reglas equivalentes

Las reglas equivalentes se notifican cuando tanto sus condiciones como sus acciones son las mismas.

En el ejemplo siguiente, Rule1 y Rule2 son equivalentes:

Rule1

definiciones
set minDiscount to 5
set ageDiscount to 10
si
the age of the borrower is more than 65
Entonces 
set the discount to minDiscount + ageDiscount

Rule2

si
the age of the borrower is at least 66
Entonces
set the discount to 15

Aunque la sintaxis de estas dos reglas es diferente, el análisis de reglas evalúa las expresiones numéricas y notifica que las reglas son equivalentes. Por lo tanto, puede suprimir uno de ellos.

Nota: A menudo surgen reglas equivalentes entre una tabla de decisiones que crea y una regla existente.

Reglas redundantes

Cuando dos reglas tienen las mismas acciones, una de ellas se vuelve redundante cuando sus condiciones se incluyen en las condiciones de la otra.

En el ejemplo siguiente, la parte Else de Rule2 hace que Rule1 sea redundante:

Rule1

si
the category of the customer is Gold
Entonces
set the discount to 10

Rule2

si
the category of the customer is Platinum
Entonces
set the discount to 15
else
set the discount to 10

Aunque Rule1 es correcto, es redundante y, por lo tanto, se puede suprimir.

Nota: Las reglas redundantes suelen surgir entre una tabla de decisiones que crea y una regla existente.

Reglas conflictivas y autoconflictivas

Las reglas entran en conflicto cuando las acciones de dos reglas diferentes establecen un valor diferente para el mismo término de negocio (miembro). Se producen conflictos entre dos reglas cuando las condiciones son equivalentes o cubren los mismos valores. Por ejemplo, considere las dos reglas siguientes:

Rule1

si
the loan report is approved
and the amount of the loan is at least 300 000
Entonces
set the category of the borrower to Gold

Rule2

si
the age of the latest bankruptcy of the borrower is less than 1
and the category of the borrower is not Platinum
Entonces
set the category of the borrower to No Category

Rule1 y Rule2 entran en conflicto cuando se produce la situación siguiente:

  • El informe de préstamo está aprobado.

  • El importe del préstamo es de 300 000 o más.

  • El prestatario no ha tenido una quiebra en el último año.

  • Y la categoría es cualquier cosa menos Platino.

En estas circunstancias específicas, las reglas establecen la categoría del prestatario en valores diferentes. Puede corregir reglas en conflicto cambiando las condiciones, suprimiendo una de las reglas o estableciendo prioridades diferentes en las reglas.

Una regla es autoconflictiva cuando dos ejecuciones de una regla asignan valores diferentes al mismo miembro. Por ejemplo, una regla que se puede aplicar dos veces en una memoria de trabajo determinada (y parámetros de conjunto de reglas) y establece valores diferentes en un atributo común es autoconflictiva. Por ejemplo:

si
the customer category is Gold
Entonces
   establecer el descuento del carrito a los puntos de bonificación del cliente

Con esta regla, si hay dos objetos customer con distintos bonus points en la memoria de trabajo, la regla se ejecuta dos veces y se produce un conflicto porque las dos ejecuciones de la regla establecen valores diferentes en the discount of the cart.

Conflictos de tabla de decisiones

Para comprobar tablas de decisiones y árboles de decisiones, debe habilitar la opción Incluir tablas de decisiones y árboles de decisiones en las comprobaciones entre reglas.

Cuando esta opción está habilitada, puede comprobar las reglas entre y dentro de tablas de decisiones o árboles de decisiones. El analizador de reglas comprueba si hay conflictos, redundancias y equivalencias entre los elementos siguientes:

  • Dos filas de la misma tabla de decisiones

  • Dos filas de dos tablas de decisiones diferentes

  • Dos hojas del mismo árbol de decisiones

  • Dos hojas de dos árboles de decisión diferentes

  • Una fila de una tabla de decisiones y una hoja de un árbol de decisiones

  • Una fila de una tabla de decisiones y una regla de acción

  • Una hoja de un árbol de decisiones y una regla de acción

Cuando esta opción está inhabilitada, estas comprobaciones no se realizan en tablas de decisiones y árboles de decisiones, sino sólo en reglas de acción.

Sin embargo, las tablas de decisiones y los árboles de decisiones se comprueban en busca de reglas y reglas nunca aplicables con violación de dominio incluso si la opción está inhabilitada. Esta opción no afecta a las comprobaciones de solapamiento y espacio que se detectan al escribir las reglas.