For all those wondering how agenda groups work. I just commited the integration test that shows agenda groups and autofocus working. this is a much more powerful way to do execution flow control. This will be part of the beta 2 release later today.

   public void testAgendaGroups() throws Exception {
       PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_AgendaGroups.drl" ) ) );
       Package pkg = builder.getPackage();
RuleBase ruleBase = getRuleBase();
       ruleBase.addPackage( pkg );
       WorkingMemory workingMemory = ruleBase.newWorkingMemory();
List list = new ArrayList(); workingMemory.setGlobal( "list", list ); Cheese brie = new Cheese( "brie", 12 ); workingMemory.assertObject( brie ); workingMemory.fireAllRules(); assertEquals( 7, list.size() ); assertEquals( "group3", list.get( 0 ) );
       assertEquals( "group4", list.get( 1 ) );
       assertEquals( "group3", list.get( 2 ) );
       assertEquals( "MAIN", list.get( 3 ) );
       assertEquals( "group1", list.get( 4 ) );
       assertEquals( "group1", list.get( 5 ) );
assertEquals( "MAIN", list.get( 6 ) ); }
-----------------------------------------

package org.drools.test;

import org.drools.Cheese;

global java.util.List list;

rule "test MAIN 1"
   salience  10
   when
       Cheese( )
   then
       list.add( "MAIN" );
       drools.setFocus( "group1" );
end

rule "test MAIN 2"
   when
       Cheese( )
   then
       list.add( "MAIN" );
end

rule "test group1 1"
   agenda-group "group1"
   when
       Cheese( )
   then
       list.add( "group1" );
end
rule "test group1 2"
   agenda-group "group1"
   when
       Cheese( )
   then
       list.add( "group1" );
end
rule "test group2"
   agenda-group "group2"
   when
       Cheese( )
   then
       list.add( "group2" );
end
rule "test group3 1"
   salience 5
   agenda-group "group3"
   auto-focus true
when
       Cheese( )
then list.add( "group3" ); drools.setFocus( "group4" ); end
rule "test group3 2"
   agenda-group "group3"
   when
       Cheese( )
   then
       list.add( "group3" );
end
rule "test group4"
   agenda-group "group4"
   when
       Cheese( )
   then
       list.add( "group4" );
end

Reply via email to