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 , 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.
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com