Escritura de una regla con una cláusula de acción else
Acerca de esta tarea
Cuando la parte de condición de una regla finaliza con una evaluación, la parte de acción de la regla puede incluir una cláusula else . La última evaluación dentro de la parte de condición actúa como discriminador para elegir entre las ramas de ejecución then o else . Si la expresión de evaluación es true, se ejecuta la parte then . Si es false, se ejecuta la parte else .
Si la regla finaliza con varias evaluaciones, sólo se utiliza la última como discriminador. La cláusula else es opcional y no se puede utilizar cuando no hay ninguna evaluación al final de la parte de condición.
Procedimiento
else , utilice el patrón siguiente:rule rulename {
when {
// conditions:
<condition>;
[<condition>;]*
evaluate (<then/else discrimination test>);
}
then {
// “then” actions
[<action>;]*
}
else {
// “else” actions
[<action>;]*
}
}
Ejemplo
En este ejemplo, si la expresión de evaluación es true, la regla ejecuta la acción then y carga una penalización. Si la evaluación es falsa, la regla ejecuta la acción else y calcula una bonificación.
rule financial.rules.CheckBalance {
when {
account: Account();
evaluate (account.getBalance() < 0 );
}
then {
account.chargePenalty();
}
else {
account.computeBonus();
}
};