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(a)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(a)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(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users