[rules-users] Limiting rule evaluation--not firing

Vincent Legendre vincent.legendre at eurodecision.com
Mon Mar 21 09:33:38 EDT 2011


And what about ruleflow-group ?
There is no network filtering for that too ? The ruleflow-group behaves 
like an agenda filter, but still evaluate all nodes ?
Could we imagine setting "tags" to nodes, and stop propagation for node 
that does not declare the current task tag ?


Le 21/03/2011 14:20, Edson Tirelli a écrit :
>
>    The algorithm as is does eager evaluation, as for the general case 
> that is still better than doing selective evaluation.
>
>    If, in your case, the decision of which rules to fire is an 
> arbitrary application decision, and not based on the actual 
> constraints of the rules themselves, then the only way would be by 
> creating a control fact:
>
> rule 1
> when
>    ControlFact( phase == Phase.ONE )
> ...
>
> rule 2
> when
>    ControlFact( phase == Phase.TWO )
> ...
>
>    This way, if the control fact is the first pattern in each rule it 
> effectively disables all the beta evaluations for rules of phases 
> other than the current one. Just be aware that by blocking the eager 
> evaluation this way, phase switches are heavier than without the 
> control fact, where most constraints were already previously 
> evaluated. Obvious, but worth saying out loud... :)
>
>    There is also a feature that Leonardo is working on that makes the 
> engine automatically unlink and relink parts of the network, based on 
> the existence and possibility of matching the other required facts in 
> a rule LHS. It might achieve similar results to what you are looking 
> for in some cases, but that is totally based on the constraints in 
> there and not on any arbitrary application decision.
>
>    Edson
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110321/5bc407fe/attachment.html 


More information about the rules-users mailing list