Proposed change:
Whenever a ruleflow-group becomes active or an agenda-group
receives the focus,
any rule within that group that has lock-on-active set to true will not be activated
any more; irrespective of the origin of the update, the activation of a matching
rule is discarded. This is a stronger version of no-loop, because the change
could now be caused not only by the rule itself. It's ideal for calculation rules where
you have a number of rules
that modify a fact and you don't want any rule
re-matching and
firing again. Only when the
ruleflow-group is no longer active or the
agenda-group loses the focus
those rules with lock-on-active set to true become
eligible again for their activations to be placed onto the agenda.
OK?
-W
On Sun, Mar 15, 2009 at 2:24 PM, Edson Tirelli
<tirelli@post.com> wrote:
Wolfgang,
The Rete algorithm eagerly reevaluate rules when changes are made to data, does not matter if the rules belong to the active group or not. If a rule in a non-active group is fully matched, it will be added to the agenda. The difference is: rules in non-active groups are not allowed to *fire*, so they will sit in the agenda until they are canceled by other changes to data or their group becomes active, allowing them to fire.
Now, what lock-on-active does is: it prevents the fully matched rules on active groups that contain lock-on-active to add the activation to the agenda.
Regarding your question of [4], does not matter who makes the change to data. Even changes made by the application are caught by this scenario. The scenario is: if the rule would add an activation of itself to the agenda, but it has lock-on-active true and its group is active, the activation will be discarded instead of added.
You are right. Docs are not clear. Thank you for helping.
Edson
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users