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:
Comprobaciones que analizan una regla individual. Estas comprobaciones se activan al crear la regla y al ejecutar el análisis de comprobación de coherencia:
Comprobaciones que analizan reglas en relación con otras reglas. Estas comprobaciones sólo se activan cuando se ejecuta el análisis de comprobación de coherencia.
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:
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 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.