[rules-users] Working Memory and agenda-group

Maciej Gowin maciej.abacus.gowin at gmail.com
Thu Dec 29 18:13:58 EST 2011


But what is funny for me - in rule "Check Object A and Set Default"
1) RHS = insertDefault(drools.getWorkingMemory()) - EXAMPLE IS NOT WORKING
2) RHS = drools.getWorkingMemory().insert(new SomeDefault()) - EXAMPLE IS
WORKING CORRECTLY

2011/12/29 Mauricio Salatino <salaboy at gmail.com>

> Agenda-groups segment the agenda and not the working memory :)
> Probably that is part of your confusion.
>
>
> 2011/12/29 Mike Key <mikey at zenbitz.com>:
> > I am a fairly new Drools user and am trying to understand how working
> memory
> > is segmented when using agenda groups.  I have an agenda-group that has
> > focus set immediately from the session as follows with a few objects
> being
> > inserted:
> >
> > ksession.insert(objectA);
> > ksession.insert(objectB);
> > ksession.getAgenda().getAgendaGroup("Foo").setFocus();
> >
> > I have 2 rules simplified down to illustrate my confusion.  The first
> rule
> > simply sets some default values evaluated in the second rule if objectA
> > exists.  In the example that works I set the defaults in the RHS
> explicitly.
> >  However I want to use these defaults from different agenda-groups, so
> when
> > I put them in a function, the second rule never fires, the activation is
> > created for the first rule but never the second.  Can someone tell me why
> > the use of a function seems to alter the truth of the rule?
> >
> > THIS WORKS:
> >
> > declare SomeDefault
> >   minValueA : Integer
> >   minValueB : Double
> >   maxValueB : Double
> > end
> >
> > rule "Check Object A and Set Default"
> >   agenda-group "Foo"
> >   salience 100
> >   when
> >     $a : ObjectA()
> >   then
> >     default = new SomeDefault()
> >     default.minValueA = 100
> >     default.minValueB = 20.0
> >     default.maxValueB = 20000.0
> >     insert(default)
> > end
> >
> > rule "Use the defaults"
> >   agenda-group "Foo"
> >   salience 100
> >   when
> >     $default : SomeDefault()
> >   then
> >     System.out.println("Default minA=" + $default.minValueA)
> > end
> >
> > THIS DOES NOT WORK:
> >
> > declare SomeDefault
> >   minValueA : Integer
> >   minValueB : Double
> >   maxValueB : Double
> > end
> >
> > rule "Check Object A and Set Default"
> >   agenda-group "Foo"
> >   salience 100
> >   when
> >     $a : ObjectA()
> >   then
> >     insertDefault(drools.getWorkingMemory())
> > end
> >
> > rule "Use the defaults"
> >   agenda-group "Foo"
> >   salience 90
> >   when
> >     $default : SomeDefault()
> >   then
> >     System.out.println("Default minA=" + $default.minValueA)
> > end
> >
> > function void insertDefault(WorkingMemory workingMemory) {
> >   SomeDefault default = new SomeDefault();
> >   default.setMinValueA(100);
> >   default.setMinValueB(20.0);
> >   default.setMaxValueB(20000.0);
> >   workingMemory.insert(default);
> > }
> >
> > In the latter (non-working) example the first rule activates and then
> drools
> > returns, it never even attempts to try to fire the second rule.  However
> in
> > the working example BOTH rules fire as I would expect.  I am guessing
> this
> > is a simple misunderstanding on my part.  Any assistance in understanding
> > why this nuance doesn't seem to work would be greatly appreciated.
> >
> > Thanks.
> >
> > MiKey
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
>
>
>
> --
>  - CTO @ http://www.plugtree.com
>  - MyJourney @ http://salaboy.wordpress.com
>  - Co-Founder @ http://www.jugargentina.org
>  - Co-Founder @ http://www.jbug.com.ar
>
>  - Salatino "Salaboy" Mauricio -
>
> _______________________________________________
> 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/20111230/6671b7c1/attachment.html 


More information about the rules-users mailing list