Ejemplos de manejo automático de excepciones

Cuando habilita el manejo automático de excepciones en condiciones, el motor de reglas maneja subclases específicas para que el proceso de reglas pueda continuar después de que se generen excepciones. Puede comprender la lógica detrás del manejo automático de excepciones revisando ejemplos.

Con el manejo automático de excepciones en condiciones, los valores desconocidos para las expresiones booleanas se resuelven utilizando la siguiente lógica de tres valores que se aplica a todas las combinaciones de expresiones booleanas que pueden dar como resultado una excepción:

La imagen contiene la lógica de tres valores para los operadores y, o, y no.

Condición de regla simple

En el ejemplo siguiente, si el estado del prestatario es desconocido, no se ejecuta ninguna acción de regla.

if
   the status of 'the borrower' starts with "duplicate"
then
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;
else 
   add "no duplicate found" to the messages of 'the loan' ;

Condición de regla que utiliza el operador OR

En el ejemplo siguiente, si el estado del prestatario es desconocido y el comentario del préstamo contiene la palabra duplicate, el préstamo se rechaza y seduplicate detectedse envía el mensaje.

if 
   the status of 'the borrower' starts with "Duplicate" or the comment of 'the loan' contains "duplicate"
then
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;
else 
   add "no duplicate found" to the messages of 'the loan' ;

Sin embargo, si el estado del prestatario es desconocido y el comentario es desconocido, no se realiza ninguna acción de regla. El préstamo no se rechaza y el mensajeno duplicate foundno se añade al préstamo.

Condición de regla que utiliza el operador AND

En el ejemplo siguiente, si el estado del prestatario es desconocido y el comentario en el préstamo contiene la palabra duplicate, no se adoptan ni las acciones then ni else. Es decir, el préstamo no se ha rechazado y el mensaje no duplicate found no se añade al mensaje del préstamo.

if 
   the status of 'the borrower' starts with "duplicate" and the comment of 'the loan' contains "duplicate"
then
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;
else 
   add "no duplicate found" to the messages of 'the loan' ;

Para que el préstamo sea rechazado, ambas expresiones deben ser verdaderas.

If there is no ... then ...

Si una colección de 4 prestatarios anteriores contiene 3 prestatarios para los que la cláusula where es falsa y 1 prestatario para los que se desconoce, se realiza la acción de regla.

If there is no borrower in the past borrowers of 'the loan' where the name of this borrower is the name of 'the borrower', 
then 
add "no duplicate found" to the message of 'the loan'

If there is at least one ... then ...

Si una colección de prestatarios anteriores contiene 3 prestatarios para los que la cláusula where es verdadera en 1 caso, falsa en 1 caso y desconocida en 1 caso, se realiza la acción de regla.

If there is at least one borrower in the past borrowers of 'the loan' where the name of this borrower is the name of 'the borrower', 
then 
   reject 'the loan' ;
   add "duplicate detected" to the message of 'the loan'

Condiciones de regla que utilizan el operador NOT

En el ejemplo siguiente, si el estado es desconocido y el comentario no contiene duplicate, se realiza la acción yno duplicate foundse añade al mensaje del préstamo.

if it is not true that
   (the status of 'the borrower' starts with "duplicate" and the comment of 'the loan' contains "duplicate")
then
   add "no duplicate found" to the messages of 'the loan' ;
else 
   reject 'the loan' ;
   add "duplicate detected" to the messages of 'the loan' ;

Si el estado es desconocido y el comentario contiene duplicados, no se ejecuta ninguna acción de regla.

Tabla de decisiones

En el ejemplo siguiente, la fila otherwise a una columna de condición se selecciona cuando todas las demás condiciones de la columna son falsas. De forma alternativa, si una de las otras condiciones es desconocida, la fila de lo contrario no se selecciona:

Imagen de ejemplo de tabla de decisiones.

Colección de objetos

Si el resultado de la prueba que debe cumplir el objeto es desconocido, este objeto no se añade a la colección porque sólo se añaden los objetos probados como verdaderos:

definitions
set 'duplicateBorrowers' to all borrowers where the status of each borrower starts with "duplicate" ; 

Expresiones que utilizan colecciones

En el ejemplo siguiente, si la cláusula where es verdadera para tres prestatarios y desconocida para un prestatario, el motor de reglas considera que la condición es verdadera porque no se cuenta el prestatario para el que se desconoce la cláusula where . Se realiza la acción then :

if  
	there are less than 3 borrowers where the name of each borrower is the name of 'the borrower',
then
   add “3 or less similar borrowers found" to the messages of 'the loan' ;
else
   reject 'the loan';
   add "more than 3 similar borrowers found" to the messages of 'the loan' ;

En el ejemplo siguiente, si la cláusula where es verdadera para un prestatario y desconocida para dos prestatarios, el motor de reglas considera que la condición de regla es falsa porque no se cuentan los dos prestatarios para los que la cláusula where es desconocida. Se realiza la acción else :

if  
	there are more than 3 borrowers where the name of each borrower is the name of 'the borrower',
then
   reject 'the loan';
   add "3 or more similar borrowers found" to the messages of 'the loan' ;
else
   add "less than 3 similar borrowers found" to the messages of 'the loan' ;

Las expresiones que utilizan contienen

La expresión de ejemplo siguiente utiliza contain, que es una forma alternativa de probar una colección. Si la colección ('duplicateBorrowers') contiene el objeto 'the borrower', la condición es verdadera.

definitions
	set 'duplicateBorrowers' to all borrowers where the customer status of each borrower starts with "duplicate" ;
if
    'duplicateBorrowers' contain  'the borrower' 
then
add "duplicate detected" to the messages of 'the loan' ;
	reject 'the loan' ;