[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