[rules-users] Run a set of rules in a group B from a rule in agroup A

Thierry B jboss-rules at tbzone.org
Wed Jan 21 08:25:47 EST 2009


Hello,

When you said  "Wrong. The rules won't be executed (read as activations -
RHS -
won't be run) but you can't stop the LHS being evaluated.", I don't
understand : if we use fireAllRules(), those rules will be executed
inevitably no?
I don't understand how we can decide that those rules (from a certain group)
won't be executed.

Thanks :-)



Anstis, Michael (M.) wrote:
> 
> Hi,
> 
> See below.
>  
> "executing a rule" is really two parts: LHS pattern matching (which
> can't be stopped for a given RuleBase) and execution of the RHS (which
> can be controlled by the agenda and truth maintenance).
> 
> I hope my time away hasn't led to me giving wrong advice.
> 
> Mike
> 
> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Thierry B
> Sent: 21 January 2009 12:53
> To: rules-users at lists.jboss.org
> Subject: RE: [rules-users] Run a set of rules in a group B from a rule
> in agroup A
> 
> 
> Hello,
> 
> So if I've well understand :
> 
> - before calling fireAllRules(), Drools know for all rules (from any
> group)
> definied in DRL files, those which all patterns in the LHS of a rule are
> matched, and those rules are placed on a agenda. 
> 
> At which moment exactly, Drools verified from a rule that all of its
> pattern
> in the LHS are matched, if it's before callling fireAllRules() ?
> 
>>>> Yes, LHS is evaluated on workingMemory.insert(o). A call to
> fireAllRules() executes the activations on the agenda (i.e. RHS queued
> as a consequence of LHS being matched on workingMemory.insert(o)).
> 
> - And fireAllRules() permit to execute all rules that are placed on
> agenda
> 
>>>> Yes
> 
> - When using setFocus() from a java class or a rule, we can control the
> order of rules to specify to execute rules from group B, and group C... 
> 
>>> I believe so.
> 
> - So it's not possible to tell Drools that we don't want to execute a
> group
> of rules if a rule A is not matched : in that group of rules : those
> which
> all paterns match LHS will be inevitably executed.
> 
>>>> Wrong. The rules won't be executed (read as activations - RHS -
> won't be run) but you can't stop the LHS being evaluated.
> 
> All these points that I said, are exact?
> 
> Thanks :-)
> 
> 
> Anstis, Michael (M.) wrote:
>> 
>> Please accept that my knowledge is based on 4.x and there might be
> other
>> alternatives in 5.
>> 
>> Rules are not "ran" but their patterns (LHS) evaluated as facts
>> (objects) are inserted into Working Memory. When all patterns in the
> LHS
>> of a rule are matched activations are placed on the agenda for
> execution
>> of the consequence (RHS) when fireAllRules() is called (or other
>> mechanisms to run what is on the agenda are invoked; such as
> RuleFlow).
>> So you could have rules in Group A cause Group B to receive the focus
>> but it is the RHS's execution order you control and not the pattern
>> matching - which will happen for Group A and Group B when facts are
>> inserted into WM.
>> 
>> Look at Agenda Groups and RuleFlow. This should help.
>> 
>> With kind regards,
>> 
>> Mike
>> 
>> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/Run-a-set-of-rules-in-a-group-B-from-a-rule-in-a-g
> roup-A-tp21580767p21582595.html
> Sent from the drools - user mailing list archive at Nabble.com.
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Run-a-set-of-rules-in-a-group-B-from-a-rule-in-a-group-A-tp21580767p21583108.html
Sent from the drools - user mailing list archive at Nabble.com.




More information about the rules-users mailing list