This is an archive of an inactive wiki and cannot be modified.

Topic: « Conflict Resolution Strategies » for available / RIF-relevant production rule engines.

This page is for all PR system developers (including vendors) to describe in a few sentences the default conflict resolution strategy in their engine, and to what degree and how it can be parametrised or programmed.

Conflict resolution strategy: The strategy used to select which rule instance(s) is (are) actually fired at the firing stage of a cycle.

Name of PR system

Owner organisation

contact email

Short description for resolution strategy and options

TIBCO BusinessEvents

TIBCO Software


At runtime, the engine always evaluates rules against new concept instances and newly asserted events. It might re-evaluate rules if the value of properties in concept instances or scorecards changes, depending on the rule:
* If a rule has no condition, the engine does not re-evaluate the rule
* If no condition in a rule uses properties (this does not apply to system attributes), the engine does not re-evaluate the rule
* If any condition uses properties, the engine re-evaluates the rules only when the value of one of these properties changes
* If the engine cannot calculate dependencies from the condition, for example, if you pass an instance to a function, it re-evaluates the rule every time the concept instance changes.

Oracle Business Rules (OBR)



Conflict resolution is the order that an activation is removed from the agenda and its actions executed. An activation is a rule instance with all variables bound. In OBR, multiple rulesets may be loaded. There is a stack of ruleset names that rule actions may manipulate. Only activations of rules in the ruleset named on the top of the ruleset stack may be fired. The ruleset stack is automatically popped when there are no more activations of rules in that ruleset in the agenda. Within a ruleset, activations are fired in priority order. Rules in the same ruleset and with the same priority fire in an unspecified order. Rules can also be specified to override other rules in the same ruleset. Override combines priority and mutual exclusion. The overriding rule activation and the overridden rule activations are all removed from the agenda, but only the overriding rule fires.




The engine represents the matching of the rule condition against the working memory object by creating a rule instance posted in the agenda. The agenda is in charge of the conflict resolution strategy implementation and decides which rule instance will be>The standard strategy uses the following principle:
Refraction - the refraction principle states that each time a rule instance has been executed, it should be removed from the agenda. It prevents multiple executions of the same rule against the same match. Those executions are possible if one of the rule's conditions become unsatisfied between the rule executions;
Priority - the rule priority, which is an integer, determines which rule should be executed before the others;
Recency - if the priorities are the same, newer rule instances corresponding to newer matches are executed first;
Determinism - other internal and hidden comparators are applied if necessary between rule instance, ensuring that a ruleset execution based on the same initial facts be deterministic and lead to the same conclusions.
The strategy ca be parametrized:
- the agenda rule instances are filtered by a user's filter;
- the agenda rule instances are sorted by applying a user comparator. It defines a partially ordered relation among rules, replacing the priority and recency principles.