[jboss-svn-commits] JBL Code SVN: r25719 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 18 22:31:22 EDT 2009


Author: mark.proctor at jboss.com
Date: 2009-03-18 22:31:22 -0400 (Wed, 18 Mar 2009)
New Revision: 25719

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
Log:
JBRULES-2014 Optional auto fireAllRules for stateless sessions

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java	2009-03-19 02:08:01 UTC (rev 25718)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java	2009-03-19 02:31:22 UTC (rev 25719)
@@ -23,17 +23,20 @@
 import org.drools.impl.StatefulKnowledgeSessionImpl.AgendaEventListenerWrapper;
 import org.drools.impl.StatefulKnowledgeSessionImpl.ProcessEventListenerWrapper;
 import org.drools.impl.StatefulKnowledgeSessionImpl.WorkingMemoryEventListenerWrapper;
+import org.drools.process.command.FireAllRulesCommand;
 import org.drools.reteoo.InitialFactHandle;
 import org.drools.reteoo.InitialFactHandleDummyObject;
 import org.drools.reteoo.ReteooWorkingMemory;
 import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
 import org.drools.rule.EntryPoint;
+import org.drools.runtime.BatchExecution;
 import org.drools.runtime.BatchExecutionResults;
 import org.drools.runtime.Environment;
 import org.drools.runtime.Globals;
 import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.StatelessKnowledgeSession;
 import org.drools.runtime.StatelessKnowledgeSessionResults;
+import org.drools.runtime.impl.BatchExecutionImpl;
 import org.drools.spi.AgendaFilter;
 
 public class StatelessKnowledgeSessionImpl
@@ -207,7 +210,21 @@
         try {
             session.startBatchExecution();
             ((org.drools.process.command.Command)command).execute( session );
-            session.fireAllRules( this.agendaFilter );
+            // did the user take control of fireAllRules, if not we will auto execute
+            boolean autoFireAllRules = true;
+            if ( command instanceof FireAllRulesCommand ) {
+            	autoFireAllRules = false;
+            } else if ( command instanceof BatchExecution ) {
+            	for ( Command nestedCmd : ((BatchExecutionImpl)command).getCommands() ) {
+            		if ( nestedCmd instanceof FireAllRulesCommand ) {
+            			autoFireAllRules = false;
+            			break;
+                    }
+            	}
+            }
+            if ( autoFireAllRules ) {
+            	session.fireAllRules( this.agendaFilter );
+            }
             BatchExecutionResults result = session.getBatchExecutionResult();
             return result;
         } finally {




More information about the jboss-svn-commits mailing list