Agenda et priorité
Pour comprendre comment le moteur de règle métier évalue les règles et exécute des actions, vous devez comprendre les concepts d’agenda et de priorité.
Agenda
L'agenda est une planification dont se sert le moteur pour mettre en file d'attente les règles à exécuter. L'agenda est lié à une instance de moteur et agit sur une stratégie, pas sur plusieurs. Lorsque les conditions d'une règle donnée sont satisfaites et qu'un fait est déclaré en mémoire de travail, la règle est placée sur l'agenda et exécutée selon sa priorité. Les actions d'une règle sont exécutées dans l'ordre, du haut vers le bas. Les actions de la règle suivante sur l'agenda sont ensuite exécutées.
Les actions appartenant à une règle sont traitées comme un bloc afin que toutes soient exécutées avant le début de la règle suivante. Toutes les actions d'un bloc de règle s'exécutent indépendamment les unes des autres. Pour plus d’informations sur l’assertion, consultez Fonctions de contrôle du moteur.
L'exemple suivant illustre le fonctionnement de l'agenda.
Règle1
IF
Fact1 == 1
THEN
Action1
Action2
Règle 2
IF
Fact1 > 0
THEN
Action3
Action4
Nous déclarons le fait Fait1 qui possède la valeur 1 dans le moteur. Étant donné que les conditions de Règle 1 et Règle 2 sont satisfaites, ces deux règles sont déplacées dans l'agenda pour que leurs actions puissent être exécutées.
Mémoire de travail | Agenda |
---|---|
Fait1 ( valeur = 1 ) | Règle1 - Action1 - Action2 Règle 2 - Action3 - Action4 |
Priorité
Une priorité d'exécution est définie pour chaque règle, avec une priorité par défaut de 0 pour toutes. La priorité peut être positive ou négative ; les nombres les plus élevés correspondent aux priorités les plus importantes. Les actions sont exécutées de la priorité la plus élevée à la priorité la plus faible.
L'exemple suivant montre l'incidence de la priorité sur l'ordre d'exécution des règles.
Règle1 (priorité = 0)
IF
Fact1 == 1
THEN
Discount = 10%
Règle2 (priorité = 10)
IF
Fact1 > 0
THEN
Discount = 15%
Les conditions des deux règles sont satisfaites, mais Règle2 est exécutée en premier car elle a la priorité la plus importante. La remise finale est de 10 % car il s'agit du résultat de l'action exécutée pour Règle1, comme l'illustre le tableau suivant.
Mémoire de travail | Agenda |
---|---|
Fait1 ( valeur = 1 ) | Règle 2 Remise = 15 % Règle1 Remise = 10 % |