Agenda e priorità
Per comprendere come il motore regola business valuta le regole ed esegue azioni, è necessario comprendere i concetti dell'agenda e della priorità.
L'agenda è una pianificazione utilizzata dal motore per accodare le regole per l'esecuzione. È presente per un'istanza del motore e agisce su un singolo criterio, non su una serie di criteri. Quando viene dichiarato un fact nella memoria utilizzata e vengono soddisfatte le condizioni di una determinata regola, la regola viene inserita nell'agenda e viene eseguita in base alla priorità. Le azioni di una regola vengono eseguite nell'ordine dall'alto al basso, dopo di che vengono eseguite le azioni della regola successiva nell'agenda.
Le azioni che appartengono a una regola vengono trattate come blocco, per cui vengono eseguite tutte prima di passare alla regola successiva. Tutte le azioni in un blocco di regole verranno eseguite a prescindere da altre azioni nel blocco. Per altre informazioni sull'asserzione, vedere Funzioni di controllo motore.
Nell'esempio seguente viene illustrato l'utilizzo dell'agenda.
Regola1
IF
Fact1 == 1
THEN
Action1
Action2
Regola2
IF
Fact1 > 0
THEN
Action3
Action4
Viene asserito il fact Fact1 che ha un valore di 1 nel motore. Perché vengono soddisfatte le condizioni sia di Rule1 che di Rule2, entrambe le regole vengono spostate nell'agenda per l'esecuzione delle loro azioni.
Memoria di lavoro | Agenda |
---|---|
Fact1 (valore=1) | Regola1 - Azione1 - Azione2 Regola2 - Azione3 - Azione4 |
La priorità per l'esecuzione è impostata su ogni singola regola. Tutte le regole hanno una priorità predefinita 0. La priorità può variare su entrambi i lati di 0 e i numeri maggiori hanno una priorità superiore. Le azioni vengono eseguite nell'ordine dalla priorità più alta alla priorità più bassa.
Nell'esempio seguente viene illustrato come la priorità influisce sull'ordine di esecuzione per le regole.
Rule1 (priorità = 0)
IF
Fact1 == 1
THEN
Discount = 10%
Rule2 (priorità = 10)
IF
Fact1 > 0
THEN
Discount = 15%
Le condizioni per entrambe le regole sono state soddisfatte ma Rule2 viene eseguita per prima poiché ha una priorità superiore. Lo sconto finale è 10 % perché è il risultato dell'azione eseguita per Rule1, come illustrato nella tabella seguente.
Memoria di lavoro | Agenda |
---|---|
Fact1 (valore=1) | Regola2 Sconto = 15% Regola1 Sconto = 10% |