[rules-users] Understanding agenda-group (doesn't work as documented in book or docs)

Pritam infinity2heaven at gmail.com
Thu Jan 21 11:11:17 EST 2010


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.



More information about the rules-users mailing list