yes.. you are missing that if you don't put the agenda group in the stack it
will never be used.
Like Bali said "Whenever the focus is set
to a different group, Drools adds this group to a stack". If you don't set
the focus to another agenda group, the only one in the Stack is MAIN.

On Thu, Jan 21, 2010 at 1:11 PM, Pritam <[email protected]> wrote:

>
> I'm not quite sure howDrools processes and partitions Agenda based on
> agenda-groups as the documentation conflicts with a real example. As per
> the
> documentation in Drools site and Michael Bali's book, page 102
>
> "Drools maintains a stack of Agenda groups. Whenever the focus is set to
> true, the active agenda-group is automatically changed to rule's agenda
> group. Drools maintains a stack of agenda groups. Whenever the focus is set
> to a different group, Drools adds this group to a stack. When there are no
> rules to fire from the agenda group, Drools pops from the stack and sets
> the
> agenda group to the next one."
>
> However, when I run a simple example with two rules having agenda groups
> set, none of the rules are fired unless the agenda-group is explicitly set
> to runtime. Based on the above example, I would expect Drools Agenda to run
> all rules under "MAIN" and since there are none, it should pop it out and
> point to the next available group and so on.
>
> Am I missing something here?
>
>
> package com.sample
>
> import com.sample.DroolsTest.Message;
>
> rule "Hello World"
> agenda-group "group1" # comment this and rule fires
>        when
>                m : Message( status == Message.HELLO, myMessage : message )
>        then
>                System.out.println( myMessage );
>                m.setMessage( "Goodbye cruel world" );
>                m.setStatus( Message.GOODBYE );
>                update( m );
> end
>
> rule "GoodBye"
> agenda-group "group 2" # comment this and rule fires
>        when
>                Message( status == Message.GOODBYE, myMessage : message )
>        then
>                System.out.println( myMessage );
> end
>
>
> DroolsTest:-
>
> KnowledgeBase kbase = readKnowledgeBase();
> StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
> Message message = new Message();
> message.setMessage("Hello World");
> message.setStatus(Message.HELLO);
> ksession.insert(message);
> // ksession.getAgenda().getAgendaGroup("group1").setFocus();   // enable
> this only group1 is fired, not // group2
> ksession.fireAllRules();
> --
> View this message in context:
> http://n3.nabble.com/Understanding-agenda-group-doesn-t-work-as-documented-in-book-or-docs-tp133386p133386.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
- http://salaboy.wordpress.com
- http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to