Agenda and Priority
To understand how the Business Rule engine evaluates rules and executes actions, you need to understand the concepts of agenda and priority.
The agenda is a schedule used by the engine to queue rules for execution. The agenda exists for an engine instance, and acts on a single policy, not on a series of policies. When a fact is asserted into working memory and the conditions of a given rule are satisfied, the rule is placed on the agenda and executed according to priority. A rule's actions are executed in order from top to bottom, and then the actions of the next rule on the agenda are executed.
The actions belonging to a rule are treated as a block, so that all actions are executed before moving on to the next rule. All actions in a rule block will execute regardless of other actions in the block. For more information about assertion, see Engine Control Functions.
The following example demonstrates how the agenda works.
IF Fact1 == 1 THEN Action1 Action2
IF Fact1 > 0 THEN Action3 Action4
We assert the fact Fact1, which has a value of 1, into the engine. Because the conditions of both Rule 1 and Rule 2 are satisfied, both rules are moved to the agenda for execution of their actions.
Priority for execution is set on each individual rule, with a default priority of 0 for all rules. The priority can range on either side of 0, with larger numbers having higher priority. Actions are executed in order from highest priority to lowest priority.
The following example shows how priority affects the order of execution for the rules.
Rule1 (priority = 0)
IF Fact1 == 1 THEN Discount = 10%
Rule2 (priority = 10)
IF Fact1 > 0 THEN Discount = 15%
The conditions for both rules have been met, but Rule2 is executed first because it has higher priority. The final discount is 10 percent, because it is the result of the action executed for Rule1, as shown in the following table.
Discount = 15%
Discount = 10%