Notification au moteur de règles des changements d'objet
Vous pouvez notifier au moteur de règles la disponibilité de nouveaux objets
ou les cas où un objet a été mise à jour ou retiré.
A propos de cette tâche
La notification des changements d'objets dépend du mode d'exécution :
- Lorsque le moteur de règles fonctionne en mode RetePlus, il recalcule instantanément les règles concordantes et reprogramme un agenda interne.
- Lorsque le moteur de règles fonctionne en mode séquentiel ou Fastpath, il ne prend en compte le nouveau statut des objets que lorsque vous entrez une nouvelle tâche de règle.
Procédure
Résultats
Le code suivant présente le schéma global de notification des changements d'objets au moteur de règles :
insert object;
insert ClassName(<constructor_arguments>)
[{statement1; ... statement}] ;
update object;
retract object;
Exemple
Dans la partie then de
cet exemple, l'algorithme RetePlus est informé que le nouvel
objet penalty est disponible et que l'objet account
n'est plus disponible. Des règles peuvent donc s'exécuter pour les objets penalty, mais
plus pour les objets account. Dans la partie else,
l'algorithme RetePlus est informé que les règles tributaires
de l'objet account doivent être réévaluées. Par conséquent,
certaines de ces règles cessent de s'exécuter tandis que d'autres commencent
à s'exécuter.
rule financial.rules.CheckBalance {
when {
account: Account();
evaluate (account.getBalance() < 0 );
}
then { // compute a penalty
Penalty penalty = new Penalty(account);
insert penalty;
retract account;
}
else { // compute a bonus
account.computeBonus();
update account;
}
};