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:
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:
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' ;