[rules-users] Need help with setFocus

Wolfgang Laun wolfgang.laun at gmail.com
Wed Jun 24 02:35:03 EDT 2009


It's impossible to diagnose exactly what goes on without seeing the LHS
patterns in detail. One possible reason for the rules rule[234] in groupX
not firing the second time that group is given focus is that none of the
objects participating in the LHS of the three rules has changed since the
first time.

Mixing condition evaluation by pattern matching with explicit control via
a-groups and the like is tricky and apt to create surprises galore. Try to
write the LHS so that they fully express the condition for firing; use
groups only as a last resort.

Hint: duplication of RHS code can be avoided by defining and calling
functions.

-W


On Wed, Jun 24, 2009 at 4:42 AM, new2drools <rkbeach at gmail.com> wrote:

>
> Hi All,
>
> Need some help with understanding setFocus.
>
> I have the following use case:
>
> if (condition1) {
>
>  if (condition2) {
>
>  } else if (condition3) {
>
>  } else if (condition 4) {
>
>  }
>
> }
>
> if (condition5) {
>
>  if (condition2) {
>
>  } else if (condition3) {
>
>  } else if (condition 4) {
>
>  }
>
> }
>
> I created 3 rules (rule2, rule3, rule4) for checking condition2,
> condition3,
> condition4 and
> created 1 agenda group (groupX) for them.
>
> I created 2 rules (rule1, rule5) for checking condition1, condition5 and
> created 1 agenda group(groupY) for them.
>
> rule "rule1"
>  agenda-group "groupY"
>
>  when
>    //
>  then
>   drools.setFocus("groupX");
> end
>
> rule "rule3"
>  agenda-group "groupX"
>  activation-group "someActiveGroup"
>
>  when
>    //
>  then
>   //
> end
>
> >From the java code:
>
> ksession.getAgenda().getAgendaGroup("groupY").setFocus();
>
> Problem: The first time, drools.setFocus("groupX") is invoked, I see that
> it's working fine. rule2 or rule3 or rule4 get triggered. But, the SECOND
> time that drools.setFocus("groupX") is invoked, I don't see that any rule
> in
> agenda-group groupX is being invoked...even though one of the rule's LHS
> explicitly matches...thinking that the activation-group is cancelling all
> the activation's (after one rule in that activation group is fired), I even
> removed the activation-group statement. But, it didn't help...ideally, I
> would like to bunch rule2, rule3, rule4 in one activation group.
>
> Can you please let me know as to why the second invocation of setFocus is
> not working? I even tried to remove everything in LHS of rule2/3/4, to see
> if the second invocation would work...it doesn't...
>
> Thanks!!
> --
> View this message in context:
> http://www.nabble.com/Need-help-with-setFocus-tp24177742p24177742.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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090624/631c9221/attachment.html 


More information about the rules-users mailing list