[jboss-svn-commits] JBL Code SVN: r26244 - in labs/jbossrules/trunk: drools-compiler/src/test/resources/org/drools/integrationtests and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Apr 24 11:20:15 EDT 2009


Author: KrisVerlaenen
Date: 2009-04-24 11:20:15 -0400 (Fri, 24 Apr 2009)
New Revision: 26244

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflowgroup2.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
Log:
 - fixed issue with clearing ruleflow group during execution of an activation in that group

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2009-04-24 15:11:39 UTC (rev 26243)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2009-04-24 15:20:15 UTC (rev 26244)
@@ -975,6 +975,34 @@
                       list.size() );
     }
 
+    public void testRuleFlowGroupDeactivate() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflowgroup2.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        ruleBase = SerializationHelper.serializeObject( ruleBase );
+
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        
+        final List list = new ArrayList();
+        workingMemory.setGlobal( "list",
+                                 list );
+
+        workingMemory.insert( "Test" );
+        workingMemory.fireAllRules();
+        assertEquals( 0,
+                      list.size() );
+        assertEquals( 2, workingMemory.getAgenda().getRuleFlowGroup( "Group1" ).size() );
+
+        workingMemory.getAgenda().activateRuleFlowGroup( "Group1" );
+        workingMemory.fireAllRules();
+
+        assertEquals( 0,
+                      list.size() );
+    }
+
     public void testRuleFlowGroupInActiveMode() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflowgroup.drl" ) ) );

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflowgroup2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflowgroup2.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflowgroup2.drl	2009-04-24 15:20:15 UTC (rev 26244)
@@ -0,0 +1,21 @@
+package com.sample
+ 
+import java.util.List;
+
+global List list
+
+rule "Sample Rule" ruleflow-group "Group1" salience 20
+	when
+		s: String()
+	then
+	    System.out.println("Clearing ruleflow-group");
+	    drools.getWorkingMemory().getAgenda().clearAndCancelRuleFlowGroup("Group1");
+end
+
+rule "Sample Rule 2" ruleflow-group "Group1"
+	when
+		s: String()
+	then
+	    System.out.println("Adding string " + s);
+		list.add(s);
+end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java	2009-04-24 15:11:39 UTC (rev 26243)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java	2009-04-24 15:20:15 UTC (rev 26244)
@@ -950,7 +950,11 @@
 
         if ( activation.getRuleFlowGroupNode() != null ) {
             final InternalRuleFlowGroup ruleFlowGroup = activation.getRuleFlowGroupNode().getRuleFlowGroup();
-            ruleFlowGroup.removeActivation( activation );
+            // it is possible that the ruleflow group is no longer active if it was
+            // cleared during execution of this activation
+            if (ruleFlowGroup.isActive()) {
+            	ruleFlowGroup.removeActivation( activation );
+            }
         }
 
         // if the tuple contains expired events 




More information about the jboss-svn-commits mailing list