[jboss-svn-commits] JBL Code SVN: r25514 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/common and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Mar 5 23:11:38 EST 2009
Author: KrisVerlaenen
Date: 2009-03-05 23:11:37 -0500 (Thu, 05 Mar 2009)
New Revision: 25514
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
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java
Log:
- fixed issue whit active mode when activations were added during execution of queue
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-03-06 03:33:16 UTC (rev 25513)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java 2009-03-06 04:11:37 UTC (rev 25514)
@@ -975,6 +975,40 @@
list.size() );
}
+ public void testRuleFlowGroupInActiveMode() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflowgroup.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+
+ final StatefulSession workingMemory = ruleBase.newStatefulSession();
+ final List list = new ArrayList();
+ workingMemory.setGlobal( "list",
+ list );
+
+ new Thread(new Runnable() {
+ public void run() {
+ workingMemory.fireUntilHalt();
+ }
+ }).start();
+
+ workingMemory.insert( "Test" );
+ assertEquals( 0,
+ list.size() );
+
+ workingMemory.getAgenda().activateRuleFlowGroup( "Group1" );
+
+ Thread.sleep(1000);
+
+ assertEquals( 1,
+ list.size() );
+
+ workingMemory.halt();
+ }
+
public void testRuleFlow() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) );
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-03-06 03:33:16 UTC (rev 25513)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2009-03-06 04:11:37 UTC (rev 25514)
@@ -1059,6 +1059,7 @@
this.halt.set( false );
while ( continueFiring( -1 ) ) {
boolean fired = fireNextItem( agendaFilter );
+ fired = fired || !((AbstractWorkingMemory) this.workingMemory).getActionQueue().isEmpty();
this.workingMemory.executeQueuedActions();
if ( !fired ) {
try {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java 2009-03-06 03:33:16 UTC (rev 25513)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
@@ -167,6 +167,8 @@
final Activation activation = node.getActivation();
((InternalAgendaGroup) activation.getAgendaGroup()).add( activation );
}
+ // making sure we re-evaluate agenda in case we are waiting for activations
+ ((InternalAgenda) workingMemory.getAgenda()).notifyHalt();
}
public void clear() {
More information about the jboss-svn-commits
mailing list