[jboss-svn-commits] JBL Code SVN: r35037 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime and 38 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 6 20:10:30 EDT 2010


Author: KrisVerlaenen
Date: 2010-09-06 20:10:23 -0400 (Mon, 06 Sep 2010)
New Revision: 35037

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
   labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel
   labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
   labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java
Log:
JBRULES-2679: Mdularize Drools Flow
 - refactoring flow to not use legacy api as much as possible

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -159,6 +159,8 @@
      */
     void removeProcess(String processId);
     
+    Collection<Process> getProcesses();
+    
     /**
      * Create a new StatefulKnowledgeSession using the given session configuration and/or environment.
      * Either one can be null and it will use a default.

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -78,5 +78,7 @@
     void unregisterChannel(String name);
 
     Map< String, Channel> getChannels();
+    
+    KnowledgeSessionConfiguration getSessionConfiguration();
 
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,6 +19,7 @@
 import org.drools.SessionConfiguration;
 import org.drools.WorkingMemoryEntryPoint;
 import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.common.InternalRuleBase;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
@@ -478,12 +479,12 @@
         
     }
 
-    public KnowledgeRuntime getKnowledgeRuntime() {
+    public InternalKnowledgeRuntime getKnowledgeRuntime() {
         // TODO Auto-generated method stub
         return null;
     }
 
-    public void setKnowledgeRuntime(KnowledgeRuntime kruntime) {
+    public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
         // TODO Auto-generated method stub
         
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -227,7 +227,7 @@
     }
 
     public KnowledgeRuntime getKnowledgeRuntime() {
-        return new StatefulKnowledgeSessionImpl( (ReteooWorkingMemory) this.workingMemory );
+        return ((ReteooWorkingMemory) this.workingMemory).getKnowledgeRuntime();
     }
 
     public Activation getActivation() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -28,6 +28,7 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.reteoo.LeftTuple;
 import org.drools.rule.Declaration;
+import org.drools.runtime.KnowledgeRuntime;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
 import org.mvel2.CompileException;
@@ -67,6 +68,7 @@
     private Map globals;
  
     private WorkingMemory workingMemory;
+    private KnowledgeRuntime kruntime;
  
     private Map localVariables;
     
@@ -111,6 +113,7 @@
         previousDeclarations = (Map<String, Declaration>) in.readObject();
         globals = (Map) in.readObject();
         workingMemory = (WorkingMemory) in.readObject();
+        kruntime = (KnowledgeRuntime) in.readObject();
         localVariables = (Map) in.readObject();
     }
  
@@ -122,6 +125,7 @@
         out.writeObject(previousDeclarations);
         out.writeObject(globals);
         out.writeObject(workingMemory);
+        out.writeObject(kruntime);
         out.writeObject(localVariables);
     }
  
@@ -194,6 +198,26 @@
         }
     }
  
+    public void setContext(final Tuple tuple,
+                           final Object object,
+                           final KnowledgeRuntime kruntime,
+                           final Map<String, Object> variables ) {
+		if (tuple != null) {
+			this.tupleObjects = ((LeftTuple) tuple).toFactHandles();
+		}
+		this.object = object;
+		this.kruntime = kruntime;
+		if (variables == null) {
+			if (this.localVariables == null) {
+				this.localVariables = new HashMap();
+			} else {
+				this.localVariables.clear();
+			}
+		} else {
+			this.localVariables = variables;
+		}
+	}
+
     private Object getTupleObjectFor(Declaration declaration) {
         int i = declaration.getPattern().getOffset();
         return ( i < this.tupleObjects.length ) ? this.tupleObjects[i].getObject() : null;
@@ -216,7 +240,13 @@
     }
  
     public Object getValue(final String identifier) {
-        return this.workingMemory.getGlobal(identifier);
+    	if (this.workingMemory != null) {
+    		return this.workingMemory.getGlobal(identifier);
+    	}
+    	if (this.kruntime != null) {
+    		return this.kruntime.getGlobal(identifier);
+    	}
+    	return null;
     }
  
     public Object getLocalValue(final String identifier) {

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,135 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.base.mvel;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.util.List;
-
-import org.drools.rule.MVELDialectRuntimeData;
-import org.drools.rule.Package;
-import org.drools.WorkingMemory;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
-import org.drools.spi.ProcessContext;
-import org.mvel2.MVEL;
-import org.mvel2.compiler.CompiledExpression;
-import org.mvel2.debug.DebugTools;
-import org.mvel2.integration.impl.SimpleValueResolver;
-
-public class MVELAction
-    implements
-    Action,
-    MVELCompileable,
-    Externalizable {
-    private static final long       serialVersionUID = 510l;
-    
-    private MVELCompilationUnit unit;
-    private String id;        
-
-    private Serializable      expr;
-    private DroolsMVELFactory prototype;
-    private List<String> variableNames;
-
-    public MVELAction() {
-    }
-
-    public MVELAction(final MVELCompilationUnit unit,
-                              final String id) {
-        this.unit = unit;
-        this.id = id;
-    }
-    
-    public void setVariableNames(List<String> variableNames) {
-    	this.variableNames = variableNames;
-    }
-
-    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        id = in.readUTF();
-        unit = ( MVELCompilationUnit ) in.readObject();
-        variableNames = (List<String>) in.readObject();
-//        expr    = (Serializable)in.readObject();
-//        prototype   = (DroolsMVELFactory)in.readObject();
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeUTF( id );
-        out.writeObject( unit );
-        out.writeObject(variableNames);
-//        out.writeObject(expr);
-//        out.writeObject(prototype);
-    }
-    
-    public void compile(ClassLoader classLoader) {
-        expr = unit.getCompiledExpression( classLoader );
-        prototype = unit.getFactory( );
-    } 
-
-    public String getDialect() {
-        return id;
-    }
-    
-    public void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory, ProcessContext context) throws Exception {
-        // must clone to avoid concurrency problems
-        DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
-        
-        factory.addResolver("context", new SimpleValueResolver(context));
-        factory.addResolver("kcontext", new SimpleValueResolver(context));
-        if (variableNames != null) {
-        	for (String variableName: variableNames) {
-        		factory.addResolver(
-    				variableName, new SimpleValueResolver(context.getVariable(variableName)));
-        	}
-        }
-        
-        factory.setContext( null,
-                            knowledgeHelper,
-                            null,
-                            workingMemory,
-                            null );
-        
-        Package pkg = workingMemory.getRuleBase().getPackage( "MAIN" );
-        if ( pkg != null ) {
-            MVELDialectRuntimeData data = ( MVELDialectRuntimeData ) pkg.getDialectRuntimeRegistry().getDialectData( id );
-            factory.setNextFactory( data.getFunctionFactory() );
-        }        
-        
-        CompiledExpression compexpr = (CompiledExpression) this.expr;
-
-        if ( MVELDebugHandler.isDebugMode() ) {
-            if ( MVELDebugHandler.verbose ) {
-                System.out.println( DebugTools.decompile( compexpr ) );
-            }
-            MVEL.executeDebugger( compexpr,
-                                  null,
-                                  factory );
-        } else {
-            MVEL.executeExpression( compexpr,
-                                    null,
-                                    factory );
-        }
-
-    }
-
-    public Serializable getCompExpr() {
-        return expr;
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,146 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.base.mvel;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.util.List;
-
-import org.drools.rule.MVELDialectRuntimeData;
-import org.drools.rule.Package;
-import org.drools.WorkingMemory;
-import org.drools.spi.ProcessContext;
-import org.drools.spi.ReturnValueEvaluator;
-import org.mvel2.MVEL;
-import org.mvel2.compiler.CompiledExpression;
-import org.mvel2.debug.DebugTools;
-import org.mvel2.integration.impl.SimpleValueResolver;
-
-public class MVELReturnValueEvaluator
-    implements
-    ReturnValueEvaluator,
-    MVELCompileable,
-    Externalizable {
-    private static final long   serialVersionUID = 510l;
-
-    private MVELCompilationUnit unit;
-    private String              id;
-
-    private Serializable        expr;
-    private DroolsMVELFactory   prototype;
-    private List<String>        variableNames;
-
-    public MVELReturnValueEvaluator() {
-    }
-
-    public MVELReturnValueEvaluator(final MVELCompilationUnit unit,
-                                    final String id) {
-        this.unit = unit;
-        this.id = id;
-    }
-
-    public void setVariableNames(List<String> variableNames) {
-    	this.variableNames = variableNames;
-    }
-
-    public void readExternal(ObjectInput in) throws IOException,
-                                            ClassNotFoundException {
-        id = in.readUTF();
-        unit = (MVELCompilationUnit) in.readObject();
-        variableNames = (List<String>) in.readObject();
-        //        expr    = (Serializable)in.readObject();
-        //        prototype   = (DroolsMVELFactory)in.readObject();
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeUTF( id );
-        out.writeObject( unit );
-        out.writeObject(variableNames);
-        //        out.writeObject(expr);
-        //        out.writeObject(prototype);
-    }
-
-    public void compile(ClassLoader classLoader) {
-        expr = unit.getCompiledExpression( classLoader );
-        prototype = unit.getFactory();
-    }
-
-    public String getDialect() {
-        return this.id;
-    }
-
-    public Object evaluate(final WorkingMemory workingMemory,
-                           ProcessContext context) throws Exception {
-        DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
-        
-        factory.addResolver("context", new SimpleValueResolver(context));
-        factory.addResolver("kcontext", new SimpleValueResolver(context));
-        if (variableNames != null) {
-        	for (String variableName: variableNames) {
-        		factory.addResolver(
-    				variableName, new SimpleValueResolver(context.getVariable(variableName)));
-        	}
-        }
-        
-        factory.setContext( null,
-                            null,
-                            null,
-                            workingMemory,
-                            null );
-        
-        // do we have any functions for this namespace?
-        Package pkg = workingMemory.getRuleBase().getPackage( "MAIN" );
-        if ( pkg != null ) {
-            MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( this.id );
-            factory.setNextFactory( data.getFunctionFactory() );
-        }
-
-        CompiledExpression compexpr = (CompiledExpression) this.expr;
-
-        Object value;
-        if ( MVELDebugHandler.isDebugMode() ) {
-            if ( MVELDebugHandler.verbose ) {
-                System.out.println( DebugTools.decompile( compexpr ) );
-            }
-            value = MVEL.executeDebugger( compexpr,
-                                          null,
-                                          factory );
-        } else {
-            value = MVEL.executeExpression( compexpr,
-                                            null,
-                                            factory );
-        }
-
-        if ( !(value instanceof Boolean) ) {
-            throw new RuntimeException( "Constraints must return boolean values" );
-        }
-        return ((Boolean) value).booleanValue();
-
-    }
-
-    public Serializable getCompExpr() {
-        return expr;
-    }
-    
-    public String toString() {
-        return this.unit.getExpression();
-    }    
-
-}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -40,13 +40,13 @@
 import org.drools.command.runtime.SetGlobalCommand;
 import org.drools.command.runtime.UnregisterChannelCommand;
 import org.drools.command.runtime.UnregisterExitPointCommand;
+import org.drools.command.runtime.process.AbortProcessInstanceCommand;
 import org.drools.command.runtime.process.AbortWorkItemCommand;
 import org.drools.command.runtime.process.CompleteWorkItemCommand;
 import org.drools.command.runtime.process.GetProcessEventListenersCommand;
 import org.drools.command.runtime.process.GetProcessInstanceCommand;
 import org.drools.command.runtime.process.GetProcessInstancesCommand;
 import org.drools.command.runtime.process.RegisterWorkItemHandlerCommand;
-import org.drools.command.runtime.process.AbortProcessInstanceCommand;
 import org.drools.command.runtime.process.SignalEventCommand;
 import org.drools.command.runtime.process.StartProcessCommand;
 import org.drools.command.runtime.rule.AgendaGroupSetFocusCommand;
@@ -72,15 +72,13 @@
 import org.drools.event.process.ProcessEventListener;
 import org.drools.event.rule.AgendaEventListener;
 import org.drools.event.rule.WorkingMemoryEventListener;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.rule.EntryPoint;
 import org.drools.runtime.Calendars;
 import org.drools.runtime.Channel;
-import org.drools.runtime.CommandExecutor;
 import org.drools.runtime.Environment;
-import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.ExitPoint;
 import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.ObjectFilter;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
@@ -463,5 +461,10 @@
         // TODO: implement thiss        
         return null;
     }
+    
+    public KnowledgeSessionConfiguration getSessionConfiguration() {
+    	// TODO: implement this
+    	return null;
+    }
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -204,7 +204,7 @@
 
     private Map<InternalFactHandle, PropagationContext>          modifyContexts;
 
-    private KnowledgeRuntime                                     kruntime;
+    private InternalKnowledgeRuntime                             kruntime;
 
     private Map<String, ExitPoint>                               exitPoints;
 
@@ -379,8 +379,6 @@
         this.opCounter = new AtomicLong( 0 );
         this.lastIdleTimestamp = new AtomicLong( -1 );
 
-        this.processRuntime = createProcessRuntime();
-
         initManagementBeans();        
     }
 
@@ -1775,11 +1773,12 @@
         }
     }
 
-    public void setKnowledgeRuntime(KnowledgeRuntime kruntime) {
+    public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
         this.kruntime = kruntime;
+        this.processRuntime = createProcessRuntime();
     }
 
-    public KnowledgeRuntime getKnowledgeRuntime() {
+    public InternalKnowledgeRuntime getKnowledgeRuntime() {
         return this.kruntime;
     }
 

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,25 @@
+package org.drools.common;
+
+import java.util.Queue;
+
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.process.InternalProcessRuntime;
+import org.drools.time.TimerService;
+
+public interface InternalKnowledgeRuntime extends KnowledgeRuntime {
+
+	TimerService getTimerService();
+	
+	void startOperation();
+	
+	void endOperation();
+	
+	Queue<WorkingMemoryAction> getActionQueue();
+	
+	void executeQueuedActions();
+	
+	void queueWorkingMemoryAction(WorkingMemoryAction action);
+	
+	InternalProcessRuntime getProcessRuntime();
+	
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -144,9 +144,9 @@
      */
     public PartitionTaskManager getPartitionTaskManager( RuleBasePartitionId partitionId );
     
-    public void setKnowledgeRuntime(KnowledgeRuntime kruntime);
+    public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime);
     
-    public KnowledgeRuntime getKnowledgeRuntime();
+    public InternalKnowledgeRuntime getKnowledgeRuntime();
     
     /**
      * @deprecated Use {@link #getChannels()} instead.

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,10 @@
+package org.drools.impl;
+
+import org.drools.KnowledgeBase;
+import org.drools.RuleBase;
+
+public interface InternalKnowledgeBase extends KnowledgeBase {
+	
+	RuleBase getRuleBase();
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,6 +21,7 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -80,7 +81,7 @@
 
 public class KnowledgeBaseImpl
     implements
-    KnowledgeBase,
+    InternalKnowledgeBase,
     Externalizable {
     public RuleBase                                                          ruleBase;
     
@@ -238,14 +239,13 @@
     }
 
     public Process getProcess(String processId) {
-        Process p = null;
-        for( Package pkg : this.ruleBase.getPackages() ) {
-            p = pkg.getRuleFlows().get( processId );
-            if( p != null ) break;
-        }
-        return p;
+        return ((InternalRuleBase) this.ruleBase).getProcess(processId);
     }
 
+    public Collection<Process> getProcesses() {
+    	return Arrays.asList(((InternalRuleBase) this.ruleBase).getProcesses());
+    }
+
     public Rule getRule(String packageName,
                         String ruleName) {
         return this.ruleBase.getPackage( packageName ).getRule( ruleName );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -22,6 +22,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Queue;
 
 import org.drools.FactException;
 import org.drools.KnowledgeBase;
@@ -36,10 +37,12 @@
 import org.drools.common.AbstractWorkingMemory;
 import org.drools.common.InternalAgenda;
 import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.InternalWorkingMemoryEntryPoint;
 import org.drools.common.ObjectStore;
 import org.drools.common.ObjectTypeConfigurationRegistry;
+import org.drools.common.WorkingMemoryAction;
 import org.drools.event.ActivationCancelledEvent;
 import org.drools.event.ActivationCreatedEvent;
 import org.drools.event.AfterActivationFiredEvent;
@@ -72,6 +75,7 @@
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.ExitPoint;
 import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.impl.ExecutionResultImpl;
 import org.drools.runtime.process.InternalProcessRuntime;
@@ -88,13 +92,16 @@
 import org.drools.runtime.rule.impl.NativeQueryResults;
 import org.drools.spi.Activation;
 import org.drools.time.SessionClock;
+import org.drools.time.TimerService;
 
 public class StatefulKnowledgeSessionImpl
     implements
     StatefulKnowledgeSession,
-    InternalWorkingMemoryEntryPoint {
+    InternalWorkingMemoryEntryPoint,
+    InternalKnowledgeRuntime {
+	
     public ReteooWorkingMemory session;
-    public KnowledgeBaseImpl   kbase;
+    public KnowledgeBase   kbase;
 
     public StatefulKnowledgeSessionImpl(ReteooWorkingMemory session) {
         this( session,
@@ -105,7 +112,7 @@
                                         KnowledgeBase kbase) {
         this.session = session;
         this.session.setKnowledgeRuntime( this );
-        this.kbase = (KnowledgeBaseImpl) kbase;
+        this.kbase = kbase;
     }
 
     public int getId() {
@@ -718,7 +725,7 @@
     }
 
     public RuleBase getRuleBase() {
-        return this.kbase.ruleBase;
+        return ((KnowledgeBaseImpl) this.kbase).ruleBase;
     }
 
     public QueryResults getQueryResults(String query) {
@@ -794,5 +801,37 @@
                                            arguments,
                                            listener );
     }
+    
+    public KnowledgeSessionConfiguration getSessionConfiguration() {
+    	return this.session.getSessionConfiguration();
+    }
 
+	public TimerService getTimerService() {
+		return this.session.getTimerService();
+	}
+
+	public void startOperation() {
+		this.session.startOperation();
+	}
+
+	public void endOperation() {
+		this.session.endOperation();
+	}
+
+	public void executeQueuedActions() {
+		this.session.executeQueuedActions();
+	}
+
+	public Queue<WorkingMemoryAction> getActionQueue() {
+		return this.session.getActionQueue();
+	}
+
+	public InternalProcessRuntime getProcessRuntime() {
+		return this.session.getProcessRuntime();
+	}
+
+	public void queueWorkingMemoryAction(WorkingMemoryAction action) {
+		this.session.queueWorkingMemoryAction(action);
+	}
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -70,12 +70,16 @@
         this.agendaStats = new AgendaStats();
         this.processStats = new ProcessStats();
         this.ksession.addEventListener( agendaStats );
-        this.ksession.getProcessRuntime().addEventListener( processStats );
+        if (ksession.getProcessRuntime() != null) {
+        	this.ksession.getProcessRuntime().addEventListener( processStats );
+        }
     }
     
     public void dispose() {
         this.ksession.removeEventListener( agendaStats );
-        this.ksession.getProcessRuntime().removeEventListener( processStats );
+        if (ksession.getProcessRuntime() != null) {
+        	this.ksession.getProcessRuntime().removeEventListener( processStats );
+        }
     }
     
     /* (non-Javadoc)

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -98,7 +98,7 @@
         if ( ((SessionConfiguration) config).isKeepReference() ) {
             ((ReteooRuleBase)((KnowledgeBaseImpl)this.kbase).ruleBase).addStatefulSession( session );
         }
-        return new StatefulKnowledgeSessionImpl( session );
+        return (StatefulKnowledgeSession) session.getKnowledgeRuntime();
 
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -46,6 +46,7 @@
 import org.drools.core.util.ObjectHashMap;
 import org.drools.core.util.ObjectHashSet;
 import org.drools.impl.EnvironmentFactory;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.marshalling.ObjectMarshallingStrategy;
 import org.drools.reteoo.BetaMemory;
 import org.drools.reteoo.BetaNode;
@@ -201,6 +202,8 @@
                                                                    config,  
                                                                    agenda,
                                                                    environment );
+        session.setKnowledgeRuntime(new StatefulKnowledgeSessionImpl(session));
+        
         initialFactHandle.setEntryPoint( session.getEntryPoints().get( EntryPoint.DEFAULT.getEntryPointId() ) );
 
         // RuleFlowGroups need to reference the session

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -33,12 +33,14 @@
 import org.drools.reteoo.LeftTuple;
 import org.drools.reteoo.RightTuple;
 import org.drools.rule.EntryPoint;
+import org.drools.runtime.KnowledgeRuntime;
 import org.drools.spi.PropagationContext;
 
 public class MarshallerReaderContext extends ObjectInputStream {
     public final MarshallerReaderContext            stream;
     public final InternalRuleBase                   ruleBase;
     public InternalWorkingMemory                    wm;
+    public KnowledgeRuntime                         kruntime;
     public final Map<Integer, BaseNode>             sinks;
 
     public Map<Integer, InternalFactHandle>         handles;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -388,6 +388,7 @@
                                                                        executor,
                                                                        sessionConfig,
                                                                        environment );
+            session.setKnowledgeRuntime(new StatefulKnowledgeSessionImpl(session));
 
             executor.setCommandExecutor( new CommandExecutor( session ) );
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -39,10 +39,10 @@
 import org.drools.concurrent.RetractObject;
 import org.drools.concurrent.UpdateObject;
 import org.drools.impl.EnvironmentFactory;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.marshalling.Marshaller;
 import org.drools.marshalling.MarshallerFactory;
 import org.drools.runtime.Environment;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.spi.AgendaFilter;
 import org.drools.spi.FactHandleFactory;
 import org.drools.spi.RuleBaseUpdateListener;
@@ -108,11 +108,11 @@
     
     public void writeExternal(ObjectOutput out) throws IOException {
         // all we do is create marshall to a byte[] and write to the stream
-        StatefulKnowledgeSessionImpl ksession = new StatefulKnowledgeSessionImpl( this );
+    	StatefulKnowledgeSession ksession = (StatefulKnowledgeSession) getKnowledgeRuntime();
         Marshaller marshaller = MarshallerFactory.newMarshaller( ksession.getKnowledgeBase() );
         
         ByteArrayOutputStream stream = new ByteArrayOutputStream();
-        marshaller.marshall( stream, ksession );
+        marshaller.marshall( stream, (StatefulKnowledgeSession) getKnowledgeRuntime() );
         stream.close();
         
         byte[] bytes = stream.toByteArray();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,18 +16,17 @@
 
 package org.drools.runtime.rule.impl;
 
-import org.drools.common.InternalAgenda;
 import org.drools.runtime.rule.ActivationGroup;
-import org.drools.runtime.rule.Agenda;
 import org.drools.runtime.rule.AgendaGroup;
 import org.drools.runtime.rule.RuleFlowGroup;
 
 public class AgendaImpl
     implements
-    Agenda {
-    private InternalAgenda agenda;    
+    InternalAgenda {
+	
+    private org.drools.common.InternalAgenda agenda;    
     
-    public AgendaImpl(InternalAgenda agenda) {
+    public AgendaImpl(org.drools.common.InternalAgenda agenda) {
         super();
         this.agenda = agenda;
     }
@@ -61,5 +60,26 @@
         } else {
             return null;
         }
-    }       
+    }
+    
+    public org.drools.common.InternalAgenda getAgenda() {
+    	return this.agenda;
+    }
+
+	public void activateRuleFlowGroup(String name) {
+		this.agenda.activateRuleFlowGroup(name);
+	}
+
+	public void activateRuleFlowGroup(String name, long processInstanceId, String nodeInstanceId) {
+		this.agenda.activateRuleFlowGroup(name, processInstanceId, nodeInstanceId);
+	}
+
+	public void deactivateRuleFlowGroup(String name) {
+		this.agenda.deactivateRuleFlowGroup(name);
+	}
+
+	public boolean isRuleActiveInRuleFlowGroup(
+			String ruleflowGroupName, String ruleName, long processInstanceId) {
+		return this.agenda.isRuleActiveInRuleFlowGroup(ruleflowGroupName, ruleName, processInstanceId);
+	}
 }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,35 @@
+package org.drools.runtime.rule.impl;
+
+import org.drools.runtime.rule.Agenda;
+
+public interface InternalAgenda extends Agenda {
+	
+	public boolean isRuleActiveInRuleFlowGroup(String ruleflowGroupName, String ruleName, long processInstanceId);
+
+    /**
+     * Activates the <code>RuleFlowGroup</code> with the given name.
+     * All activations in the given <code>RuleFlowGroup</code> are added to the agenda.
+     * As long as the <code>RuleFlowGroup</code> remains active,
+     * its activations are automatically added to the agenda. 
+     */
+    public void activateRuleFlowGroup(String name);
+    
+    /**
+     * Activates the <code>RuleFlowGroup</code> with the given name.
+     * All activations in the given <code>RuleFlowGroup</code> are added to the agenda.
+     * As long as the <code>RuleFlowGroup</code> remains active,
+     * its activations are automatically added to the agenda.
+     * The given processInstanceId and nodeInstanceId define the process context
+     * in which this <code>RuleFlowGroup</code> is used.
+     */
+    public void activateRuleFlowGroup(String name, long processInstanceId, String nodeInstanceId);
+
+    /**
+     * Deactivates the <code>RuleFlowGroup</code> with the given name.
+     * All activations in the given <code>RuleFlowGroup</code> are removed from the agenda.
+     * As long as the <code>RuleFlowGroup</code> remains deactive,
+     * its activations are not added to the agenda
+     */
+    public void deactivateRuleFlowGroup(String name);
+
+}

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,25 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.spi;
-
-import org.drools.WorkingMemory;
-
-public interface Action {
-    
-    void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory, ProcessContext context) throws Exception;
-    
-}

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,24 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.spi;
-
-import org.drools.WorkingMemory;
-
-public interface ReturnValueEvaluator {
-    
-    public Object evaluate(WorkingMemory workingMemory, ProcessContext processContext) throws Exception;
-}

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -2,8 +2,8 @@
 
 import org.drools.compiler.ReturnValueDescr;
 import org.drools.process.core.ContextResolver;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.rule.builder.PackageBuildContext;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
 
 public interface ReturnValueEvaluatorBuilder {
 

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -11,13 +11,13 @@
 import org.drools.lang.descr.ProcessDescr;
 import org.drools.process.builder.dialect.ProcessDialect;
 import org.drools.process.builder.dialect.ProcessDialectRegistry;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
+import org.drools.process.instance.impl.RuleConstraintEvaluator;
 import org.drools.workflow.core.Constraint;
 import org.drools.workflow.core.impl.ConnectionRef;
 import org.drools.workflow.core.impl.ConstraintImpl;
 import org.drools.workflow.core.impl.NodeImpl;
 import org.drools.workflow.core.node.Split;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
-import org.drools.workflow.instance.impl.RuleConstraintEvaluator;
 
 public class SplitNodeBuilder implements ProcessNodeBuilder {
 

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -66,7 +66,7 @@
                                                analysis.getNotBoundedIdentifiers(),
                                                contextResolver);
         map.put( "text",
-                 dialect.getKnowledgeHelperFixer().fix( actionDescr.getText() ));
+                 ProcessKnowledgeHelperFixer.fix( actionDescr.getText() ));
 
         generatTemplates( "actionMethod",
                           "actionInvoker",

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -25,9 +25,9 @@
 import org.drools.process.builder.ProcessBuildContext;
 import org.drools.process.builder.ReturnValueEvaluatorBuilder;
 import org.drools.process.core.ContextResolver;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.dialect.java.JavaDialect;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
 
 /**
  * @author etirelli

Added: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,69 @@
+package org.drools.process.builder.dialect.java;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mvel2.Macro;
+import org.mvel2.MacroProcessor;
+
+public class ProcessKnowledgeHelperFixer {
+    private static final Map macros;
+    
+    static {
+        macros = new HashMap(5);
+        
+        macros.put( "insert",
+                    new Macro() {
+                        public String doMacro() {
+                            return "kcontext.getKnowledgeRuntime().insert";
+                        }
+                    } ); 
+        
+//        macros.put( "insertLogical",
+//                    new Macro() {
+//                        public String doMacro() {
+//                            return "drools.insertLogical";
+//                        }
+//                    } );         
+                
+//        macros.put( "update",
+//                    new Macro() {
+//                        public String doMacro() {
+//                            return "drools.update";
+//                        }
+//                    } );
+        
+//        macros.put( "retract",
+//                    new Macro() {
+//                        public String doMacro() {
+//                            return "drools.retract";
+//                        }
+//                    } );          
+    }
+
+    public static String fix(final String raw) {
+        if  ( raw == null || "".equals( raw.trim() )) {
+            return raw;
+        }
+        
+        MacroProcessor macroProcessor = new MacroProcessor();
+        macroProcessor.setMacros( macros );
+        return macroProcessor.parse( raw );
+    }
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -4,7 +4,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.base.mvel.MVELAction;
 import org.drools.base.mvel.MVELCompilationUnit;
 import org.drools.compiler.DescrBuildError;
 import org.drools.compiler.Dialect;
@@ -12,10 +11,10 @@
 import org.drools.process.builder.ActionBuilder;
 import org.drools.process.core.ContextResolver;
 import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.impl.MVELAction;
 import org.drools.rule.MVELDialectRuntimeData;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.mvel2.Macro;
@@ -30,37 +29,31 @@
         macros.put( "insert",
                     new Macro() {
                         public String doMacro() {
-                            return "drools.insert";
+                            return "kcontext.getKnowledgeRuntime().insert";
                         }
                     } );
 
-        macros.put( "insertLogical",
-                    new Macro() {
-                        public String doMacro() {
-                            return "drools.insertLogical";
-                        }
-                    } );
+//        macros.put( "insertLogical",
+//                    new Macro() {
+//                        public String doMacro() {
+//                            return "kcontext.getKnowledgeRuntime()..insertLogical";
+//                        }
+//                    } );
 
-        macros.put( "modify",
-                    new Macro() {
-                        public String doMacro() {
-                            return "@Modify with";
-                        }
-                    } );
 
-        macros.put( "update",
-                    new Macro() {
-                        public String doMacro() {
-                            return "drools.update";
-                        }
-                    } );
+//        macros.put( "update",
+//                    new Macro() {
+//                        public String doMacro() {
+//                            return "kcontext.getKnowledgeRuntime().update";
+//                        }
+//                    } );
 
-        macros.put( "retract",
-                    new Macro() {
-                        public String doMacro() {
-                            return "drools.retract";
-                        }
-                    } );;
+//        macros.put( "retract",
+//                    new Macro() {
+//                        public String doMacro() {
+//                            return "kcontext.getKnowledgeRuntime().retract";
+//                        }
+//                    } );;
     }
     
     public MVELActionBuilder() {
@@ -78,9 +71,8 @@
             MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
 
             Map<String, Class<?>> variables = new HashMap<String,Class<?>>();
+            variables.put("kcontext", ProcessContext.class);
             variables.put("context", ProcessContext.class);
-            variables.put("kcontext", org.drools.runtime.process.ProcessContext.class);
-            variables.put("drools", KnowledgeHelper.class);
             Dialect.AnalysisResult analysis = dialect.analyzeBlock( context,
                                                                     actionDescr,
                                                                     dialect.getInterceptors(),

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -5,19 +5,19 @@
 import java.util.Map;
 
 import org.drools.base.mvel.MVELCompilationUnit;
-import org.drools.base.mvel.MVELReturnValueEvaluator;
 import org.drools.compiler.DescrBuildError;
 import org.drools.compiler.Dialect;
 import org.drools.compiler.ReturnValueDescr;
 import org.drools.process.builder.ReturnValueEvaluatorBuilder;
 import org.drools.process.core.ContextResolver;
 import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.impl.MVELReturnValueEvaluator;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.rule.MVELDialectRuntimeData;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
 
 public class MVELReturnValueEvaluatorBuilder
     implements

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,30 +1,24 @@
 @declare{"actionInvoker"}
 package @{package};
 
-public class @{invokerClassName} implements org.drools.spi.Action, org.drools.spi.CompiledInvoker
+public class @{invokerClassName} implements org.drools.process.instance.impl.Action, org.drools.spi.CompiledInvoker
 {
     private static final long serialVersionUID  = 510l;
 
-    public void execute(org.drools.spi.KnowledgeHelper knowledgeHelper,
-                        org.drools.WorkingMemory workingMemory) throws Exception {
-        execute(knowledgeHelper, workingMemory, null);
-    }
+    public void execute(org.drools.spi.ProcessContext context) throws Exception {
 
-    public void execute(org.drools.spi.KnowledgeHelper knowledgeHelper,
-                        org.drools.WorkingMemory workingMemory, org.drools.spi.ProcessContext context ) throws Exception {
-
-        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) context.getKnowledgeRuntime().getGlobal( "@{identifier}" );
         @end{}
 
         @foreach{type : variableTypes, identifier : variables} @{type} @{identifier} = ( @{type} ) context.getVariable( "@{identifier}" );
         @end{}
 
         @{processClassName}.@{methodName} (
-	        knowledgeHelper at if{globals != empty}, at end{}
+	        context at if{globals != empty}, at end{}
 	        @foreach{identifier : globals} @{identifier}
 	        @end{","}@if{variables != empty}, at end{}
 	        @foreach{identifier : variables} @{identifier}
-	        @end{","}, context );
+	        @end{","} );
     }
     
     public java.util.List getMethodBytecode() {
@@ -36,13 +30,13 @@
 @declare{"returnValueEvaluatorInvoker"}
 package @{package};
 
-public class @{invokerClassName} implements org.drools.spi.ReturnValueEvaluator, org.drools.spi.CompiledInvoker
+public class @{invokerClassName} implements org.drools.process.instance.impl.ReturnValueEvaluator, org.drools.spi.CompiledInvoker
 {
     private static final long serialVersionUID  = 510l;
 
-    public Object evaluate(org.drools.WorkingMemory workingMemory, org.drools.spi.ProcessContext processContext) throws Exception {
+    public Object evaluate(org.drools.spi.ProcessContext processContext) throws Exception {
 
-        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+        @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) processContext.getKnowledgeRuntime().getGlobal( "@{identifier}" );
         @end{}
 
         @foreach{type : variableTypes, identifier : variables} @{type} @{identifier} = ( @{type} ) processContext.getVariable( "@{identifier}" );

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,13 +1,13 @@
 @declare{"actionMethod"}
-public static void @{methodName}(org.drools.spi.KnowledgeHelper drools at if{globals != empty}, at end{} @foreach{type :globalTypes, identifier : globals}  @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables}  @{type2} @{identifier2} @end{","}, org.drools.spi.ProcessContext context ) throws Exception {
-    org.drools.runtime.process.ProcessContext kcontext = context;
+public static void @{methodName}(org.drools.spi.ProcessContext kcontext at if{globals != empty}, at end{} @foreach{type :globalTypes, identifier : globals}  @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables}  @{type2} @{identifier2} @end{","} ) throws Exception {
+    org.drools.spi.ProcessContext context = kcontext;
     @{text}
 }
 @end{}
 
 @declare{"returnValueEvaluatorMethod"}
-public static Object @{methodName}(org.drools.spi.ProcessContext context at if{globals != empty}, at end{} @foreach{type : globalTypes, identifier : globals}  @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables}  @{type2} @{identifier2} @end{","} ) throws Exception {
-    org.drools.runtime.process.ProcessContext kcontext = context;
+public static Object @{methodName}(org.drools.spi.ProcessContext kcontext at if{globals != empty}, at end{} @foreach{type : globalTypes, identifier : globals}  @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables}  @{type2} @{identifier2} @end{","} ) throws Exception {
+    org.drools.spi.ProcessContext context = kcontext;
     @{text}
 }
 @end{}

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -3,31 +3,32 @@
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
 import junit.framework.TestCase;
 
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
 import org.drools.Message;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.compiler.DroolsError;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderErrors;
-import org.drools.rule.Package;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.impl.ReaderResource;
 import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
 import org.drools.runtime.process.WorkItem;
 import org.drools.runtime.process.WorkItemHandler;
 import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.rule.FactHandle;
 
 public class ProcessActionTest extends TestCase {
     
     public void testOnEntryExit() {
-        PackageBuilder builder = new PackageBuilder();
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -77,28 +78,26 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         TestWorkItemHandler handler = new TestWorkItemHandler();
-        workingMemory.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
+        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = ( ProcessInstance )
-            workingMemory.startProcess("org.drools.actions");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance =
+            ksession.startProcess("org.drools.actions");
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         WorkItem workItem = handler.getWorkItem();
         assertNotNull(workItem);
         assertEquals(1, list.size());
-        workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+        ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
         assertEquals(3, list.size());
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
     
     public void testActionContextJava() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -125,13 +124,11 @@
             "    <start id=\"1\" name=\"Start\" />\n" +
 			"    <actionNode id=\"2\" name=\"MyActionNode\" >\n" +
 			"      <action type=\"expression\" dialect=\"java\" >System.out.println(\"Triggered\");\n" +
-			"String myVariable = (String) context.getVariable(\"variable\");\n" +
-			"System.out.println(drools.getWorkingMemory());\n" +
+			"String myVariable = (String) kcontext.getVariable(\"variable\");\n" +
+			"System.out.println(kcontext.getKnowledgeRuntime());\n" +
 			"list.add(myVariable);\n" +
-			"String nodeName = context.getNodeInstance().getNodeName();\n" +
+			"String nodeName = kcontext.getNodeInstance().getNodeName();\n" +
 			"list.add(nodeName);\n" +
-			"nodeName = kcontext.getNodeInstance().getNodeName();\n" +
-			"list.add(nodeName);\n" +
 			"insert( new Message() );\n" +
 			"</action>\n" +
 			"    </actionNode>\n" + 
@@ -144,37 +141,27 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        PackageBuilderErrors errors = builder.getErrors();
-        if (!errors.isEmpty()) {
-        	for (DroolsError error: errors.getErrors()) {
-        		System.err.println(error);
-        	}
-        	fail("Errors while building package");
-        }
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = ( ProcessInstance )
-            workingMemory.startProcess("org.drools.actions");
-        assertEquals(3, list.size());
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance =
+            ksession.startProcess("org.drools.actions");
+        assertEquals(2, list.size());
         assertEquals("SomeText", list.get(0));
         assertEquals("MyActionNode", list.get(1));
-        assertEquals("MyActionNode", list.get(2));
-        Iterator<?> iterator = workingMemory.iterateObjects(new ObjectFilter() {
+        Collection<FactHandle> factHandles = ksession.getFactHandles(new ObjectFilter() {
 			public boolean accept(Object object) {
 				return object instanceof Message;
 			}
         });
-        assertTrue(iterator.hasNext());
+        assertFalse(factHandles.isEmpty());
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
     
 	public void testActionContextMVEL() {
-        PackageBuilder builder = new PackageBuilder();
+		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -201,13 +188,11 @@
             "    <start id=\"1\" name=\"Start\" />\n" +
 			"    <actionNode id=\"2\" name=\"MyActionNode\" >\n" +
 			"      <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n" +
-			"System.out.println(drools.getWorkingMemory());\n" +
-			"String myVariable = (String) context.getVariable(\"variable\");\n" +
+			"System.out.println(kcontext.getKnowledgeRuntime());\n" +
+			"String myVariable = (String) kcontext.getVariable(\"variable\");\n" +
 			"list.add(myVariable);\n" +
-			"String nodeName = context.getNodeInstance().getNodeName();\n" +
+			"String nodeName = kcontext.getNodeInstance().getNodeName();\n" +
 			"list.add(nodeName);\n" +
-			"nodeName = kcontext.getNodeInstance().getNodeName();\n" +
-			"list.add(nodeName);\n" +
 			"insert( new Message() );\n" +
 			"</action>\n" +
 			"    </actionNode>\n" + 
@@ -220,37 +205,27 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        PackageBuilderErrors errors = builder.getErrors();
-        if (!errors.isEmpty()) {
-        	for (DroolsError error: errors.getErrors()) {
-        		System.err.println(error);
-        	}
-        	fail("Errors while building package");
-        }
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = ( ProcessInstance )
-            workingMemory.startProcess("org.drools.actions");
-        assertEquals(3, list.size());
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance =
+            ksession.startProcess("org.drools.actions");
+        assertEquals(2, list.size());
         assertEquals("SomeText", list.get(0));
         assertEquals("MyActionNode", list.get(1));
-        assertEquals("MyActionNode", list.get(2));
-        Iterator<?> iterator = workingMemory.iterateObjects(new ObjectFilter() {
+        Collection<FactHandle> factHandles = ksession.getFactHandles(new ObjectFilter() {
 			public boolean accept(Object object) {
 				return object instanceof Message;
 			}
         });
-        assertTrue(iterator.hasNext());
+        assertFalse(factHandles.isEmpty());
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
 
 	public void testActionVariableJava() {
-        PackageBuilder builder = new PackageBuilder();
+		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -288,32 +263,23 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        PackageBuilderErrors errors = builder.getErrors();
-        if (!errors.isEmpty()) {
-        	for (DroolsError error: errors.getErrors()) {
-        		System.err.println(error);
-        	}
-        	fail("Errors while building package");
-        }
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
+        ksession.setGlobal("list", list);
         TestVariable person = new TestVariable("John Doe");
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("person", person);
         ProcessInstance processInstance =
-            workingMemory.startProcess("org.drools.actions", params);
+            ksession.startProcess("org.drools.actions", params);
         assertEquals(1, list.size());
         assertEquals("John Doe", list.get(0));
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
 	
 	public void testActionVariableMVEL() {
-        PackageBuilder builder = new PackageBuilder();
+		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -351,32 +317,23 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        PackageBuilderErrors errors = builder.getErrors();
-        if (!errors.isEmpty()) {
-        	for (DroolsError error: errors.getErrors()) {
-        		System.err.println(error);
-        	}
-        	fail("Errors while building package");
-        }
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
+        ksession.setGlobal("list", list);
         TestVariable person = new TestVariable("John Doe");
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("person", person);
         ProcessInstance processInstance =
-            workingMemory.startProcess("org.drools.actions", params);
+            ksession.startProcess("org.drools.actions", params);
         assertEquals(1, list.size());
         assertEquals("John Doe", list.get(0));
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
 	
     public void testActionNameConflict() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -404,7 +361,7 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
         source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -432,27 +389,18 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        PackageBuilderErrors errors = builder.getErrors();
-        if (!errors.isEmpty()) {
-        	for (DroolsError error: errors.getErrors()) {
-        		System.err.println(error);
-        	}
-        	fail("Errors while building package");
-        }
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = ( ProcessInstance )
-            workingMemory.startProcess("org.drools.actions1");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance =
+            ksession.startProcess("org.drools.actions1");
         assertEquals(1, list.size());
         assertEquals("Action1", list.get(0));
         list.clear();
-        processInstance = ( ProcessInstance )
-        	workingMemory.startProcess("org.drools.actions2");
+        processInstance =
+        	ksession.startProcess("org.drools.actions2");
         assertEquals(1, list.size());
         assertEquals("Action2", list.get(0));
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -57,7 +57,7 @@
             "" +
             "  <nodes>" +
             "    <actionNode id=\"2\" name=\"Action\" >" +
-            "        <action type=\"expression\" dialect=\"mvel\" >insert(context.getProcessInstance());</action>" +
+            "        <action type=\"expression\" dialect=\"mvel\" >insert(kcontext.getProcessInstance());</action>" +
             "    </actionNode>" +
             "    <split id=\"4\" name=\"Split\" type=\"2\" >" +
             "      <constraints>" +
@@ -68,7 +68,7 @@
             "    </split>" +
             "    <end id=\"8\" name=\"End\" />" +
             "    <actionNode id=\"6\" name=\"Action\" >" +
-            "        <action type=\"expression\" dialect=\"mvel\" >list.add(context.getProcessInstance().getId());</action>" +
+            "        <action type=\"expression\" dialect=\"mvel\" >list.add(kcontext.getProcessInstance().getId());</action>" +
             "    </actionNode>" +
             "    <start id=\"1\" name=\"Start\" />" +
             "    <end id=\"3\" name=\"End\" />" +
@@ -231,17 +231,17 @@
             "" +
             "  <nodes>" +
             "    <actionNode id=\"2\" name=\"Action\" >" +
-            "        <action type=\"expression\" dialect=\"mvel\" >insert(context.getProcessInstance());</action>" +
+            "        <action type=\"expression\" dialect=\"mvel\" >insert(kcontext.getProcessInstance());</action>" +
             "    </actionNode>" +
             "    <split id=\"4\" name=\"Split\" type=\"2\" >" +
             "      <constraints>" +
             "        <constraint toNodeId=\"8\" toType=\"DROOLS_DEFAULT\" priority=\"2\" type=\"code\" dialect=\"mvel\" >return true;</constraint>" +
-            "        <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" priority=\"1\" type=\"code\" dialect=\"mvel\" >return context.getVariable(\"person\") != null &amp;&amp; ((Person) context.getVariable(\"person\")).name != null;</constraint>" +
+            "        <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" priority=\"1\" type=\"code\" dialect=\"mvel\" >return kcontext.getVariable(\"person\") != null &amp;&amp; ((Person) kcontext.getVariable(\"person\")).name != null;</constraint>" +
             "      </constraints>" +
             "    </split>" +
             "    <end id=\"8\" name=\"End\" />" +
             "    <actionNode id=\"6\" name=\"Action\" >" +
-            "        <action type=\"expression\" dialect=\"mvel\" >list.add(context.getProcessInstance().getId());</action>" +
+            "        <action type=\"expression\" dialect=\"mvel\" >list.add(kcontext.getProcessInstance().getId());</action>" +
             "    </actionNode>" +
             "    <start id=\"1\" name=\"Start\" />" +
             "    <end id=\"3\" name=\"End\" />" +

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -8,22 +8,23 @@
 
 import junit.framework.TestCase;
 
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
 import org.drools.Person;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
-import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkflowProcessInstance;
 import org.drools.workflow.instance.node.StateNodeInstance;
 
 public class ProcessStateTest extends TestCase {
     
     public void testManualSignalState() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -56,14 +57,12 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         // start process
-        RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance)
-            workingMemory.startProcess("org.drools.state");
+        WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+            ksession.startProcess("org.drools.state");
         // should be in state A
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
@@ -104,7 +103,7 @@
     }
 
     public void testImmediateStateConstraint1() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -149,21 +148,19 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("1", list.get(0));
     }
     
     public void testImmediateStateConstraintPriorities1() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -208,21 +205,19 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("1", list.get(0));
     }
     
     public void testImmediateStateConstraintPriorities2() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -267,21 +262,19 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("2", list.get(0));
     }
     
     public void testDelayedStateConstraint() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -329,25 +322,23 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         assertTrue(list.isEmpty());
         Person person = new Person("John Doe", 30);
-        workingMemory.insert(person);
+        ksession.insert(person);
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("1", list.get(0));
     }
     
     public void testDelayedStateConstraint2() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -395,25 +386,23 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         assertTrue(list.isEmpty());
         Person person = new Person("John Doe", 20);
-        workingMemory.insert(person);
+        ksession.insert(person);
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("2", list.get(0));
     }
     
     public void FIXMEtestDelayedStateConstraintPriorities1() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -461,25 +450,23 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         assertTrue(list.isEmpty());
         Person person = new Person("John Doe", 30);
-        workingMemory.insert(person);
+        ksession.insert(person);
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("1", list.get(0));
     }
     
     public void FIXMEtestDelayedStateConstraintPriorities2() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -527,25 +514,23 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+        ksession.setGlobal("list", list);
+        ProcessInstance processInstance = ksession.startProcess("org.drools.state");
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         assertTrue(list.isEmpty());
         Person person = new Person("John Doe", 30);
-        workingMemory.insert(person);
+        ksession.insert(person);
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
         assertEquals(1, list.size());
         assertEquals("2", list.get(0));
     }
     
     public void testActionState() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -586,16 +571,14 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
+        ksession.setGlobal("list", list);
         // start process
-        RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance)
-            workingMemory.startProcess("org.drools.state");
+        WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+            ksession.startProcess("org.drools.state");
         // should be in state A
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
@@ -615,7 +598,7 @@
     }
     
     public void testTimerState() {
-        PackageBuilder builder = new PackageBuilder();
+    	KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         Reader source = new StringReader(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -656,21 +639,19 @@
             "  </connections>\n" +
             "\n" +
             "</process>");
-        builder.addRuleFlow(source);
-        Package pkg = builder.getPackage();
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkg );
-        final StatefulSession workingMemory = ruleBase.newStatefulSession();
+        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        workingMemory.setGlobal("list", list);
+        ksession.setGlobal("list", list);
         new Thread(new Runnable() {
 			public void run() {
-				workingMemory.fireUntilHalt();
+				ksession.fireUntilHalt();
 			}
         }).start();
         // start process
-        RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance)
-            workingMemory.startProcess("org.drools.state");
+        WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+            ksession.startProcess("org.drools.state");
         // should be in state A
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
@@ -695,7 +676,7 @@
 		} catch (InterruptedException e) {
 		}
         assertEquals(4, list.size());
-        workingMemory.halt();
+        ksession.halt();
     }
     
 }

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -11,17 +11,12 @@
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
 import org.drools.Person;
-import org.drools.RuleBase;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderFactory;
 import org.drools.builder.ResourceType;
-import org.drools.compiler.PackageBuilder;
 import org.drools.io.impl.ByteArrayResource;
+import org.drools.io.impl.ReaderResource;
 import org.drools.process.instance.ProcessInstance;
-import org.drools.rule.Package;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.workflow.instance.WorkflowProcessInstanceUpgrader;
 
@@ -39,8 +34,8 @@
         rule += "    list.add( $p );\n";
         rule += "end";
 
-        PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new StringReader( rule ));
+        KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        builder.add( new ReaderResource( new StringReader( rule )), ResourceType.DRL );
         
         String process = 
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -60,16 +55,15 @@
             "    <connection from=\"2\" to=\"3\"/>\n" +
             "  </connections>\n" +
             "</process>";
-        builder.addProcessFromXml( new StringReader( process ));
-        Package pkg = builder.getPackage();
+        builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF );
+        
+//        RuleBaseConfiguration config = new RuleBaseConfiguration();
+//        config.setRuleBaseUpdateHandler(null);
 
-        RuleBaseConfiguration config = new RuleBaseConfiguration();
-        config.setRuleBaseUpdateHandler(null);
-        final RuleBase ruleBase = RuleBaseFactory.newRuleBase(config);
-        ruleBase.addPackage(pkg);
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
 
-        StatefulSession session = ruleBase.newStatefulSession();
-
         List<String> list = new ArrayList<String>();
         session.setGlobal( "list", list );
 
@@ -105,10 +99,9 @@
             "    <connection from=\"4\" to=\"3\"/>\n" +
             "  </connections>\n" +
             "</process>";
-        builder = new PackageBuilder();
-        builder.addProcessFromXml( new StringReader( process2 ));
-        pkg = builder.getPackage();
-        ruleBase.addPackage(pkg);
+        builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF );
+        kbase.addKnowledgePackages( builder.getKnowledgePackages() );
         
         WorkflowProcessInstanceUpgrader.upgradeProcessInstance(
             session, processInstance.getId(), "org.test.ruleflow2", new HashMap<String, Long>());
@@ -132,8 +125,8 @@
         rule += "    list.add( $p );\n";
         rule += "end";
 
-        PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new StringReader( rule ));
+        KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        builder.add( new ReaderResource( new StringReader( rule )), ResourceType.DRL );
         
         String process = 
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -153,16 +146,15 @@
             "    <connection from=\"2\" to=\"3\"/>\n" +
             "  </connections>\n" +
             "</process>";
-        builder.addProcessFromXml( new StringReader( process ));
-        Package pkg = builder.getPackage();
+        builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF );
+        
+//      RuleBaseConfiguration config = new RuleBaseConfiguration();
+//      config.setRuleBaseUpdateHandler(null);
 
-        RuleBaseConfiguration config = new RuleBaseConfiguration();
-        config.setRuleBaseUpdateHandler(null);
-        final RuleBase ruleBase = RuleBaseFactory.newRuleBase(config);
-        ruleBase.addPackage(pkg);
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
 
-        StatefulSession session = ruleBase.newStatefulSession();
-
         List<String> list = new ArrayList<String>();
         session.setGlobal( "list", list );
 
@@ -198,10 +190,9 @@
             "    <connection from=\"4\" to=\"3\"/>\n" +
             "  </connections>\n" +
             "</process>";
-        builder = new PackageBuilder();
-        builder.addProcessFromXml( new StringReader( process2 ));
-        pkg = builder.getPackage();
-        ruleBase.addPackage(pkg);
+        builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF );
+        kbase.addKnowledgePackages( builder.getKnowledgePackages() );
         
         Map<String, Long> mapping = new HashMap<String, Long>();
         mapping.put("2", 102L);
@@ -228,8 +219,8 @@
         rule += "    list.add( $p );\n";
         rule += "end";
 
-        PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new StringReader( rule ));
+        KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        builder.add(new ByteArrayResource(rule.getBytes()), ResourceType.DRL);
         
         String process = 
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -261,16 +252,15 @@
             "    <connection from=\"2\" to=\"3\"/>\n" +
             "  </connections>\n" +
             "</process>";
-        builder.addProcessFromXml( new StringReader( process ));
-        Package pkg = builder.getPackage();
+        builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF );
+        
+//      RuleBaseConfiguration config = new RuleBaseConfiguration();
+//      config.setRuleBaseUpdateHandler(null);
 
-        RuleBaseConfiguration config = new RuleBaseConfiguration();
-        config.setRuleBaseUpdateHandler(null);
-        final RuleBase ruleBase = RuleBaseFactory.newRuleBase(config);
-        ruleBase.addPackage(pkg);
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
 
-        StatefulSession session = ruleBase.newStatefulSession();
-
         List<String> list = new ArrayList<String>();
         session.setGlobal( "list", list );
 
@@ -318,10 +308,9 @@
             "    <connection from=\"2\" to=\"3\"/>\n" +
             "  </connections>\n" +
             "</process>";
-        builder = new PackageBuilder();
-        builder.addProcessFromXml( new StringReader( process2 ));
-        pkg = builder.getPackage();
-        ruleBase.addPackage(pkg);
+        builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF );
+        kbase.addKnowledgePackages( builder.getKnowledgePackages() );
         
         Map<String, Long> mapping = new HashMap<String, Long>();
         mapping.put("2:1", 101L);
@@ -336,92 +325,4 @@
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
     
-    public void testDefaultUpgrade2() throws Exception {
-        String rule = "package org.test;\n";
-        rule += "import org.drools.Person\n";
-        rule += "global java.util.List list\n";
-        rule += "rule \"Rule 1\"\n";
-        rule += "  ruleflow-group \"hello\"\n";
-        rule += "when\n";
-        rule += "    $p : Person( ) \n";
-        rule += "then\n";
-        rule += "    list.add( $p );\n";
-        rule += "end";
-
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        kbuilder.add(new ByteArrayResource(rule.getBytes()), ResourceType.DRL);
-        
-        String process = 
-            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-            "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
-            "    xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
-            "    xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" +
-            "    type=\"RuleFlow\" name=\"ruleflow\" id=\"org.test.ruleflow\" package-name=\"org.test\" >\n" +
-            "  <header>\n" +
-            "  </header>\n" +
-            "  <nodes>\n" +
-            "    <start id=\"1\" name=\"Start\" />\n" +
-            "    <ruleSet id=\"2\" name=\"Hello\" ruleFlowGroup=\"hello\" />\n" +
-            "    <end id=\"3\" name=\"End\" />\n" +
-            "  </nodes>\n" +
-            "  <connections>\n" +
-            "    <connection from=\"1\" to=\"2\"/>\n" +
-            "    <connection from=\"2\" to=\"3\"/>\n" +
-            "  </connections>\n" +
-            "</process>";
-        kbuilder.add(new ByteArrayResource(process.getBytes()), ResourceType.DRF);
-        final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-
-        List<String> list = new ArrayList<String>();
-        ksession.setGlobal( "list", list );
-
-        Person p = new Person( "bobba fet", 32);
-        ksession.insert( p );
-        org.drools.runtime.process.ProcessInstance processInstance = ksession.startProcess("org.test.ruleflow");
-        
-        assertEquals(1, ksession.getProcessInstances().size());
-        
-        String process2 = 
-            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-            "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
-            "    xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
-            "    xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" +
-            "    type=\"RuleFlow\" name=\"ruleflow\" id=\"org.test.ruleflow2\" package-name=\"org.test\" >\n" +
-            "  <header>\n" +
-            "    <globals>\n" +
-            "      <global identifier=\"list\" type=\"java.util.List\" />\n" +
-            "    </globals>\n" +
-            "  </header>\n" +
-            "  <nodes>\n" +
-            "    <start id=\"1\" name=\"Start\" />\n" +
-            "    <ruleSet id=\"2\" name=\"Hello\" ruleFlowGroup=\"hello\" />\n" +
-            "    <actionNode id=\"4\" name=\"Action\" >" +
-            "      <action type=\"expression\" dialect=\"java\">System.out.println();\n" +
-            "list.add(\"Executed\");</action>\n" +
-            "    </actionNode>\n" + 
-            "    <end id=\"3\" name=\"End\" />\n" +
-            "  </nodes>\n" +
-            "  <connections>\n" +
-            "    <connection from=\"1\" to=\"2\"/>\n" +
-            "    <connection from=\"2\" to=\"4\"/>\n" +
-            "    <connection from=\"4\" to=\"3\"/>\n" +
-            "  </connections>\n" +
-            "</process>";
-        kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        kbuilder.add(new ByteArrayResource(process2.getBytes()), ResourceType.DRF);
-        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-        
-        WorkflowProcessInstanceUpgrader.upgradeProcessInstance(
-            ksession, processInstance.getId(), "org.test.ruleflow2", new HashMap<String, Long>());
-        assertEquals("org.test.ruleflow2", processInstance.getProcessId());
-        
-        ksession.fireAllRules();
-        
-        assertEquals(2, list.size());
-        assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
-    }
-    
 }

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -2,10 +2,8 @@
 
 import java.io.Reader;
 import java.io.StringReader;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import junit.framework.TestCase;
@@ -14,7 +12,6 @@
 import org.drools.KnowledgeBaseFactory;
 import org.drools.Person;
 import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderError;
 import org.drools.builder.KnowledgeBuilderFactory;
 import org.drools.builder.ResourceType;
 import org.drools.definition.KnowledgePackage;
@@ -96,10 +93,8 @@
             "\n" +
             "</process>");
         kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
-        
-        Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kpkgs );        
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );        
         StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
     	
         TestWorkItemHandler handler = new TestWorkItemHandler();

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,7 +9,7 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.compiler.DialectCompiletimeRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -17,10 +17,10 @@
 import org.drools.lang.descr.ProcessDescr;
 import org.drools.process.builder.dialect.ProcessDialect;
 import org.drools.process.builder.dialect.ProcessDialectRegistry;
+import org.drools.process.instance.impl.Action;
 import org.drools.rule.Package;
 import org.drools.rule.builder.dialect.java.JavaDialect;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.impl.DroolsConsequenceAction;
 import org.drools.workflow.core.impl.WorkflowProcessImpl;
@@ -73,8 +73,8 @@
         List list = new  ArrayList();
         wm.setGlobal( "list", list );        
         
-        KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
-        ((Action) actionNode.getAction().getMetaData("Action")).execute( knowledgeHelper, wm, null );
+        ProcessContext processContext = new ProcessContext( ((InternalWorkingMemory) wm).getKnowledgeRuntime() );
+        ((Action) actionNode.getAction().getMetaData("Action")).execute( processContext );
        
         assertEquals("hello world", list.get(0) );
     }    

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,24 +1,29 @@
 package org.drools.process.builder;
 
 import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.compiler.DialectCompiletimeRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.ReturnValueDescr;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
 import org.drools.lang.descr.ProcessDescr;
 import org.drools.process.builder.dialect.ProcessDialectRegistry;
 import org.drools.process.builder.dialect.java.JavaReturnValueEvaluatorBuilder;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.rule.Package;
 import org.drools.rule.builder.dialect.java.JavaDialect;
 import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.workflow.core.impl.WorkflowProcessImpl;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.workflow.instance.node.SplitInstance;
 
 public class JavaReturnValueConstraintEvaluatorBuilderTest extends TestCase {
@@ -66,15 +71,16 @@
         javaDialect.compileAll();
         assertEquals( 0, javaDialect.getResults().size() );
 
-        final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkgBuilder.getPackage() );
-        final InternalWorkingMemory wm = (InternalWorkingMemory) ruleBase.newStatefulSession();
+        final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        List<KnowledgePackage> packages = new ArrayList<KnowledgePackage>();
+        packages.add( new KnowledgePackageImp(pkgBuilder.getPackage()) );
+        kbase.addKnowledgePackages( packages );
+        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
 
-        wm.setGlobal( "value",
-                      true );
+        ksession.setGlobal( "value", true );
 
         RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
-        processInstance.setWorkingMemory( wm );
+        processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
 
         SplitInstance splitInstance = new SplitInstance();
         splitInstance.setProcessInstance( processInstance );
@@ -83,7 +89,7 @@
                                    null,
                                    null ) );
 
-        wm.setGlobal( "value",
+        ksession.setGlobal( "value",
                       false );
 
         assertFalse( node.evaluate( splitInstance,

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,18 +9,18 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.mvel.MVELAction;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.compiler.DialectCompiletimeRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.lang.descr.ActionDescr;
 import org.drools.process.builder.dialect.mvel.MVELActionBuilder;
+import org.drools.process.instance.impl.Action;
+import org.drools.process.instance.impl.MVELAction;
 import org.drools.rule.Package;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.impl.DroolsConsequenceAction;
 import org.drools.workflow.core.node.ActionNode;
@@ -65,8 +65,8 @@
         
         ((MVELAction) actionNode.getAction().getMetaData("Action")).compile( Thread.currentThread().getContextClassLoader() );
         
-        KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
-        ((Action) actionNode.getAction().getMetaData("Action")).execute( knowledgeHelper, wm, null );
+        ProcessContext processContext = new ProcessContext( ((InternalWorkingMemory) wm).getKnowledgeRuntime() );
+        ((Action) actionNode.getAction().getMetaData("Action")).execute( processContext );
         
         assertEquals("hello world", list.get(0) );
     }    

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,18 +9,18 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.mvel.MVELAction;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.PackageRegistry;
 import org.drools.lang.descr.ActionDescr;
 import org.drools.process.builder.dialect.mvel.MVELActionBuilder;
+import org.drools.process.instance.impl.Action;
+import org.drools.process.instance.impl.MVELAction;
 import org.drools.rule.Package;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.impl.DroolsConsequenceAction;
 import org.drools.workflow.core.node.ActionNode;
@@ -64,9 +64,9 @@
         List list = new  ArrayList();
         wm.setGlobal( "list", list );        
         
-        KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
+        ProcessContext processContext = new ProcessContext( ((InternalWorkingMemory) wm).getKnowledgeRuntime() );
         ((MVELAction) actionNode.getAction().getMetaData("Action")).compile( Thread.currentThread().getContextClassLoader() );
-        ((Action)actionNode.getAction().getMetaData("Action")).execute( knowledgeHelper, wm, null );
+        ((Action)actionNode.getAction().getMetaData("Action")).execute( processContext );
         
         assertEquals("hello world", list.get(0) );
     }    

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,23 +1,28 @@
 package org.drools.process.builder;
 
 import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.base.mvel.MVELReturnValueEvaluator;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.compiler.DialectCompiletimeRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.ReturnValueDescr;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
 import org.drools.process.builder.dialect.mvel.MVELReturnValueEvaluatorBuilder;
+import org.drools.process.instance.impl.MVELReturnValueEvaluator;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.rule.Package;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
 import org.drools.ruleflow.instance.RuleFlowProcessInstance;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.workflow.instance.node.SplitInstance;
 
 public class MVELReturnValueConstraintEvaluatorBuilderTest extends TestCase {
@@ -54,14 +59,16 @@
                        descr,
                        null );
 
-        final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        ruleBase.addPackage( pkgBuilder.getPackage() );
-        final InternalWorkingMemory wm = (InternalWorkingMemory) ruleBase.newStatefulSession();
+        final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        List<KnowledgePackage> packages = new ArrayList<KnowledgePackage>();
+        packages.add( new KnowledgePackageImp(pkgBuilder.getPackage()) );
+        kbase.addKnowledgePackages( packages );
+        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
 
-        wm.setGlobal( "value", true );        
+        ksession.setGlobal( "value", true );        
 
         RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
-        processInstance.setWorkingMemory( wm );
+        processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
 
         SplitInstance splitInstance = new SplitInstance();
         splitInstance.setProcessInstance( processInstance );
@@ -72,7 +79,7 @@
                                    null,
                                    null ) );
         
-        wm.setGlobal( "value", false );     
+        ksession.setGlobal( "value", false );     
         
         assertFalse( node.evaluate( splitInstance,
                                    null,

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -364,7 +364,7 @@
         }
         processInstance.setState(stream.readInt());
         long nodeInstanceCounter = stream.readLong();
-        processInstance.setWorkingMemory(wm);
+        processInstance.setKnowledgeRuntime(wm.getKnowledgeRuntime());
         if (includeVariables) {
             int nbVariables = stream.readInt();
             if (nbVariables > 0) {

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,70 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.SessionConfiguration;
+import org.drools.impl.EnvironmentImpl;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+
+public class ProcessBaseFactoryService implements KnowledgeBaseFactoryService {
+
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+        return new RuleBaseConfiguration();
+    }
+        
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties, ClassLoader... classLoaders) {
+        return new RuleBaseConfiguration(properties, classLoaders);
+    }        
+    
+    public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration() {
+        return new SessionConfiguration();
+    }
+        
+    public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration(Properties properties) {
+        return new SessionConfiguration(properties);
+    }        
+    
+    public KnowledgeBase newKnowledgeBase() {       
+        return new ProcessBaseImpl( RuleBaseFactory.newRuleBase() );      
+    }   
+    
+    public KnowledgeBase newKnowledgeBase( String kbaseId ) {       
+        return new ProcessBaseImpl( RuleBaseFactory.newRuleBase(kbaseId) );      
+    }   
+    
+    public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+        return new ProcessBaseImpl( RuleBaseFactory.newRuleBase( ( RuleBaseConfiguration ) conf ) );
+    }
+
+    public KnowledgeBase newKnowledgeBase(String kbaseId, 
+                                          KnowledgeBaseConfiguration conf) {
+        return new ProcessBaseImpl( RuleBaseFactory.newRuleBase( kbaseId, 
+                                                                   ( RuleBaseConfiguration ) conf ) );
+    }
+
+	public Environment newEnvironment() {
+		return new EnvironmentImpl(); //EnvironmentFactory.newEnvironment();
+	}
+}

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,310 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.KnowledgeBase;
+import org.drools.RuleBase;
+import org.drools.SessionConfiguration;
+import org.drools.common.InternalRuleBase;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definition.process.Process;
+import org.drools.definition.rule.Query;
+import org.drools.definition.rule.Rule;
+import org.drools.definition.type.FactType;
+import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.definitions.rule.impl.RuleImpl;
+import org.drools.event.AfterFunctionRemovedEvent;
+import org.drools.event.AfterPackageAddedEvent;
+import org.drools.event.AfterPackageRemovedEvent;
+import org.drools.event.AfterRuleAddedEvent;
+import org.drools.event.AfterRuleBaseLockedEvent;
+import org.drools.event.AfterRuleBaseUnlockedEvent;
+import org.drools.event.AfterRuleRemovedEvent;
+import org.drools.event.BeforeFunctionRemovedEvent;
+import org.drools.event.BeforePackageAddedEvent;
+import org.drools.event.BeforePackageRemovedEvent;
+import org.drools.event.BeforeRuleAddedEvent;
+import org.drools.event.BeforeRuleBaseLockedEvent;
+import org.drools.event.BeforeRuleBaseUnlockedEvent;
+import org.drools.event.BeforeRuleRemovedEvent;
+import org.drools.event.knowledgebase.KnowledgeBaseEventListener;
+import org.drools.event.knowlegebase.impl.AfterFunctionRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgeBaseLockedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgeBaseUnlockedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgePackageAddedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgePackageRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterRuleAddedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterRuleRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeFunctionRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgeBaseLockedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgeBaseUnlockedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgePackageAddedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgePackageRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeRuleAddedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeRuleRemovedEventImpl;
+import org.drools.impl.EnvironmentFactory;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.reteoo.ReteooRuleBase;
+import org.drools.rule.Package;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+
+public class ProcessBaseImpl
+    implements
+    InternalKnowledgeBase,
+    Externalizable {
+    public RuleBase                                                          ruleBase;
+    
+    // This is just a hack, so spring can find the list of generated classes
+    public List<List<String>> jaxbClasses;
+
+    public Map<KnowledgeBaseEventListener, KnowledgeBaseEventListenerWrapper> mappedKnowledgeBaseListeners;
+
+    public ProcessBaseImpl() {
+
+    }
+
+    public ProcessBaseImpl(RuleBase ruleBase) {
+        this.ruleBase = ruleBase;
+        this.mappedKnowledgeBaseListeners = new HashMap<KnowledgeBaseEventListener, KnowledgeBaseEventListenerWrapper>();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        this.ruleBase.writeExternal( out );
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        ruleBase = new ReteooRuleBase();
+        ruleBase.readExternal( in );
+    }
+    
+    public RuleBase getRuleBase() {
+    	return ruleBase;
+    }
+
+    public void addEventListener(KnowledgeBaseEventListener listener) {
+        KnowledgeBaseEventListenerWrapper wrapper = new KnowledgeBaseEventListenerWrapper( this,
+                                                                                           listener );
+        this.mappedKnowledgeBaseListeners.put( listener,
+                                               wrapper );
+        this.ruleBase.addEventListener( wrapper );
+
+    }
+
+    public void removeEventListener(KnowledgeBaseEventListener listener) {
+        KnowledgeBaseEventListenerWrapper wrapper = this.mappedKnowledgeBaseListeners.remove( listener );
+        this.ruleBase.removeEventListener( wrapper );
+    }
+    
+    public Collection<KnowledgeBaseEventListener> getKnowledgeBaseEventListeners() {
+        return Collections.unmodifiableCollection( this.mappedKnowledgeBaseListeners.keySet() );
+    }
+
+    public void addKnowledgePackage(KnowledgePackage knowledgePackage) {
+        ruleBase.addPackage( ((KnowledgePackageImp) knowledgePackage).pkg );
+    }
+
+    public void addKnowledgePackages(Collection<KnowledgePackage> knowledgePackages) {
+        List<Package> list = new ArrayList<Package>();
+        for ( KnowledgePackage knowledgePackage : knowledgePackages ) {
+            list.add( ((KnowledgePackageImp) knowledgePackage).pkg  );
+        }
+        ((ReteooRuleBase)ruleBase).addPackages( list);
+    }
+
+    public Collection<KnowledgePackage> getKnowledgePackages() {
+        Package[] pkgs = ruleBase.getPackages();
+        List<KnowledgePackage> list = new ArrayList<KnowledgePackage>( pkgs.length );
+        for ( Package pkg : pkgs ) {
+            list.add( new KnowledgePackageImp( pkg ) );
+        }
+        return list;
+    }
+
+    public StatefulKnowledgeSession newStatefulKnowledgeSession() {
+    	return newStatefulKnowledgeSession(new SessionConfiguration(), EnvironmentFactory.newEnvironment() );
+    }
+    
+    public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf, Environment environment) {
+        return new StatefulProcessSession(this, conf, environment);
+    }  
+    
+    public Collection<StatefulKnowledgeSession> getStatefulKnowledgeSessions() {
+        throw new UnsupportedOperationException("Getting stateful sessions not supported");
+    }
+    
+    public StatelessKnowledgeSession newStatelessKnowledgeSession() {
+        throw new UnsupportedOperationException("Stateless sessions not supported");
+    }
+    
+    public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {        
+        throw new UnsupportedOperationException("Stateless sessions not supported");
+    } 
+
+    public void removeKnowledgePackage(String packageName) {
+        this.ruleBase.removePackage( packageName );
+    }
+
+    public void removeRule(String packageName, String ruleName) {
+        this.ruleBase.removeRule( packageName, ruleName );
+    }
+    
+    public void removeQuery(String packageName, String queryName) {
+        this.ruleBase.removeQuery( packageName, queryName );
+    }    
+
+    public void removeFunction(String packageName, String ruleName) {
+        this.ruleBase.removeFunction( packageName, ruleName );
+    }
+
+    public void removeProcess(String processId) {
+        this.ruleBase.removeProcess( processId );
+    }
+    
+    public FactType getFactType(String packageName, String typeName) {
+        return this.ruleBase.getFactType( packageName + "." + typeName );
+    }
+
+    public KnowledgePackage getKnowledgePackage(String packageName) {
+        Package pkg = this.ruleBase.getPackage( packageName );
+        if ( pkg != null ) {
+            return new KnowledgePackageImp( pkg );
+        } else {
+            return null; 
+        }
+    }
+
+    public Process getProcess(String processId) {
+        return ((InternalRuleBase) this.ruleBase).getProcess(processId);
+    }
+    
+    public Collection<Process> getProcesses() {
+    	return Arrays.asList(((InternalRuleBase) this.ruleBase).getProcesses());
+    }
+
+    public Rule getRule(String packageName, String ruleName) {
+        return this.ruleBase.getPackage( packageName ).getRule( ruleName );
+    }
+    
+    public Query getQuery(String packageName, String queryName) {
+        return this.ruleBase.getPackage( packageName ).getRule( queryName );
+    }
+    
+
+    public static class KnowledgeBaseEventListenerWrapper
+        implements org.drools.event.RuleBaseEventListener {
+    	
+        private KnowledgeBaseEventListener listener;
+        private KnowledgeBase              kbase;
+
+        public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+        }
+
+        public void writeExternal(ObjectOutput out) throws IOException {
+            // TODO Auto-generated method stub
+
+        }
+
+        public KnowledgeBaseEventListenerWrapper(KnowledgeBase kbase,
+                                                 KnowledgeBaseEventListener listener) {
+            this.listener = listener;
+        }
+
+        public void afterFunctionRemoved(AfterFunctionRemovedEvent event) {
+            this.listener.afterFunctionRemoved( new AfterFunctionRemovedEventImpl( this.kbase,
+                                                                                   event.getFunction() ) );
+        }
+
+        public void afterPackageAdded(AfterPackageAddedEvent event) {
+            this.listener.afterKnowledgePackageAdded( new AfterKnowledgePackageAddedEventImpl( this.kbase,
+                                                                                               new KnowledgePackageImp( event.getPackage() ) ) );
+        }
+
+        public void afterPackageRemoved(AfterPackageRemovedEvent event) {
+            this.listener.afterKnowledgePackageRemoved( new AfterKnowledgePackageRemovedEventImpl( this.kbase,
+                                                                                                   new KnowledgePackageImp( event.getPackage() ) ) );
+        }
+
+        public void afterRuleAdded(AfterRuleAddedEvent event) {
+            this.listener.afterRuleAdded( new AfterRuleAddedEventImpl( this.kbase,
+                                                                       new RuleImpl( event.getRule() ) ) );
+        }
+
+        public void afterRuleBaseLocked(AfterRuleBaseLockedEvent event) {
+            this.listener.afterKnowledgeBaseLocked( new AfterKnowledgeBaseLockedEventImpl( this.kbase ) );
+        }
+
+        public void afterRuleBaseUnlocked(AfterRuleBaseUnlockedEvent event) {
+            this.listener.afterKnowledgeBaseUnlocked( new AfterKnowledgeBaseUnlockedEventImpl( this.kbase ) );
+        }
+
+        public void afterRuleRemoved(AfterRuleRemovedEvent event) {
+            this.listener.afterRuleRemoved( new AfterRuleRemovedEventImpl( this.kbase,
+                                                                           new RuleImpl( event.getRule() ) ) );
+        }
+
+        public void beforeFunctionRemoved(BeforeFunctionRemovedEvent event) {
+            this.listener.beforeFunctionRemoved( new BeforeFunctionRemovedEventImpl( this.kbase,
+                                                                                     event.getFunction() ) );
+        }
+
+        public void beforePackageAdded(BeforePackageAddedEvent event) {
+            this.listener.beforeKnowledgePackageAdded( new BeforeKnowledgePackageAddedEventImpl( this.kbase,
+                                                                                                 new KnowledgePackageImp( event.getPackage() ) ) );
+        }
+
+        public void beforePackageRemoved(BeforePackageRemovedEvent event) {
+            this.listener.beforeKnowledgePackageRemoved( new BeforeKnowledgePackageRemovedEventImpl( this.kbase,
+                                                                                                     new KnowledgePackageImp( event.getPackage() ) ) );
+        }
+
+        public void beforeRuleAdded(BeforeRuleAddedEvent event) {
+            this.listener.beforeRuleAdded( new BeforeRuleAddedEventImpl( this.kbase,
+                                                                         new RuleImpl( event.getRule() ) ) );
+        }
+
+        public void beforeRuleBaseLocked(BeforeRuleBaseLockedEvent event) {
+            this.listener.beforeKnowledgeBaseLocked( new BeforeKnowledgeBaseLockedEventImpl( this.kbase ) );
+        }
+
+        public void beforeRuleBaseUnlocked(BeforeRuleBaseUnlockedEvent event) {
+            this.listener.beforeKnowledgeBaseUnlocked( new BeforeKnowledgeBaseUnlockedEventImpl( this.kbase ) );
+        }
+
+        public void beforeRuleRemoved(BeforeRuleRemovedEvent event) {
+            this.listener.beforeRuleRemoved( new BeforeRuleRemovedEventImpl( this.kbase,
+                                                                             new RuleImpl( event.getRule() ) ) );
+        }
+    }
+
+}

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,326 @@
+package org.drools.process;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+
+import org.drools.KnowledgeBase;
+import org.drools.RuntimeDroolsException;
+import org.drools.SessionConfiguration;
+import org.drools.command.Command;
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.common.WorkingMemoryAction;
+import org.drools.event.process.ProcessEventListener;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.WorkingMemoryEventListener;
+import org.drools.process.instance.InternalProcessRuntime;
+import org.drools.process.instance.ProcessRuntimeImpl;
+import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.runtime.Calendars;
+import org.drools.runtime.Channel;
+import org.drools.runtime.Environment;
+import org.drools.runtime.ExitPoint;
+import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.rule.Agenda;
+import org.drools.runtime.rule.AgendaFilter;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.LiveQuery;
+import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.ViewChangedEventListener;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+import org.drools.time.SessionClock;
+import org.drools.time.TimerService;
+import org.drools.time.TimerServiceFactory;
+
+public class StatefulProcessSession implements StatefulKnowledgeSession, InternalKnowledgeRuntime {
+
+	private KnowledgeBase kbase;
+	private InternalProcessRuntime processRuntime;
+	private WorkItemManager workItemManager;
+	private KnowledgeSessionConfiguration sessionConfiguration;
+	private Environment environment;
+	private TimerService timerService;
+	protected Queue<WorkingMemoryAction> actionQueue;
+	
+	public StatefulProcessSession(KnowledgeBase kbase, KnowledgeSessionConfiguration sessionConfiguration, Environment environment) {
+		this.kbase = kbase;
+		this.sessionConfiguration = sessionConfiguration;
+		this.environment = environment;
+		processRuntime = new ProcessRuntimeImpl(this);
+		workItemManager = new DefaultWorkItemManager(null);
+		timerService = TimerServiceFactory.getTimerService((SessionConfiguration) sessionConfiguration);
+		actionQueue = new LinkedList<WorkingMemoryAction>();
+	}
+	
+	public void abortProcessInstance(long processInstanceId) {
+		processRuntime.abortProcessInstance(processInstanceId);
+	}
+
+	public ProcessInstance getProcessInstance(long processInstanceId) {
+		return processRuntime.getProcessInstance(processInstanceId);
+	}
+
+	public Collection<ProcessInstance> getProcessInstances() {
+		return processRuntime.getProcessInstances();
+	}
+
+	public void signalEvent(String type, Object event) {
+		processRuntime.signalEvent(type, event);
+	}
+
+	public void signalEvent(String type, Object event, long processInstanceId) {
+		processRuntime.signalEvent(type, event, processInstanceId);
+	}
+
+	public ProcessInstance startProcess(String processId) {
+		return processRuntime.startProcess(processId);
+	}
+
+	public ProcessInstance startProcess(String processId, Map<String, Object> parameters) {
+		return processRuntime.startProcess(processId, parameters);
+	}
+
+	public void addEventListener(ProcessEventListener listener) {
+		processRuntime.addEventListener(listener);
+	}
+
+	public Collection<ProcessEventListener> getProcessEventListeners() {
+		return processRuntime.getProcessEventListeners();
+	}
+
+	public void removeEventListener(ProcessEventListener listener) {
+		processRuntime.removeEventListener(listener);
+	}
+
+	public KnowledgeBase getKnowledgeBase() {
+		return kbase;
+	}
+
+	public WorkItemManager getWorkItemManager() {
+		return workItemManager;
+	}
+
+	public Environment getEnvironment() {
+		return environment;
+	}
+	
+	public InternalProcessRuntime getProcessRuntime() {
+		return processRuntime;
+	}
+	
+	public KnowledgeSessionConfiguration getSessionConfiguration() {
+		return sessionConfiguration;
+	}
+
+	public TimerService getTimerService() {
+		return timerService;
+	}
+
+	public void startOperation() {
+		// Do nothing
+	}
+
+	public void endOperation() {
+		// Do nothing
+	}
+
+	public void executeQueuedActions() {
+        try {
+            startOperation();
+            if ( !this.actionQueue.isEmpty() ) {
+                WorkingMemoryAction action = null;
+                while ( (action = actionQueue.poll()) != null ) {
+                    try {
+//                        action.execute( null );
+                    } catch ( Exception e ) {
+                        throw new RuntimeDroolsException( "Unexpected exception executing action " + action.toString(), e );
+                    }
+                }
+            }
+        } finally {
+            endOperation();
+        }
+	}
+
+	public Queue<WorkingMemoryAction> getActionQueue() {
+		return actionQueue;
+	}
+
+	public void queueWorkingMemoryAction(WorkingMemoryAction action) {
+		actionQueue.add(action);
+	}
+	
+	public void dispose() {
+	}
+
+	public int getId() {
+		throw new UnsupportedOperationException();
+	}
+
+	public int fireAllRules() {
+		throw new UnsupportedOperationException();
+	}
+
+	public int fireAllRules(int max) {
+		throw new UnsupportedOperationException();
+	}
+
+	public int fireAllRules(AgendaFilter agendaFilter) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void fireUntilHalt() {
+		throw new UnsupportedOperationException();
+	}
+
+	public void fireUntilHalt(AgendaFilter agendaFilter) {
+		throw new UnsupportedOperationException();
+	}
+
+	public <T> T execute(Command<T> command) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Calendars getCalendars() {
+		throw new UnsupportedOperationException();
+	}
+
+	public Map<String, Channel> getChannels() {
+		throw new UnsupportedOperationException();
+	}
+
+	public Object getGlobal(String identifier) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Globals getGlobals() {
+		throw new UnsupportedOperationException();
+	}
+
+	public <T extends SessionClock> T getSessionClock() {
+		throw new UnsupportedOperationException();
+	}
+
+	public void registerChannel(String name, Channel channel) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void registerExitPoint(String name, ExitPoint exitPoint) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void setGlobal(String identifier, Object object) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void unregisterChannel(String name) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void unregisterExitPoint(String name) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Agenda getAgenda() {
+		throw new UnsupportedOperationException();
+	}
+
+	public QueryResults getQueryResults(String query) {
+		throw new UnsupportedOperationException();
+	}
+
+	public QueryResults getQueryResults(String query, Object[] arguments) {
+		throw new UnsupportedOperationException();
+	}
+
+	public WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Collection<? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints() {
+		throw new UnsupportedOperationException();
+	}
+
+	public void halt() {
+		throw new UnsupportedOperationException();
+	}
+
+	public LiveQuery openLiveQuery(String query, Object[] arguments, ViewChangedEventListener listener) {
+		throw new UnsupportedOperationException();
+	}
+
+	public String getEntryPointId() {
+		throw new UnsupportedOperationException();
+	}
+
+	public long getFactCount() {
+		throw new UnsupportedOperationException();
+	}
+
+	public FactHandle getFactHandle(Object object) {
+		throw new UnsupportedOperationException();
+	}
+
+	public <T extends FactHandle> Collection<T> getFactHandles() {
+		throw new UnsupportedOperationException();
+	}
+
+	public <T extends FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Object getObject(FactHandle factHandle) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Collection<Object> getObjects() {
+		throw new UnsupportedOperationException();
+	}
+
+	public Collection<Object> getObjects(ObjectFilter filter) {
+		throw new UnsupportedOperationException();
+	}
+
+	public FactHandle insert(Object object) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void retract(FactHandle handle) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void update(FactHandle handle, Object object) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void addEventListener(WorkingMemoryEventListener listener) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void addEventListener(AgendaEventListener listener) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Collection<AgendaEventListener> getAgendaEventListeners() {
+		throw new UnsupportedOperationException();
+	}
+
+	public Collection<WorkingMemoryEventListener> getWorkingMemoryEventListeners() {
+		throw new UnsupportedOperationException();
+	}
+
+	public void removeEventListener(WorkingMemoryEventListener listener) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void removeEventListener(AgendaEventListener listener) {
+		throw new UnsupportedOperationException();
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,8 +18,7 @@
 
 import java.util.Map;
 
-import org.drools.WorkingMemory;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
 import org.drools.process.core.ContextContainer;
 import org.drools.process.core.context.variable.VariableScope;
@@ -28,10 +27,10 @@
 public abstract class AbstractProcessInstanceFactory implements ProcessInstanceFactory {
 	
 	public ProcessInstance createProcessInstance(Process process,
-			                                     WorkingMemory workingMemory,
+			                                     InternalKnowledgeRuntime kruntime,
 			                                     Map<String, Object> parameters) {
 		ProcessInstance processInstance = (ProcessInstance) createProcessInstance();
-		processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
+		processInstance.setKnowledgeRuntime( kruntime );
         processInstance.setProcess( process );
         
         // set variable default values
@@ -50,7 +49,7 @@
             }
         }
         
-        ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime()).getProcessInstanceManager()
+        ((InternalProcessRuntime) kruntime.getProcessRuntime()).getProcessInstanceManager()
         	.addProcessInstance( processInstance );
         return processInstance;
 	}

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,11 +16,9 @@
 
 package org.drools.process.instance;
 
-import org.drools.Agenda;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
-import org.drools.runtime.process.EventListener;
-import org.drools.WorkingMemory;
+import org.drools.runtime.KnowledgeRuntime;
 
 /**
  * A process instance is the representation of a process during its execution.
@@ -39,11 +37,9 @@
 
     void setState(int state);
     
-    void setWorkingMemory(InternalWorkingMemory workingMemory);
+    void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime);
     
-    WorkingMemory getWorkingMemory();
+    InternalKnowledgeRuntime getKnowledgeRuntime();
 
-    Agenda getAgenda();
-    
     void start();
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,7 +18,7 @@
 
 import java.util.Map;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
 
 /**
@@ -27,6 +27,6 @@
  */
 public interface ProcessInstanceFactory {
     
-    ProcessInstance createProcessInstance(Process process, WorkingMemory workingMemory, Map<String, Object> parameters);
+    ProcessInstance createProcessInstance(Process process, InternalKnowledgeRuntime kruntime, Map<String, Object> parameters);
 
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,10 +16,10 @@
 
 package org.drools.process.instance;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 
 public interface ProcessInstanceManagerFactory {
 	
-	ProcessInstanceManager createProcessInstanceManager(WorkingMemory workingMemory);
+	ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime);
 
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -8,8 +8,7 @@
 import org.drools.SessionConfiguration;
 import org.drools.WorkingMemory;
 import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
 import org.drools.event.ActivationCreatedEvent;
 import org.drools.event.DefaultAgendaEventListener;
@@ -32,26 +31,37 @@
 public class ProcessRuntimeImpl implements InternalProcessRuntime {
 	
 	private AbstractWorkingMemory workingMemory;
+	private InternalKnowledgeRuntime kruntime;
 	
 	private ProcessInstanceManager processInstanceManager;
 	private SignalManager signalManager;
 	private TimerManager timerManager;
 	private ProcessEventSupport processEventSupport;
+
+	public ProcessRuntimeImpl(InternalKnowledgeRuntime kruntime) {
+		this.kruntime = kruntime;
+		initProcessInstanceManager();
+		initSignalManager();
+		timerManager = new TimerManager(workingMemory, kruntime.getTimerService());
+        processEventSupport = new ProcessEventSupport();
+        initProcessEventListeners();
+	}
 	
 	public ProcessRuntimeImpl(AbstractWorkingMemory workingMemory) {
 		this.workingMemory = workingMemory;
+		this.kruntime = (InternalKnowledgeRuntime) workingMemory.getKnowledgeRuntime();
 		initProcessInstanceManager();
 		initSignalManager();
-		timerManager = new TimerManager(workingMemory, workingMemory.getTimerService());
+		timerManager = new TimerManager(workingMemory, kruntime.getTimerService());
         processEventSupport = new ProcessEventSupport();
         initProcessEventListeners();
         initProcessActivationListener();
 	}
 	
 	private void initProcessInstanceManager() {
-		String processInstanceManagerClass = ((SessionConfiguration) workingMemory.getSessionConfiguration()).getProcessInstanceManagerFactory();
+		String processInstanceManagerClass = ((SessionConfiguration) kruntime.getSessionConfiguration()).getProcessInstanceManagerFactory();
 		try {
-			processInstanceManager = ((ProcessInstanceManagerFactory) Class.forName(processInstanceManagerClass).newInstance()).createProcessInstanceManager(workingMemory);
+			processInstanceManager = ((ProcessInstanceManagerFactory) Class.forName(processInstanceManagerClass).newInstance()).createProcessInstanceManager(kruntime);
 		} catch (InstantiationException e) {
 			throw new RuntimeException(e);
 		} catch (IllegalAccessException e) {
@@ -62,9 +72,9 @@
 	}
 	
 	private void initSignalManager() {
-		String signalManagerClass = ((SessionConfiguration) workingMemory.getSessionConfiguration()).getSignalManagerFactory();
+		String signalManagerClass = ((SessionConfiguration) kruntime.getSessionConfiguration()).getSignalManagerFactory();
 		try {
-			signalManager = ((SignalManagerFactory) Class.forName(signalManagerClass).newInstance()).createSignalManager(workingMemory);
+			signalManager = ((SignalManagerFactory) Class.forName(signalManagerClass).newInstance()).createSignalManager(kruntime);
 		} catch (InstantiationException e) {
 			throw new RuntimeException(e);
 		} catch (IllegalAccessException e) {
@@ -81,11 +91,11 @@
     public ProcessInstance startProcess(String processId,
                                         Map<String, Object> parameters) {
         try {
-            workingMemory.startOperation();
-            if ( !workingMemory.getActionQueue().isEmpty() ) {
-            	workingMemory.executeQueuedActions();
+            kruntime.startOperation();
+            if ( !kruntime.getActionQueue().isEmpty() ) {
+            	kruntime.executeQueuedActions();
             }
-            final Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess( processId );
+            final Process process = kruntime.getKnowledgeBase().getProcess( processId );
             if ( process == null ) {
                 throw new IllegalArgumentException( "Unknown process ID: " + processId );
             }
@@ -93,13 +103,13 @@
 
             if ( processInstance != null ) {
                 // start process instance
-                getProcessEventSupport().fireBeforeProcessStarted( processInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime() );
+                getProcessEventSupport().fireBeforeProcessStarted( processInstance, kruntime );
                 ((org.drools.process.instance.ProcessInstance) processInstance).start();
-                getProcessEventSupport().fireAfterProcessStarted( processInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime() );
+                getProcessEventSupport().fireAfterProcessStarted( processInstance, kruntime );
             }
             return processInstance;
         } finally {
-            workingMemory.endOperation();
+        	kruntime.endOperation();
         }
     }
 
@@ -110,7 +120,7 @@
             throw new IllegalArgumentException( "Illegal process type: " + process.getClass() );
         }
         return conf.createProcessInstance( process,
-        								   workingMemory,
+        								   kruntime,
                                            parameters );
     }
 
@@ -139,7 +149,7 @@
     }
     
     private void initProcessEventListeners() {
-        for ( Process process : ((InternalRuleBase) workingMemory.getRuleBase()).getProcesses() ) {
+        for ( Process process : kruntime.getKnowledgeBase().getProcesses() ) {
             if ( process instanceof RuleFlowProcess ) {
                 StartNode startNode = ((RuleFlowProcess) process).getStart();
                 List<Trigger> triggers = startNode.getTriggers();
@@ -264,7 +274,7 @@
 	}
 
 	public WorkItemManager getWorkItemManager() {
-		return workingMemory.getWorkItemManager();
+		return kruntime.getWorkItemManager();
 	}
 
 	public void signalEvent(String type, Object event) {

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,17 +16,11 @@
 
 package org.drools.process.instance.context.exception;
 
-import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.SequentialKnowledgeHelper;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
 import org.drools.process.core.context.exception.ActionExceptionHandler;
 import org.drools.process.core.context.exception.ExceptionHandler;
 import org.drools.process.instance.ContextInstanceContainer;
 import org.drools.process.instance.ProcessInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.process.instance.impl.Action;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.instance.NodeInstance;
 
@@ -39,20 +33,19 @@
 		if (handler instanceof ActionExceptionHandler) {
 			Action action = (Action) ((ActionExceptionHandler) handler).getAction().getMetaData("Action");
 			try {
-			    KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
-			    ProcessContext context = new ProcessContext(((InternalWorkingMemory) getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
 		    	ProcessInstance processInstance = getProcessInstance();
+			    ProcessContext processContext = new ProcessContext(processInstance.getKnowledgeRuntime());
 			    ContextInstanceContainer contextInstanceContainer = getContextInstanceContainer();
 			    if (contextInstanceContainer instanceof NodeInstance) {
-			    	context.setNodeInstance((NodeInstance) contextInstanceContainer);
+			    	processContext.setNodeInstance((NodeInstance) contextInstanceContainer);
 			    } else {
-			    	context.setProcessInstance(processInstance);
+			    	processContext.setProcessInstance(processInstance);
 			    }
 			    String faultVariable = handler.getFaultVariable();
 			    if (faultVariable != null) {
-			    	context.setVariable(faultVariable, params);
+			    	processContext.setVariable(faultVariable, params);
 			    }
-		        action.execute(knowledgeHelper, ((ProcessInstance) processInstance).getWorkingMemory(), context);
+		        action.execute(processContext);
 			} catch (Exception e) {
 			    throw new RuntimeException("unable to execute Action", e);
 			}
@@ -61,13 +54,4 @@
 		}
 	}
 
-    private KnowledgeHelper createKnowledgeHelper() {
-        WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
-        if ( ((InternalRuleBase) workingMemory.getRuleBase()).getConfiguration().isSequential() ) {
-            return new SequentialKnowledgeHelper( workingMemory );
-        } else {
-            return new DefaultKnowledgeHelper( workingMemory );
-        }
-    }
-
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -24,7 +24,7 @@
 import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.WorkingMemoryAction;
 import org.drools.marshalling.impl.MarshallerReaderContext;
@@ -36,14 +36,14 @@
 public class DefaultSignalManager implements SignalManager {
 	
 	private Map<String, List<EventListener>> processEventListeners;
-	private WorkingMemory workingMemory;
+	private InternalKnowledgeRuntime kruntime;
 	
-	public DefaultSignalManager(WorkingMemory workingMemory) {
-		this.workingMemory = workingMemory;
+	public DefaultSignalManager(InternalKnowledgeRuntime kruntime) {
+		this.kruntime = kruntime;
 	}
 	
-	public WorkingMemory getWorkingMemory() {
-		return workingMemory;
+	public InternalKnowledgeRuntime getKnowledgeRuntime() {
+		return kruntime;
 	}
 
 	public void addEventListener(String type, EventListener eventListener) {
@@ -68,8 +68,8 @@
 	}
 	
 	public void signalEvent(String type, Object event) {
-		((InternalWorkingMemory) workingMemory).queueWorkingMemoryAction(new SignalAction(type, event));
-		((InternalWorkingMemory) workingMemory).executeQueuedActions();
+		kruntime.queueWorkingMemoryAction(new SignalAction(type, event));
+		kruntime.executeQueuedActions();
 	}
 	
 	public void internalSignalEvent(String type, Object event) {
@@ -83,10 +83,10 @@
 		}
 	}
 	public void signalEvent(long processInstanceId, String type, Object event) {
-		ProcessInstance processInstance = workingMemory.getProcessInstance(processInstanceId);
+		ProcessInstance processInstance = kruntime.getProcessInstance(processInstanceId);
 		if (processInstance != null) {
-			((InternalWorkingMemory) workingMemory).queueWorkingMemoryAction(new SignalProcessInstanceAction(processInstanceId, type, event));
-			((InternalWorkingMemory) workingMemory).executeQueuedActions();
+			kruntime.queueWorkingMemoryAction(new SignalProcessInstanceAction(processInstanceId, type, event));
+			kruntime.executeQueuedActions();
 		}
 	}
 	

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,12 +16,12 @@
 
 package org.drools.process.instance.event;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 
 public class DefaultSignalManagerFactory implements SignalManagerFactory {
 
-	public SignalManager createSignalManager(WorkingMemory workingMemory) {
-		return new DefaultSignalManager(workingMemory);
+	public SignalManager createSignalManager(InternalKnowledgeRuntime kruntime) {
+		return new DefaultSignalManager(kruntime);
 	}
 
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,10 +16,10 @@
 
 package org.drools.process.instance.event;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 
 public interface SignalManagerFactory {
 	
-	SignalManager createSignalManager(WorkingMemory workingMemory);
+	SignalManager createSignalManager(InternalKnowledgeRuntime kruntime);
 
 }

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,25 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import org.drools.spi.ProcessContext;
+
+public interface Action {
+    
+    void execute(ProcessContext context) throws Exception;
+    
+}

Copied: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java (from rev 34982, labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java)
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,29 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import org.drools.definition.process.Connection;
+import org.drools.workflow.core.Constraint;
+import org.drools.workflow.instance.node.SplitInstance;
+
+public interface ConstraintEvaluator extends Constraint {
+    
+    // TODO: make this work for more than only splits
+    public boolean evaluate(SplitInstance instance,
+                            Connection connection,
+                            Constraint constraint);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,13 +16,13 @@
 
 package org.drools.process.instance.impl;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.ProcessInstanceManager;
 import org.drools.process.instance.ProcessInstanceManagerFactory;
 
 public class DefaultProcessInstanceManagerFactory implements ProcessInstanceManagerFactory {
 
-	public ProcessInstanceManager createProcessInstanceManager(WorkingMemory workingMemory) {
+	public ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime) {
 		return new DefaultProcessInstanceManager();
 	}
 

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,138 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.MVELCompilationUnit;
+import org.drools.base.mvel.MVELCompileable;
+import org.drools.base.mvel.MVELDebugHandler;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.rule.MVELDialectRuntimeData;
+import org.drools.rule.Package;
+import org.drools.spi.ProcessContext;
+import org.mvel2.MVEL;
+import org.mvel2.compiler.CompiledExpression;
+import org.mvel2.debug.DebugTools;
+import org.mvel2.integration.impl.SimpleValueResolver;
+
+public class MVELAction
+    implements
+    Action,
+    MVELCompileable,
+    Externalizable {
+    private static final long       serialVersionUID = 510l;
+    
+    private MVELCompilationUnit unit;
+    private String id;        
+
+    private Serializable      expr;
+    private DroolsMVELFactory prototype;
+    private List<String> variableNames;
+
+    public MVELAction() {
+    }
+
+    public MVELAction(final MVELCompilationUnit unit,
+                              final String id) {
+        this.unit = unit;
+        this.id = id;
+    }
+    
+    public void setVariableNames(List<String> variableNames) {
+    	this.variableNames = variableNames;
+    }
+
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        id = in.readUTF();
+        unit = ( MVELCompilationUnit ) in.readObject();
+        variableNames = (List<String>) in.readObject();
+//        expr    = (Serializable)in.readObject();
+//        prototype   = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeUTF( id );
+        out.writeObject( unit );
+        out.writeObject(variableNames);
+//        out.writeObject(expr);
+//        out.writeObject(prototype);
+    }
+    
+    public void compile(ClassLoader classLoader) {
+        expr = unit.getCompiledExpression( classLoader );
+        prototype = unit.getFactory( );
+    } 
+
+    public String getDialect() {
+        return id;
+    }
+    
+    public void execute(ProcessContext context) throws Exception {
+    	
+        // must clone to avoid concurrency problems
+        DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
+        
+        factory.addResolver("context", new SimpleValueResolver(context));
+        factory.addResolver("kcontext", new SimpleValueResolver(context));
+        if (variableNames != null) {
+        	for (String variableName: variableNames) {
+        		factory.addResolver(
+    				variableName, new SimpleValueResolver(context.getVariable(variableName)));
+        	}
+        }
+        
+        factory.setContext( null,
+                            null,
+                            context.getKnowledgeRuntime(),
+                            null );
+        
+        Package pkg = ((InternalKnowledgeBase) context.getKnowledgeRuntime()
+    		.getKnowledgeBase()).getRuleBase().getPackage( "MAIN" );
+        if ( pkg != null ) {
+            MVELDialectRuntimeData data = ( MVELDialectRuntimeData ) pkg.getDialectRuntimeRegistry().getDialectData( id );
+            factory.setNextFactory( data.getFunctionFactory() );
+        }        
+        
+        CompiledExpression compexpr = (CompiledExpression) this.expr;
+
+        if ( MVELDebugHandler.isDebugMode() ) {
+            if ( MVELDebugHandler.verbose ) {
+                System.out.println( DebugTools.decompile( compexpr ) );
+            }
+            MVEL.executeDebugger( compexpr,
+                                  null,
+                                  factory );
+        } else {
+            MVEL.executeExpression( compexpr,
+                                    null,
+                                    factory );
+        }
+
+    }
+
+    public Serializable getCompExpr() {
+        return expr;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.MVELCompilationUnit;
+import org.drools.base.mvel.MVELCompileable;
+import org.drools.base.mvel.MVELDebugHandler;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.rule.MVELDialectRuntimeData;
+import org.drools.rule.Package;
+import org.drools.spi.ProcessContext;
+import org.mvel2.MVEL;
+import org.mvel2.compiler.CompiledExpression;
+import org.mvel2.debug.DebugTools;
+import org.mvel2.integration.impl.SimpleValueResolver;
+
+public class MVELReturnValueEvaluator
+    implements
+    ReturnValueEvaluator,
+    MVELCompileable,
+    Externalizable {
+    private static final long   serialVersionUID = 510l;
+
+    private MVELCompilationUnit unit;
+    private String              id;
+
+    private Serializable        expr;
+    private DroolsMVELFactory   prototype;
+    private List<String>        variableNames;
+
+    public MVELReturnValueEvaluator() {
+    }
+
+    public MVELReturnValueEvaluator(final MVELCompilationUnit unit,
+                                    final String id) {
+        this.unit = unit;
+        this.id = id;
+    }
+
+    public void setVariableNames(List<String> variableNames) {
+    	this.variableNames = variableNames;
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        id = in.readUTF();
+        unit = (MVELCompilationUnit) in.readObject();
+        variableNames = (List<String>) in.readObject();
+        //        expr    = (Serializable)in.readObject();
+        //        prototype   = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeUTF( id );
+        out.writeObject( unit );
+        out.writeObject(variableNames);
+        //        out.writeObject(expr);
+        //        out.writeObject(prototype);
+    }
+
+    public void compile(ClassLoader classLoader) {
+        expr = unit.getCompiledExpression( classLoader );
+        prototype = unit.getFactory();
+    }
+
+    public String getDialect() {
+        return this.id;
+    }
+
+    public Object evaluate(ProcessContext context) throws Exception {
+        DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
+        
+        factory.addResolver("context", new SimpleValueResolver(context));
+        factory.addResolver("kcontext", new SimpleValueResolver(context));
+        if (variableNames != null) {
+        	for (String variableName: variableNames) {
+        		factory.addResolver(
+    				variableName, new SimpleValueResolver(context.getVariable(variableName)));
+        	}
+        }
+        
+        factory.setContext( null,
+                            null,
+                            context.getKnowledgeRuntime(),
+                            null );
+        
+        // do we have any functions for this namespace?
+        Package pkg = ((InternalKnowledgeBase) context.getKnowledgeRuntime()
+        		.getKnowledgeBase()).getRuleBase().getPackage( "MAIN" );
+        if ( pkg != null ) {
+            MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( this.id );
+            factory.setNextFactory( data.getFunctionFactory() );
+        }
+
+        CompiledExpression compexpr = (CompiledExpression) this.expr;
+
+        Object value;
+        if ( MVELDebugHandler.isDebugMode() ) {
+            if ( MVELDebugHandler.verbose ) {
+                System.out.println( DebugTools.decompile( compexpr ) );
+            }
+            value = MVEL.executeDebugger( compexpr,
+                                          null,
+                                          factory );
+        } else {
+            value = MVEL.executeExpression( compexpr,
+                                            null,
+                                            factory );
+        }
+
+        if ( !(value instanceof Boolean) ) {
+            throw new RuntimeException( "Constraints must return boolean values" );
+        }
+        return ((Boolean) value).booleanValue();
+
+    }
+
+    public Serializable getCompExpr() {
+        return expr;
+    }
+    
+    public String toString() {
+        return this.unit.getExpression();
+    }    
+
+}

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -22,16 +22,14 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.Agenda;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
 import org.drools.process.core.Context;
 import org.drools.process.core.ContextContainer;
 import org.drools.process.instance.ContextInstance;
 import org.drools.process.instance.InternalProcessRuntime;
 import org.drools.process.instance.ProcessInstance;
+import org.drools.runtime.rule.Agenda;
 
 /**
  * Default implementation of a process instance.
@@ -48,7 +46,7 @@
     private int state = STATE_PENDING;
     private Map<String, ContextInstance> contextInstances = new HashMap<String, ContextInstance>();
     private Map<String, List<ContextInstance>> subContextInstances = new HashMap<String, List<ContextInstance>>();
-    private transient InternalWorkingMemory workingMemory;
+    private transient InternalKnowledgeRuntime kruntime;
 
     public void setId(final long id) {
         this.id = id;
@@ -65,8 +63,7 @@
 
     public Process getProcess() {
         if (this.process == null) {
-            this.process = ( Process ) ((InternalRuleBase) workingMemory.getRuleBase())
-                .getProcess(processId);
+            this.process = kruntime.getKnowledgeBase().getProcess(processId);
         }
         return this.process;
     }
@@ -95,22 +92,22 @@
         return this.state;
     }
     
-    public void setWorkingMemory(final InternalWorkingMemory workingMemory) {
-        if ( this.workingMemory != null ) {
-            throw new IllegalArgumentException( "A working memory can only be set once." );
+    public void setKnowledgeRuntime(final InternalKnowledgeRuntime kruntime) {
+        if ( this.kruntime != null ) {
+            throw new IllegalArgumentException( "Runtime can only be set once." );
         }
-        this.workingMemory = workingMemory;
+        this.kruntime = kruntime;
     }
 
-    public WorkingMemory getWorkingMemory() {
-        return this.workingMemory;
+    public InternalKnowledgeRuntime getKnowledgeRuntime() {
+        return this.kruntime;
     }
     
 	public Agenda getAgenda() {
-		if (getWorkingMemory() == null) {
+		if (getKnowledgeRuntime() == null) {
 			return null;
 		}
-		return getWorkingMemory().getAgenda();
+		return getKnowledgeRuntime().getAgenda();
 	}
 
     public ContextContainer getContextContainer() {
@@ -194,13 +191,13 @@
     protected abstract void internalStart();
     
     public void disconnect() {
-        ((InternalProcessRuntime) workingMemory.getProcessRuntime()).getProcessInstanceManager().internalRemoveProcessInstance(this);
+        ((InternalProcessRuntime) kruntime.getProcessRuntime()).getProcessInstanceManager().internalRemoveProcessInstance(this);
         process = null;
-        workingMemory = null;
+        kruntime = null;
     }
     
     public void reconnect() {
-    	((InternalProcessRuntime) workingMemory.getProcessRuntime()).getProcessInstanceManager().internalAddProcessInstance(this);
+    	((InternalProcessRuntime) kruntime.getProcessRuntime()).getProcessInstanceManager().internalAddProcessInstance(this);
     }
 
     public String[] getEventTypes() {

Copied: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java (from rev 34982, labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java)
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,171 @@
+/**
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.definition.process.Connection;
+import org.drools.spi.CompiledInvoker;
+import org.drools.spi.ProcessContext;
+import org.drools.spi.Wireable;
+import org.drools.workflow.core.Constraint;
+import org.drools.workflow.instance.node.SplitInstance;
+
+/**
+ * Default implementation of a constraint.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class ReturnValueConstraintEvaluator
+    implements
+    Constraint,
+    ConstraintEvaluator,
+    Wireable,
+    Externalizable {
+
+    private static final long serialVersionUID = 510l;
+
+    private String            name;
+    private String            constraint;
+    private int               priority;
+    private String            dialect;
+    private String            type;
+    private boolean           isDefault = false;
+
+    public ReturnValueConstraintEvaluator() {
+    }
+
+    private ReturnValueEvaluator evaluator;
+
+    public String getConstraint() {
+        return this.constraint;
+    }
+
+    public void setConstraint(final String constraint) {
+        this.constraint = constraint;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    public String toString() {
+        return this.name;
+    }
+
+    public int getPriority() {
+        return this.priority;
+    }
+
+    public void setPriority(final int priority) {
+        this.priority = priority;
+    }
+
+    public String getDialect() {
+        return dialect;
+    }
+
+    public void setDialect(String dialect) {
+        this.dialect = dialect;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public boolean isDefault() {
+		return isDefault;
+	}
+
+	public void setDefault(boolean isDefault) {
+		this.isDefault = isDefault;
+	}
+
+	public void wire(Object object) {
+        setEvaluator( (ReturnValueEvaluator) object );
+    }
+
+    public void setEvaluator(ReturnValueEvaluator evaluator) {
+        this.evaluator = evaluator;
+    }
+
+    public ReturnValueEvaluator getReturnValueEvaluator() {
+        return this.evaluator;
+    }
+
+    public boolean evaluate(SplitInstance instance,
+                            Connection connection,
+                            Constraint constraint) {
+        Object value;
+        try {
+            ProcessContext context = new ProcessContext(instance.getProcessInstance().getKnowledgeRuntime());
+            context.setNodeInstance( instance );
+            value = this.evaluator.evaluate( context );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "unable to execute ReturnValueEvaluator",
+                                        e );
+        }
+        if ( !(value instanceof Boolean) ) {
+            throw new RuntimeException( "Constraints must return boolean values" );
+        }
+        return ((Boolean) value).booleanValue();
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        this.evaluator = (ReturnValueEvaluator) in.readObject();
+        this.name = in.readUTF();
+        this.constraint = (String) in.readObject();
+        this.priority = in.readInt();
+        this.dialect = in.readUTF();
+        this.type = (String) in.readObject();
+
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        if ( this.evaluator instanceof CompiledInvoker ) {
+            out.writeObject( null );
+        } else {
+            out.writeObject( this.evaluator );
+        }
+        out.writeUTF( this.name );
+        out.writeObject( this.constraint );
+        out.writeInt( this.priority );
+        out.writeUTF( dialect );
+        out.writeObject( type );
+    }
+
+    public void setMetaData(String name, Object value) {
+    	// Do nothing
+    }
+    
+    public Object getMetaData(String name) {
+        return null;
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,24 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import org.drools.spi.ProcessContext;
+
+public interface ReturnValueEvaluator {
+    
+    public Object evaluate(ProcessContext processContext) throws Exception;
+}

Copied: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java (from rev 34982, labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java)
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,119 @@
+/**
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.process.instance.impl;
+
+import java.io.Serializable;
+
+import org.drools.definition.process.Connection;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.runtime.process.WorkflowProcessInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
+import org.drools.workflow.core.Constraint;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.instance.node.SplitInstance;
+
+/**
+ * Default implementation of a constraint.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class RuleConstraintEvaluator implements Constraint,
+        ConstraintEvaluator, Serializable {
+
+    private static final long  serialVersionUID = 510l;
+
+    private String             name;
+    private String             constraint;
+    private int                priority;
+    private String             dialect;
+    private String             type;
+    private boolean            isDefault;
+    
+    public String getConstraint() {
+        return this.constraint;
+    }
+
+    public void setConstraint(final String constraint) {
+        this.constraint = constraint;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    public String toString() {
+        return this.name;
+    }
+
+    public int getPriority() {
+        return this.priority;
+    }
+
+    public void setPriority(final int priority) {
+        this.priority = priority;
+    }
+
+    public String getDialect() {
+        return dialect;
+    }
+
+    public void setDialect(String dialect) {
+        this.dialect = dialect;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+    
+    public boolean isDefault() {
+		return isDefault;
+	}
+
+	public void setDefault(boolean isDefault) {
+		this.isDefault = isDefault;
+	}
+
+	public boolean evaluate(SplitInstance instance,
+                            Connection connection,
+                            Constraint constraint) {
+        WorkflowProcessInstance processInstance = instance.getProcessInstance();
+        InternalAgenda agenda = (InternalAgenda) ((ProcessInstance) processInstance).getKnowledgeRuntime().getAgenda();
+        String rule = "RuleFlow-Split-" + processInstance.getProcessId() + "-" + 
+        	((Node) instance.getNode()).getUniqueId() + "-" + 
+        	((Node) connection.getTo()).getId() + "-" + connection.getToType();
+
+        boolean isActive = agenda.isRuleActiveInRuleFlowGroup( "DROOLS_SYSTEM", rule, processInstance.getId() );
+        return isActive;
+    }
+
+	public Object getMetaData(String name) {
+		return null;
+	}
+
+	public void setMetaData(String name, Object value) {
+		// Do nothing
+	}    
+
+}


Property changes on: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -64,6 +64,10 @@
     	}
     	return subNodes.toArray(new Node[subNodes.size()]);
     }
+    
+    public Node[] internalGetNodes() {
+    	return getNodes();
+    }
 
     public void addNode(Node node) {
     	// TODO find a more elegant solution for this
@@ -96,7 +100,7 @@
     }
     
 	public boolean acceptsEvent(String type, Object event) {
-		for (Node node: getNodes()) {
+		for (Node node: internalGetNodes()) {
 			if (node instanceof EventNodeInterface) {
 				if (((EventNodeInterface) node).acceptsEvent(type, event)) {
 					return true;

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -126,6 +126,10 @@
     	return getCompositeNode().getNodes();
     }
     
+    public Node[] internalGetNodes() {
+    	return super.getNodes();
+    }
+    
     public void removeNode(Node node) {
     	getCompositeNode().removeNode(node);
     }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,13 +19,9 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.definition.process.NodeContainer;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.WorkflowProcess;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.KnowledgeRuntime;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.workflow.core.impl.NodeImpl;
 import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -34,27 +30,15 @@
 public class WorkflowProcessInstanceUpgrader {
 
     public static void upgradeProcessInstance(
-    		StatefulKnowledgeSession session,
+    		KnowledgeRuntime kruntime,
     		long processInstanceId,
     		String processId,
     		Map<String, Long> nodeMapping) {
-    	upgradeProcessInstance(
-			((StatefulKnowledgeSessionImpl) session).session,
-			processInstanceId,
-			processId,
-			nodeMapping);
-    }
-	
-    public static void upgradeProcessInstance(
-    		WorkingMemory workingMemory,
-    		long processInstanceId,
-    		String processId,
-    		Map<String, Long> nodeMapping) {
     	if (nodeMapping == null) {
     		nodeMapping = new HashMap<String, Long>();
     	}
         WorkflowProcessInstanceImpl processInstance = (WorkflowProcessInstanceImpl)
-            workingMemory.getProcessInstance(processInstanceId);
+            kruntime.getProcessInstance(processInstanceId);
         if (processInstance == null) {
             throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
         }
@@ -62,7 +46,7 @@
             throw new IllegalArgumentException("Null process id");
         }
         WorkflowProcess process = (WorkflowProcess)
-            ((InternalRuleBase) workingMemory.getRuleBase()).getProcess(processId);
+            kruntime.getKnowledgeBase().getProcess(processId);
         if (process == null) {
             throw new IllegalArgumentException("Could not find process " + processId);
         }
@@ -74,14 +58,13 @@
 	        processInstance.disconnect();
 	        processInstance.setProcess(oldProcess);
 	        updateNodeInstances(processInstance, nodeMapping);
-	        processInstance.setWorkingMemory((InternalWorkingMemory) workingMemory);
+	        processInstance.setKnowledgeRuntime((InternalKnowledgeRuntime) kruntime);
 	        processInstance.setProcess(process);
 	        processInstance.reconnect();
 		}
     }
     
     private static void updateNodeInstances(NodeInstanceContainer nodeInstanceContainer, Map<String, Long> nodeMapping) {
-    	NodeContainer nodeContainer = nodeInstanceContainer.getNodeContainer();
         for (NodeInstance nodeInstance: nodeInstanceContainer.getNodeInstances()) {
             String oldNodeId = ((NodeImpl)
         		((org.drools.workflow.instance.NodeInstance) nodeInstance).getNode()).getUniqueId();

Deleted: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,29 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.workflow.instance.impl;
-
-import org.drools.definition.process.Connection;
-import org.drools.workflow.core.Constraint;
-import org.drools.workflow.instance.node.SplitInstance;
-
-public interface ConstraintEvaluator extends Constraint {
-    
-    // TODO: make this work for more than only splits
-    public boolean evaluate(SplitInstance instance,
-                            Connection connection,
-                            Constraint constraint);
-}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,17 +18,10 @@
 
 import java.util.List;
 
-import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.SequentialKnowledgeHelper;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
 import org.drools.process.core.context.exception.ExceptionScope;
-import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.context.exception.ExceptionScopeInstance;
+import org.drools.process.instance.impl.Action;
 import org.drools.runtime.process.NodeInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.impl.ExtendedNodeImpl;
@@ -61,30 +54,18 @@
 		}
 		List<DroolsAction> actions = extendedNode.getActions(type);
 		if (actions != null) {
-			KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
 			for (DroolsAction droolsAction: actions) {
-				executeAction(droolsAction, knowledgeHelper);
+				executeAction(droolsAction);
 			}
 		}
 	}
 	
-	protected KnowledgeHelper createKnowledgeHelper() {
-		KnowledgeHelper knowledgeHelper = null;
-		WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
-		if (((InternalRuleBase) workingMemory.getRuleBase()).getConfiguration().isSequential()) {
-			knowledgeHelper = new SequentialKnowledgeHelper(workingMemory);
-        } else {
-        	knowledgeHelper = new DefaultKnowledgeHelper(workingMemory);
-        }
-		return knowledgeHelper;
-	}
-	
-	protected void executeAction(DroolsAction droolsAction, KnowledgeHelper knowledgeHelper) {
+	protected void executeAction(DroolsAction droolsAction) {
 		Action action = (Action) droolsAction.getMetaData("Action");
-		ProcessContext context = new ProcessContext(((InternalWorkingMemory) getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
+		ProcessContext context = new ProcessContext(getProcessInstance().getKnowledgeRuntime());
 		context.setNodeInstance(this);
 		try {
-			action.execute(knowledgeHelper, ((ProcessInstance) getProcessInstance()).getWorkingMemory(), context);
+			action.execute(context);
 		} catch (Exception exception) {
 			exception.printStackTrace();
 			String exceptionName = exception.getClass().getName();

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,6 +21,7 @@
 import java.util.List;
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.definition.process.Connection;
 import org.drools.definition.process.Node;
@@ -112,15 +113,15 @@
     	if (getNode().getMetaData().get("hidden") != null) {
     		hidden = true;
     	}
-    	WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+    	InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
     	if (!hidden) {
-    		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-    			.getProcessEventSupport().fireBeforeNodeTriggered(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+    		((InternalProcessRuntime) kruntime.getProcessRuntime())
+    			.getProcessEventSupport().fireBeforeNodeTriggered(this, kruntime);
     	}
         internalTrigger(from, type);
         if (!hidden) {
-        	((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-        		.getProcessEventSupport().fireAfterNodeTriggered(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+        	((InternalProcessRuntime) kruntime.getProcessRuntime())
+        		.getProcessEventSupport().fireAfterNodeTriggered(this, kruntime);
         }
     }
     
@@ -155,10 +156,10 @@
     	if (getNode().getMetaData().get("hidden") != null) {
     		hidden = true;
     	}
-    	WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+    	InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
     	if (!hidden) {
-    		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-    			.getProcessEventSupport().fireBeforeNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+    		((InternalProcessRuntime) kruntime.getProcessRuntime())
+    			.getProcessEventSupport().fireBeforeNodeLeft(this, kruntime);
     	}
     	// check for exclusive group first
     	NodeInstanceContainer parent = getNodeInstanceContainer();
@@ -183,8 +184,8 @@
         ((org.drools.workflow.instance.NodeInstance) ((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer())
         	.getNodeInstance(connection.getTo())).trigger(this, connection.getToType());
         if (!hidden) {
-        	((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-        		.getProcessEventSupport().fireAfterNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+        	((InternalProcessRuntime) kruntime.getProcessRuntime())
+        		.getProcessEventSupport().fireAfterNodeLeft(this, kruntime);
         }
     }
     

Deleted: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,175 +0,0 @@
-/**
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.workflow.instance.impl;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import org.drools.common.InternalWorkingMemory;
-import org.drools.definition.process.Connection;
-import org.drools.process.instance.ProcessInstance;
-import org.drools.spi.CompiledInvoker;
-import org.drools.spi.ProcessContext;
-import org.drools.spi.ReturnValueEvaluator;
-import org.drools.spi.Wireable;
-import org.drools.workflow.core.Constraint;
-import org.drools.workflow.instance.node.SplitInstance;
-
-/**
- * Default implementation of a constraint.
- * 
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public class ReturnValueConstraintEvaluator
-    implements
-    Constraint,
-    ConstraintEvaluator,
-    Wireable,
-    Externalizable {
-
-    private static final long serialVersionUID = 510l;
-
-    private String            name;
-    private String            constraint;
-    private int               priority;
-    private String            dialect;
-    private String            type;
-    private boolean           isDefault = false;
-
-    public ReturnValueConstraintEvaluator() {
-    }
-
-    private ReturnValueEvaluator evaluator;
-
-    public String getConstraint() {
-        return this.constraint;
-    }
-
-    public void setConstraint(final String constraint) {
-        this.constraint = constraint;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public String toString() {
-        return this.name;
-    }
-
-    public int getPriority() {
-        return this.priority;
-    }
-
-    public void setPriority(final int priority) {
-        this.priority = priority;
-    }
-
-    public String getDialect() {
-        return dialect;
-    }
-
-    public void setDialect(String dialect) {
-        this.dialect = dialect;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public boolean isDefault() {
-		return isDefault;
-	}
-
-	public void setDefault(boolean isDefault) {
-		this.isDefault = isDefault;
-	}
-
-	public void wire(Object object) {
-        setEvaluator( (ReturnValueEvaluator) object );
-    }
-
-    public void setEvaluator(ReturnValueEvaluator evaluator) {
-        this.evaluator = evaluator;
-    }
-
-    public ReturnValueEvaluator getReturnValueEvaluator() {
-        return this.evaluator;
-    }
-
-    public boolean evaluate(SplitInstance instance,
-                            Connection connection,
-                            Constraint constraint) {
-        Object value;
-        try {
-            ProcessContext context = new ProcessContext(((InternalWorkingMemory) instance.getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
-            context.setNodeInstance( instance );
-            value = this.evaluator.evaluate( ((ProcessInstance) instance.getProcessInstance()).getWorkingMemory(),
-                                             context );
-        } catch ( Exception e ) {
-            throw new RuntimeException( "unable to execute ReturnValueEvaluator",
-                                        e );
-        }
-        if ( !(value instanceof Boolean) ) {
-            throw new RuntimeException( "Constraints must return boolean values" );
-        }
-        return ((Boolean) value).booleanValue();
-    }
-
-    public void readExternal(ObjectInput in) throws IOException,
-                                            ClassNotFoundException {
-        this.evaluator = (ReturnValueEvaluator) in.readObject();
-        this.name = in.readUTF();
-        this.constraint = (String) in.readObject();
-        this.priority = in.readInt();
-        this.dialect = in.readUTF();
-        this.type = (String) in.readObject();
-
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        if ( this.evaluator instanceof CompiledInvoker ) {
-            out.writeObject( null );
-        } else {
-            out.writeObject( this.evaluator );
-        }
-        out.writeUTF( this.name );
-        out.writeObject( this.constraint );
-        out.writeInt( this.priority );
-        out.writeUTF( dialect );
-        out.writeObject( type );
-    }
-
-    public void setMetaData(String name, Object value) {
-    	// Do nothing
-    }
-    
-    public Object getMetaData(String name) {
-        return null;
-    }
-    
-}

Deleted: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,119 +0,0 @@
-/**
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.workflow.instance.impl;
-
-import java.io.Serializable;
-
-import org.drools.common.InternalAgenda;
-import org.drools.definition.process.Connection;
-import org.drools.process.instance.ProcessInstance;
-import org.drools.runtime.process.WorkflowProcessInstance;
-import org.drools.workflow.core.Constraint;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.instance.node.SplitInstance;
-
-/**
- * Default implementation of a constraint.
- * 
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public class RuleConstraintEvaluator implements Constraint,
-        ConstraintEvaluator, Serializable {
-
-    private static final long  serialVersionUID = 510l;
-
-    private String             name;
-    private String             constraint;
-    private int                priority;
-    private String             dialect;
-    private String             type;
-    private boolean            isDefault;
-    
-    public String getConstraint() {
-        return this.constraint;
-    }
-
-    public void setConstraint(final String constraint) {
-        this.constraint = constraint;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public String toString() {
-        return this.name;
-    }
-
-    public int getPriority() {
-        return this.priority;
-    }
-
-    public void setPriority(final int priority) {
-        this.priority = priority;
-    }
-
-    public String getDialect() {
-        return dialect;
-    }
-
-    public void setDialect(String dialect) {
-        this.dialect = dialect;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-    
-    public boolean isDefault() {
-		return isDefault;
-	}
-
-	public void setDefault(boolean isDefault) {
-		this.isDefault = isDefault;
-	}
-
-	public boolean evaluate(SplitInstance instance,
-                            Connection connection,
-                            Constraint constraint) {
-        WorkflowProcessInstance processInstance = instance.getProcessInstance();
-        InternalAgenda agenda = (InternalAgenda) ((ProcessInstance) processInstance).getAgenda();
-        String rule = "RuleFlow-Split-" + processInstance.getProcessId() + "-" + 
-        	((Node) instance.getNode()).getUniqueId() + "-" + 
-        	((Node) connection.getTo()).getId() + "-" + connection.getToType();
-
-        boolean isActive = agenda.isRuleActiveInRuleFlowGroup( "DROOLS_SYSTEM", rule, processInstance.getId() );
-        return isActive;
-    }
-
-	public Object getMetaData(String name) {
-		return null;
-	}
-
-	public void setMetaData(String name, Object value) {
-		// Do nothing
-	}    
-
-}

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -25,7 +25,7 @@
 import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Node;
 import org.drools.definition.process.NodeContainer;
 import org.drools.definition.process.WorkflowProcess;
@@ -75,8 +75,8 @@
 
 	public void removeNodeInstance(final NodeInstance nodeInstance) {
 		if (((NodeInstanceImpl) nodeInstance).isInversionOfControl()) {
-			getWorkingMemory().retract(
-					getWorkingMemory().getFactHandle(nodeInstance));
+			getKnowledgeRuntime().retract(
+					getKnowledgeRuntime().getFactHandle(nodeInstance));
 		}
 		this.nodeInstances.remove(nodeInstance);
 	}
@@ -163,7 +163,7 @@
 					+ node.getClass());
 		}
 		if (((NodeInstanceImpl) nodeInstance).isInversionOfControl()) {
-			getWorkingMemory().insert(nodeInstance);
+			getKnowledgeRuntime().insert(nodeInstance);
 		}
 		return nodeInstance;
 	}
@@ -185,7 +185,7 @@
 		// for disconnected process instances, try going through the variable scope instances
 		// (as the default variable scope cannot be retrieved as the link to the process could
 		// be null and the associated working memory is no longer accessible)
-		if (getWorkingMemory() == null) {
+		if (getKnowledgeRuntime() == null) {
 			List<ContextInstance> variableScopeInstances = 
 				getContextInstances(VariableScope.VARIABLE_SCOPE);
 			if (variableScopeInstances != null && variableScopeInstances.size() == 1) {
@@ -211,7 +211,7 @@
         // for disconnected process instances, try going through the variable scope instances
         // (as the default variable scope cannot be retrieved as the link to the process could
         // be null and the associated working memory is no longer accessible)
-        if (getWorkingMemory() == null) {
+        if (getKnowledgeRuntime() == null) {
             List<ContextInstance> variableScopeInstances = 
                 getContextInstances(VariableScope.VARIABLE_SCOPE);
             if (variableScopeInstances == null) {
@@ -248,9 +248,9 @@
 		// TODO move most of this to ProcessInstanceImpl
 		if (state == ProcessInstance.STATE_COMPLETED
 				|| state == ProcessInstance.STATE_ABORTED) {
-			InternalWorkingMemory workingMemory = (InternalWorkingMemory) getWorkingMemory();
-			((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-				.getProcessEventSupport().fireBeforeProcessCompleted(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+			InternalKnowledgeRuntime kruntime = getKnowledgeRuntime();
+			InternalProcessRuntime processRuntime = (InternalProcessRuntime) kruntime.getProcessRuntime();
+			processRuntime.getProcessEventSupport().fireBeforeProcessCompleted(this, kruntime);
 			// deactivate all node instances of this process instance
 			while (!nodeInstances.isEmpty()) {
 				NodeInstance nodeInstance = nodeInstances.get(0);
@@ -258,13 +258,10 @@
 						.cancel();
 			}
 			removeEventListeners();
-			((InternalProcessRuntime) workingMemory.getProcessRuntime()).getProcessInstanceManager().removeProcessInstance(this);
-			((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-				.getProcessEventSupport().fireAfterProcessCompleted(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+			processRuntime.getProcessInstanceManager().removeProcessInstance(this);
+			processRuntime.getProcessEventSupport().fireAfterProcessCompleted(this, kruntime);
 
-			String type = "processInstanceCompleted:" + getId();
-			((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-				.getSignalManager().signalEvent(type, this);
+			processRuntime.getSignalManager().signalEvent("processInstanceCompleted:" + getId(), this);
 		}
 	}
 
@@ -364,16 +361,15 @@
 
 	public void addEventListener(String type, EventListener listener,
 			boolean external) {
-		Map<String, List<EventListener>> eventListeners = external ? this.externalEventListeners
-				: this.eventListeners;
+		Map<String, List<EventListener>> eventListeners = 
+			external ? this.externalEventListeners : this.eventListeners;
 		List<EventListener> listeners = eventListeners.get(type);
 		if (listeners == null) {
 			listeners = new CopyOnWriteArrayList<EventListener>();
 			eventListeners.put(type, listeners);
 			if (external) {
-				((InternalProcessRuntime) ((InternalWorkingMemory) getWorkingMemory()).getProcessRuntime())
-					.getSignalManager().addEventListener(type,
-						this);
+				((InternalProcessRuntime) getKnowledgeRuntime().getProcessRuntime())
+					.getSignalManager().addEventListener(type, this);
 			}
 		}
 		listeners.add(listener);
@@ -389,7 +385,7 @@
 			if (listeners.isEmpty()) {
 				eventListeners.remove(type);
 				if (external) {
-					((InternalProcessRuntime) ((InternalWorkingMemory) getWorkingMemory()).getProcessRuntime())
+					((InternalProcessRuntime) getKnowledgeRuntime().getProcessRuntime())
 						.getSignalManager().removeEventListener(type, this);
 				}
 			}
@@ -402,7 +398,7 @@
 
 	private void removeEventListeners() {
 		for (String type : externalEventListeners.keySet()) {
-			((InternalProcessRuntime) ((InternalWorkingMemory) getWorkingMemory()).getProcessRuntime())
+			((InternalProcessRuntime) getKnowledgeRuntime().getProcessRuntime())
 				.getSignalManager().removeEventListener(type, this);
 		}
 	}

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,15 +16,8 @@
 
 package org.drools.workflow.instance.node;
 
-import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.SequentialKnowledgeHelper;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.impl.Action;
 import org.drools.runtime.process.NodeInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.node.ActionNode;
 import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -49,10 +42,9 @@
         }
 		Action action = (Action) getActionNode().getAction().getMetaData("Action");
 		try {
-		    KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
-		    ProcessContext context = new ProcessContext(((InternalWorkingMemory) getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
+		    ProcessContext context = new ProcessContext(getProcessInstance().getKnowledgeRuntime());
 		    context.setNodeInstance(this);
-	        action.execute(knowledgeHelper, ((ProcessInstance) getProcessInstance()).getWorkingMemory(), context);		    
+	        action.execute(context);		    
 		} catch (Exception e) {
 		    throw new RuntimeException("unable to execute Action", e);
 		}
@@ -63,13 +55,4 @@
         triggerCompleted(org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE, true);
     }
     
-    private KnowledgeHelper createKnowledgeHelper() {
-        WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
-        if ( ((InternalRuleBase) workingMemory.getRuleBase()).getConfiguration().isSequential() ) {
-            return new SequentialKnowledgeHelper( workingMemory );
-        } else {
-            return new DefaultKnowledgeHelper( workingMemory );
-        }
-    }
-
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,6 +18,8 @@
 
 import org.drools.definition.process.Node;
 import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.AgendaImpl;
+import org.drools.runtime.rule.impl.InternalAgenda;
 import org.drools.workflow.core.impl.NodeImpl;
 import org.drools.workflow.core.node.DynamicNode;
 
@@ -34,8 +36,9 @@
 	}
 	
     public void internalTrigger(NodeInstance from, String type) {
-    	getProcessInstance().getWorkingMemory().getAgenda().getRuleFlowGroup(getRuleFlowGroupName()).setAutoDeactivate(false);
-    	getProcessInstance().getWorkingMemory().getAgenda().activateRuleFlowGroup(
+    	InternalAgenda agenda =  (InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda();
+    	((AgendaImpl) agenda).getAgenda().getRuleFlowGroup(getRuleFlowGroupName()).setAutoDeactivate(false);
+    	agenda.activateRuleFlowGroup(
 			getRuleFlowGroupName(), getProcessInstance().getId(), getUniqueId());
 //    	if (getDynamicNode().isAutoComplete() && getNodeInstances(false).isEmpty()) {
 //    		triggerCompleted(NodeImpl.CONNECTION_DEFAULT_TYPE);
@@ -51,7 +54,8 @@
 	}
 	
     public void triggerCompleted(String outType) {
-    	getProcessInstance().getWorkingMemory().getAgenda().deactivateRuleFlowGroup(getRuleFlowGroupName());
+    	((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
+    		.deactivateRuleFlowGroup(getRuleFlowGroupName());
     	super.triggerCompleted(outType);
     }
 

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,23 +18,21 @@
 
 import java.util.Map;
 
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.event.ProcessEventSupport;
 import org.drools.process.instance.InternalProcessRuntime;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.WorkItemManager;
 import org.drools.process.instance.impl.WorkItemImpl;
-import org.drools.runtime.process.ProcessRuntime;
+import org.drools.runtime.KnowledgeRuntime;
 import org.drools.runtime.process.WorkItem;
 import org.drools.workflow.instance.WorkflowProcessInstance;
 
-
 public class DynamicUtils {
 	
 	public static void addDynamicWorkItem(
-			DynamicNodeInstance dynamicContext, ProcessRuntime ksession,
+			DynamicNodeInstance dynamicContext, KnowledgeRuntime ksession,
 			String workItemName, Map<String, Object> parameters) {
 		WorkflowProcessInstance processInstance = dynamicContext.getProcessInstance();
 		WorkItemImpl workItem = new WorkItemImpl();
@@ -47,34 +45,32 @@
 		workItemNodeInstance.setProcessInstance(processInstance);
 		workItemNodeInstance.internalSetWorkItem(workItem);
     	workItemNodeInstance.addEventListeners();
-		InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
-		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-			.getProcessEventSupport().fireBeforeNodeTriggered(workItemNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+		ProcessEventSupport eventSupport = ((InternalProcessRuntime)
+			((InternalKnowledgeRuntime) ksession).getProcessRuntime()).getProcessEventSupport();
+		eventSupport.fireBeforeNodeTriggered(workItemNodeInstance, ksession);
 		((WorkItemManager) ksession.getWorkItemManager()).internalExecuteWorkItem(workItem);
-		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-			.getProcessEventSupport().fireAfterNodeTriggered(workItemNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+		eventSupport.fireAfterNodeTriggered(workItemNodeInstance, ksession);
 	}
 
 	public static void addDynamicSubProcess(
-			DynamicNodeInstance dynamicContext, ProcessRuntime ksession,
+			DynamicNodeInstance dynamicContext, KnowledgeRuntime ksession,
 			String processId, Map<String, Object> parameters) {
 		WorkflowProcessInstance processInstance = dynamicContext.getProcessInstance();
 		SubProcessNodeInstance subProcessNodeInstance = new SubProcessNodeInstance();
     	subProcessNodeInstance.setNodeInstanceContainer(dynamicContext);
 		subProcessNodeInstance.setProcessInstance(processInstance);
-		InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
-		Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess(processId);
+		Process process = ksession.getKnowledgeBase().getProcess(processId);
         if (process == null) {
         	System.err.println("Could not find process " + processId);
         	System.err.println("Aborting process");
         	processInstance.setState(ProcessInstance.STATE_ABORTED);
         } else {
-        	((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-        		.getProcessEventSupport().fireBeforeNodeTriggered(subProcessNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+        	ProcessEventSupport eventSupport = ((InternalProcessRuntime)
+    			((InternalKnowledgeRuntime) ksession).getProcessRuntime()).getProcessEventSupport();
+    		eventSupport.fireBeforeNodeTriggered(subProcessNodeInstance, ksession);
     		ProcessInstance subProcessInstance = (ProcessInstance)
-	    		workingMemory.startProcess(processId, parameters);
-    		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-    			.getProcessEventSupport().fireAfterNodeTriggered(subProcessNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+	    		ksession.startProcess(processId, parameters);
+    		eventSupport.fireAfterNodeTriggered(subProcessNodeInstance, ksession);
     		if (subProcessInstance.getState() == ProcessInstance.STATE_COMPLETED) {
 	    		subProcessNodeInstance.triggerCompleted();
 	    	} else {

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,8 +16,7 @@
 
 package org.drools.workflow.instance.node;
 
-import org.drools.WorkingMemory;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.InternalProcessRuntime;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.runtime.process.NodeInstance;
@@ -47,18 +46,18 @@
         ((NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);
         if (getEndNode().isTerminate()) {
         	boolean hidden = false;
-        	if (getNode().getMetaData("hidden") != null) {
+        	if (getNode().getMetaData().get("hidden") != null) {
         		hidden = true;
         	}
-        	WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+        	InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
         	if (!hidden) {
-        		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-        			.getProcessEventSupport().fireBeforeNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+        		((InternalProcessRuntime) kruntime.getProcessRuntime())
+        			.getProcessEventSupport().fireBeforeNodeLeft(this, kruntime);
         	}
         	((ProcessInstance) getProcessInstance()).setState( ProcessInstance.STATE_COMPLETED );
             if (!hidden) {
-            	((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-            		.getProcessEventSupport().fireAfterNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+            	((InternalProcessRuntime) kruntime.getProcessRuntime())
+            		.getProcessEventSupport().fireAfterNodeLeft(this, kruntime);
             }
         } else {
             ((NodeInstanceContainer) getNodeInstanceContainer())

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,23 +19,24 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import org.drools.WorkingMemory;
 import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.InternalAgenda;
 import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.event.ActivationCancelledEvent;
-import org.drools.event.ActivationCreatedEvent;
-import org.drools.event.AfterActivationFiredEvent;
-import org.drools.event.AgendaEventListener;
-import org.drools.event.AgendaGroupPoppedEvent;
-import org.drools.event.AgendaGroupPushedEvent;
-import org.drools.event.BeforeActivationFiredEvent;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.event.RuleFlowGroupActivatedEvent;
 import org.drools.event.RuleFlowGroupDeactivatedEvent;
+import org.drools.event.rule.ActivationCancelledEvent;
+import org.drools.event.rule.ActivationCreatedEvent;
+import org.drools.event.rule.AfterActivationFiredEvent;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.AgendaGroupPoppedEvent;
+import org.drools.event.rule.AgendaGroupPushedEvent;
+import org.drools.event.rule.BeforeActivationFiredEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.rule.Declaration;
+import org.drools.rule.Rule;
 import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
 import org.drools.spi.Activation;
 import org.drools.workflow.core.node.MilestoneNode;
 
@@ -60,7 +61,7 @@
         }
         String rule = "RuleFlow-Milestone-" + getProcessInstance().getProcessId()
         	+ "-" + getMilestoneNode().getUniqueId();
-        boolean isActive = ((InternalAgenda) getProcessInstance().getAgenda())
+        boolean isActive = ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
 			.isRuleActiveInRuleFlowGroup("DROOLS_SYSTEM", rule, getProcessInstance().getId());
         if (isActive) {
         	triggerCompleted();
@@ -75,7 +76,7 @@
             Declaration declaration = (Declaration) it.next();
             if ("processInstance".equals(declaration.getIdentifier())) {
             	Object value = declaration.getValue(
-        			(InternalWorkingMemory) getProcessInstance().getWorkingMemory(),
+        			((StatefulKnowledgeSessionImpl) getProcessInstance().getKnowledgeRuntime()).session,
         			((InternalFactHandle) activation.getTuple().get(declaration)).getObject());
             	if (value instanceof ProcessInstance) {
             		return ((ProcessInstance) value).getId() == getProcessInstance().getId();
@@ -91,31 +92,25 @@
     }
     
     private void addActivationListener() {
-    	((ProcessInstance) getProcessInstance()).getWorkingMemory().addEventListener(this);
+    	getProcessInstance().getKnowledgeRuntime().addEventListener(this);
     }
 
     public void removeEventListeners() {
         super.removeEventListeners();
-        ((ProcessInstance) getProcessInstance()).getWorkingMemory().removeEventListener(this);
+        getProcessInstance().getKnowledgeRuntime().removeEventListener(this);
     }
 
-    public void activationCancelled(ActivationCancelledEvent event,
-            WorkingMemory workingMemory) {
-        // Do nothing
-    }
-
-    public void activationCreated(ActivationCreatedEvent event,
-            WorkingMemory workingMemory) {
+    public void activationCreated(ActivationCreatedEvent event) {
         // check whether this activation is from the DROOLS_SYSTEM agenda group
-        String ruleFlowGroup = event.getActivation().getRule().getRuleFlowGroup();
+        String ruleFlowGroup = ((Rule) event.getActivation().getRule()).getRuleFlowGroup();
         if ("DROOLS_SYSTEM".equals(ruleFlowGroup)) {
             // new activations of the rule associate with a milestone node
             // trigger node instances of that milestone node
             String ruleName = event.getActivation().getRule().getName();
             String milestoneName = "RuleFlow-Milestone-" + getProcessInstance().getProcessId() + "-" + getNodeId();
-            if (milestoneName.equals(ruleName) && checkProcessInstance(event.getActivation())) {
-        		if ( !((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).getActionQueue().isEmpty() ) {
-        			((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).executeQueuedActions();
+            if (milestoneName.equals(ruleName) && checkProcessInstance((Activation) event.getActivation())) {
+        		if ( !((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).getActionQueue().isEmpty() ) {
+        			((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).executeQueuedActions();
                 }
             	synchronized(getProcessInstance()) {
 	                removeEventListeners();
@@ -125,40 +120,36 @@
         }
     }
 
-    public void afterActivationFired(AfterActivationFiredEvent event,
-            WorkingMemory workingMemory) {
+    public void activationCancelled(ActivationCancelledEvent event) {
         // Do nothing
     }
 
-    public void agendaGroupPopped(AgendaGroupPoppedEvent event,
-            WorkingMemory workingMemory) {
+    public void afterActivationFired(AfterActivationFiredEvent event) {
         // Do nothing
     }
 
-    public void agendaGroupPushed(AgendaGroupPushedEvent event,
-            WorkingMemory workingMemory) {
+    public void agendaGroupPopped(AgendaGroupPoppedEvent event) {
         // Do nothing
     }
 
-    public void beforeActivationFired(BeforeActivationFiredEvent event,
-            WorkingMemory workingMemory) {
+    public void agendaGroupPushed(AgendaGroupPushedEvent event) {
         // Do nothing
     }
 
-	public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event,
-			WorkingMemory workingMemory) {
+    public void beforeActivationFired(BeforeActivationFiredEvent event) {
+        // Do nothing
+    }
+
+	public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
 	}
 
-	public void afterRuleFlowGroupDeactivated(
-			RuleFlowGroupDeactivatedEvent event, WorkingMemory workingMemory) {
+	public void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
 	}
 
-	public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event,
-			WorkingMemory workingMemory) {
+	public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
 	}
 
-	public void beforeRuleFlowGroupDeactivated(
-			RuleFlowGroupDeactivatedEvent event, WorkingMemory workingMemory) {
+	public void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
 	}
 
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,9 +16,9 @@
 
 package org.drools.workflow.instance.node;
 
-import org.drools.process.instance.ProcessInstance;
 import org.drools.runtime.process.EventListener;
 import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
 import org.drools.workflow.core.node.RuleSetNode;
 
 /**
@@ -39,7 +39,8 @@
             throw new IllegalArgumentException( "A RuleSetNode only accepts default incoming connections!" );
         }
         addRuleSetListener();
-        ((ProcessInstance) getProcessInstance()).getAgenda().activateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup(), getProcessInstance().getId(), getUniqueId() );
+        ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
+        	.activateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup(), getProcessInstance().getId(), getUniqueId() );
     }
 
     public void addEventListeners() {
@@ -62,7 +63,8 @@
 
     public void cancel() {
         super.cancel();
-        ((ProcessInstance) getProcessInstance()).getAgenda().deactivateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup() );
+        ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
+        	.deactivateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup() );
     }
 
 	public void signalEvent(String type, Object event) {

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -22,9 +22,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.WorkingMemory;
-import org.drools.common.EventSupport;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Connection;
 import org.drools.definition.process.Node;
 import org.drools.process.core.context.exclusive.ExclusiveGroup;
@@ -32,10 +30,10 @@
 import org.drools.process.instance.InternalProcessRuntime;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.context.exclusive.ExclusiveGroupInstance;
+import org.drools.process.instance.impl.ConstraintEvaluator;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.workflow.core.node.Split;
 import org.drools.workflow.instance.NodeInstanceContainer;
-import org.drools.workflow.instance.impl.ConstraintEvaluator;
 import org.drools.workflow.instance.impl.NodeInstanceImpl;
 
 /**
@@ -176,19 +174,19 @@
         	        		return;
         	        	}
         	        	boolean hidden = false;
-        	        	if (getNode().getMetaData("hidden") != null) {
+        	        	if (getNode().getMetaData().get("hidden") != null) {
         	        		hidden = true;
         	        	}
-        	        	WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+        	        	InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
         	        	if (!hidden) {
-        	        		((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-        	        			.getProcessEventSupport().fireBeforeNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+        	        		((InternalProcessRuntime) kruntime.getProcessRuntime())
+        	        			.getProcessEventSupport().fireBeforeNodeLeft(this, kruntime);
         	        	}
         	            ((org.drools.workflow.instance.NodeInstance) entry.getKey())
         	        		.trigger(this, entry.getValue());
         	            if (!hidden) {
-        	            	((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
-        	            		.getProcessEventSupport().fireAfterNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+        	            	((InternalProcessRuntime) kruntime.getProcessRuntime())
+        	            		.getProcessEventSupport().fireAfterNodeLeft(this, kruntime);
         	            }
         	        }
                 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -20,7 +20,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.common.InternalWorkingMemory;
 import org.drools.process.core.timer.Timer;
 import org.drools.process.instance.InternalProcessRuntime;
 import org.drools.process.instance.ProcessInstance;
@@ -28,7 +27,6 @@
 import org.drools.process.instance.timer.TimerManager;
 import org.drools.runtime.process.EventListener;
 import org.drools.runtime.process.NodeInstance;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.time.TimeUtils;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.node.StateBasedNode;
@@ -52,8 +50,8 @@
 		if (timers != null) {
 			addTimerListener();
 			timerInstances = new ArrayList<Long>(timers.size());
-			TimerManager timerManager = ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance) 
-				getProcessInstance()).getWorkingMemory()).getProcessRuntime()).getTimerManager();
+			TimerManager timerManager = ((InternalProcessRuntime) 
+				getProcessInstance().getKnowledgeRuntime().getProcessRuntime()).getTimerManager();
 			for (Timer timer: timers.keySet()) {
 				TimerInstance timerInstance = createTimerInstance(timer); 
 				timerManager.registerTimer(timerInstance, (ProcessInstance) getProcessInstance());
@@ -86,8 +84,7 @@
     private void triggerTimer(TimerInstance timerInstance) {
     	for (Map.Entry<Timer, DroolsAction> entry: getEventBasedNode().getTimers().entrySet()) {
     		if (entry.getKey().getId() == timerInstance.getTimerId()) {
-    			KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
-    			executeAction(entry.getValue(), knowledgeHelper);
+    			executeAction(entry.getValue());
     			return;
     		}
     	}
@@ -137,8 +134,8 @@
 	private void cancelTimers() {
 		// deactivate still active timers
 		if (timerInstances != null) {
-			TimerManager timerManager = ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance) 
-					getProcessInstance()).getWorkingMemory()).getProcessRuntime()).getTimerManager();
+			TimerManager timerManager = ((InternalProcessRuntime)
+				getProcessInstance().getKnowledgeRuntime().getProcessRuntime()).getTimerManager();
 			for (Long id: timerInstances) {
 				timerManager.cancelTimer(id);
 			}

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,16 +19,16 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.InternalAgenda;
 import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Connection;
 import org.drools.event.ActivationCreatedEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.rule.Declaration;
 import org.drools.runtime.process.EventListener;
 import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
 import org.drools.spi.Activation;
 import org.drools.workflow.core.Constraint;
 import org.drools.workflow.core.impl.ExtendedNodeImpl;
@@ -57,7 +57,7 @@
 	            	getStateNode().getUniqueId() + "-" + 
 	            	connection.getTo().getId() + "-" + 
 	            	connection.getToType();
-		        boolean isActive = ((InternalAgenda) getProcessInstance().getAgenda())
+		        boolean isActive = ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
 		            .isRuleActiveInRuleFlowGroup("DROOLS_SYSTEM", rule, getProcessInstance().getId());
 		        if (isActive) {
 		            selected = connection;
@@ -145,7 +145,7 @@
             Declaration declaration = (Declaration) it.next();
             if ("processInstance".equals(declaration.getIdentifier())) {
             	Object value = declaration.getValue(
-        			(InternalWorkingMemory) getProcessInstance().getWorkingMemory(),
+        			((StatefulKnowledgeSessionImpl) getProcessInstance().getKnowledgeRuntime()).session,
         			((InternalFactHandle) activation.getTuple().get(declaration)).getObject());
             	if (value instanceof ProcessInstance) {
             		return ((ProcessInstance) value).getId() == getProcessInstance().getId();
@@ -168,8 +168,8 @@
             }
         }
         if (selected != null) {
-    		if ( !((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).getActionQueue().isEmpty() ) {
-    			((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).executeQueuedActions();
+    		if ( !((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).getActionQueue().isEmpty() ) {
+    			((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).executeQueuedActions();
             }
         	removeEventListeners();
         	((NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -107,15 +107,15 @@
         	processId = processId.replace("#{" + replacement.getKey() + "}", replacement.getValue());
         }
         // start process instance
-        Process process = ((InternalRuleBase) ((ProcessInstance) getProcessInstance())
-    		.getWorkingMemory().getRuleBase()).getProcess(processId);
+        Process process = ((ProcessInstance) getProcessInstance())
+    		.getKnowledgeRuntime().getKnowledgeBase().getProcess(processId);
         if (process == null) {
         	System.err.println("Could not find process " + processId);
         	System.err.println("Aborting process");
         	((ProcessInstance) getProcessInstance()).setState(ProcessInstance.STATE_ABORTED);
         } else {
 	    	ProcessInstance processInstance = ( ProcessInstance )
-	    		((ProcessInstance) getProcessInstance()).getWorkingMemory()
+	    		((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
 	    			.startProcess(processId, parameters);
 	    	if (!getSubProcessNode().isWaitForCompletion()) {
 	    		triggerCompleted();
@@ -133,7 +133,7 @@
         super.cancel();
         if (getSubProcessNode() == null || !getSubProcessNode().isIndependent()) {
             ProcessInstance processInstance = (ProcessInstance)
-                ((ProcessInstance) getProcessInstance()).getWorkingMemory()
+                ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
                     .getProcessInstance(processInstanceId);
             if (processInstance != null) {
             	processInstance.setState(ProcessInstance.STATE_ABORTED);

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,7 +16,6 @@
 
 package org.drools.workflow.instance.node;
 
-import org.drools.common.InternalWorkingMemory;
 import org.drools.process.core.timer.Timer;
 import org.drools.process.instance.InternalProcessRuntime;
 import org.drools.process.instance.ProcessInstance;
@@ -54,9 +53,8 @@
         if (getTimerInstances() == null) {
         	addTimerListener();
         }
-        ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance) 
-			getProcessInstance()).getWorkingMemory()).getProcessRuntime()).getTimerManager()
-            	.registerTimer(timer, (ProcessInstance) getProcessInstance());
+        ((InternalProcessRuntime) getProcessInstance().getKnowledgeRuntime().getProcessRuntime())
+        	.getTimerManager().registerTimer(timer, (ProcessInstance) getProcessInstance());
         timerId = timer.getId();
     }
     
@@ -91,9 +89,8 @@
     }
     
     public void cancel() {
-    	((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance) 
-			getProcessInstance()).getWorkingMemory()).getProcessRuntime())
-				.getTimerManager().cancelTimer(timerId);
+    	((InternalProcessRuntime) getProcessInstance().getKnowledgeRuntime()
+			.getProcessRuntime()).getTimerManager().cancelTimer(timerId);
         super.cancel();
     }
     

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,15 +16,12 @@
 
 package org.drools.workflow.instance.node;
 
-import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
 import org.drools.definition.process.Node;
 import org.drools.process.core.Work;
 import org.drools.process.core.context.variable.VariableScope;
@@ -33,6 +30,7 @@
 import org.drools.process.instance.WorkItemManager;
 import org.drools.process.instance.context.variable.VariableScopeInstance;
 import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.runtime.KnowledgeRuntime;
 import org.drools.runtime.process.EventListener;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.workflow.core.node.WorkItemNode;
@@ -60,7 +58,7 @@
     public WorkItem getWorkItem() {
     	if (workItem == null && workItemId >= 0) {
     		workItem = ((WorkItemManager) ((ProcessInstance) getProcessInstance())
-				.getWorkingMemory().getWorkItemManager()).getWorkItem(workItemId);
+				.getKnowledgeRuntime().getWorkItemManager()).getWorkItem(workItemId);
     	}
         return workItem;
     }
@@ -78,8 +76,8 @@
     }
     
     public boolean isInversionOfControl() {
-        return ((InternalRuleBase) ((ProcessInstance) getProcessInstance())
-    		.getWorkingMemory().getRuleBase()).getConfiguration().isAdvancedProcessRuleIntegration();
+    	// TODO
+        return false;
     }
 
     public void internalTrigger(final NodeInstance from, String type) {
@@ -95,11 +93,11 @@
 		    addWorkItemListener();
         }
 		if (isInversionOfControl()) {
-			((ProcessInstance) getProcessInstance()).getWorkingMemory()
-				.update(((ProcessInstance) getProcessInstance()).getWorkingMemory().getFactHandle(this), this);
+			((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
+				.update(((ProcessInstance) getProcessInstance()).getKnowledgeRuntime().getFactHandle(this), this);
 		} else {
 		    ((WorkItemManager) ((ProcessInstance) getProcessInstance())
-	    		.getWorkingMemory().getWorkItemManager()).internalExecuteWorkItem(workItem);
+	    		.getKnowledgeRuntime().getWorkItemManager()).internalExecuteWorkItem(workItem);
 		}
         if (!workItemNode.isWaitForCompletion()) {
             triggerCompleted();
@@ -195,8 +193,8 @@
 	        }
     	}
         if (isInversionOfControl()) {
-            WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
-            workingMemory.update(workingMemory.getFactHandle(this), this);
+            KnowledgeRuntime kruntime = ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime();
+            kruntime.update(kruntime.getFactHandle(this), this);
         } else {
             triggerCompleted();
         }
@@ -208,7 +206,7 @@
     			workItem.getState() != WorkItem.COMPLETED && 
     			workItem.getState() != WorkItem.ABORTED) {
     		((WorkItemManager) ((ProcessInstance) getProcessInstance())
-				.getWorkingMemory().getWorkItemManager()).internalAbortWorkItem(workItemId);
+				.getKnowledgeRuntime().getWorkItemManager()).internalAbortWorkItem(workItemId);
     	}
         super.cancel();
     }

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -25,11 +25,10 @@
 import org.drools.KnowledgeBaseFactory;
 import org.drools.definition.KnowledgePackage;
 import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.process.instance.impl.Action;
 import org.drools.rule.Package;
 import org.drools.ruleflow.core.RuleFlowProcess;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.Node;
@@ -59,9 +58,7 @@
         actionNode.setName("Print");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-			public void execute(KnowledgeHelper knowledgeHelper,
-					org.drools.WorkingMemory workingMemory,
-					ProcessContext context) throws Exception {
+			public void execute(ProcessContext context) throws Exception {
             	System.out.println("Executed action");
 			}
         });

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,19 +21,21 @@
 
 import junit.framework.TestCase;
 
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
 import org.drools.Person;
 import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
 import org.drools.common.AbstractRuleBase;
 import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
 import org.drools.process.core.context.variable.Variable;
 import org.drools.process.core.datatype.impl.type.ObjectDataType;
 import org.drools.process.core.event.EventTypeFilter;
+import org.drools.process.instance.impl.Action;
 import org.drools.reteoo.ReteooWorkingMemory;
 import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.Node;
@@ -91,7 +93,7 @@
         actionNode.setName("Print");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
                 myList.add("Executed action");
             }
@@ -127,10 +129,11 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
+        
+        ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
         assertEquals(0, myList.size());
         Person jack = new Person();
         jack.setName("Jack");
@@ -190,7 +193,7 @@
         actionNode.setName("Print");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
                 myList.add("Executed action");
             }
@@ -213,10 +216,11 @@
             endNode2, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
+        
+        ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
         assertEquals(0, myList.size());
         Person jack = new Person();
         jack.setName("Jack");
@@ -260,7 +264,7 @@
         actionNode.setName("Print");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
                 myList.add("Executed action");
             }
@@ -285,7 +289,7 @@
         actionNode2.setName("Print");
         action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Detected other event for person " + ((Person) context.getVariable("event")).getName());
                 myList.add("Executed action");
             }
@@ -325,10 +329,11 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
+        
+        ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
         assertEquals(0, myList.size());
         Person jack = new Person();
         jack.setName("Jack");
@@ -376,7 +381,7 @@
         actionNode.setName("Print");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
                 myList.add("Executed action");
             }
         });
@@ -399,7 +404,7 @@
         actionNode2.setName("Print");
         action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
                 myList.add("Executed action");
             }
         });
@@ -438,10 +443,11 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
+        
+        ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
         assertEquals(0, myList.size());
         processInstance.signalEvent("myEvent", null);
         assertEquals(2, myList.size());
@@ -494,7 +500,7 @@
         actionNode.setName("Print");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
                 myList.add("Executed action");
             }
@@ -529,10 +535,11 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
+        
+        ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
         assertEquals(0, myList.size());
         Person jack = new Person();
         jack.setName("Jack");

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -23,18 +23,17 @@
 
 import junit.framework.TestCase;
 
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
 import org.drools.Person;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
 import org.drools.common.AbstractRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
 import org.drools.process.core.context.variable.Variable;
 import org.drools.process.core.datatype.impl.type.ListDataType;
 import org.drools.process.core.datatype.impl.type.ObjectDataType;
-import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.process.instance.impl.Action;
 import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.Node;
@@ -92,7 +91,7 @@
         actionNode.setName("Print child");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Executed action for child " + ((Person) context.getVariable("child")).getName());
                 myList.add("Executed action");
             }
@@ -107,16 +106,17 @@
             Node.CONNECTION_DEFAULT_TYPE);
         forEachNode.setVariable("child", personDataType);
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
+        
         Map<String, Object> parameters = new HashMap<String, Object>();
         List<Person> persons = new ArrayList<Person>();
         persons.add(new Person("John Doe"));
         persons.add(new Person("Jane Doe"));
         persons.add(new Person("Jack"));
         parameters.put("persons", persons);
-        workingMemory.startProcess("org.drools.process.foreach", parameters);
+        ksession.startProcess("org.drools.process.foreach", parameters);
         assertEquals(3, myList.size());
     }
 

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,19 +18,18 @@
 
 import junit.framework.TestCase;
 
-import org.drools.RuleBaseFactory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
 import org.drools.common.AbstractRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
 import org.drools.process.core.Work;
 import org.drools.process.core.impl.WorkImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.process.instance.impl.Action;
 import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.WorkItem;
 import org.drools.runtime.process.WorkItemHandler;
 import org.drools.runtime.process.WorkItemManager;
-import org.drools.WorkingMemory;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.ProcessContext;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.Node;
@@ -79,8 +78,8 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
         
         process = new RuleFlowProcess();
         process.setId("org.drools.process.subprocess");
@@ -98,7 +97,7 @@
         actionNode.setName("Action");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+            public void execute(ProcessContext context) throws Exception {
             	System.out.println("Executed action");
             	executed = true;
             }
@@ -114,12 +113,12 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        ruleBase.addProcess(process);
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
         
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        workingMemory.startProcess("org.drools.process.process");
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        ksession.startProcess("org.drools.process.process");
         assertTrue(executed);
-        assertEquals(0, workingMemory.getProcessInstances().size());
+        assertEquals(0, ksession.getProcessInstances().size());
     }
 
     public void testAsynchronousSubProcess() {
@@ -149,8 +148,8 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
-        ruleBase.addProcess(process);
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
         
         process = new RuleFlowProcess();
         process.setId("org.drools.process.subprocess");
@@ -179,10 +178,10 @@
             endNode, Node.CONNECTION_DEFAULT_TYPE
         );
         
-        ruleBase.addProcess(process);
+        ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
         
-        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        workingMemory.getWorkItemManager().registerWorkItemHandler("MyWork", new WorkItemHandler() {
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        ksession.getWorkItemManager().registerWorkItemHandler("MyWork", new WorkItemHandler() {
 			public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
 				System.out.println("Executing work item");
 				SubProcessTest.this.workItem = workItem;
@@ -190,12 +189,12 @@
 			public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
 			}
         });
-        workingMemory.startProcess("org.drools.process.process");
+        ksession.startProcess("org.drools.process.process");
         assertNotNull(workItem);
-        assertEquals(2, workingMemory.getProcessInstances().size());
+        assertEquals(2, ksession.getProcessInstances().size());
         
-        workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), null);
-        assertEquals(0, workingMemory.getProcessInstances().size());
+        ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+        assertEquals(0, ksession.getProcessInstances().size());
     }
     
 }

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -55,7 +55,7 @@
         		}
         	}
         };
-        processInstance.setWorkingMemory((InternalWorkingMemory) workingMemory);
+        processInstance.setKnowledgeRuntime(((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
         processInstance.setId(1234);
         ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime()).getProcessInstanceManager()
         	.internalAddProcessInstance(processInstance);

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -23,18 +23,27 @@
 import java.util.List;
 
 import org.drools.DroolsTestCase;
-import org.drools.RuleBaseFactory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.WorkingMemory;
 import org.drools.base.SalienceInteger;
 import org.drools.common.DefaultAgenda;
 import org.drools.common.DefaultFactHandle;
+import org.drools.common.InternalAgenda;
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.common.PropagationContextImpl;
 import org.drools.common.RuleFlowGroupImpl;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.impl.ConstraintEvaluator;
 import org.drools.reteoo.builder.BuildContext;
 import org.drools.rule.Rule;
 import org.drools.ruleflow.core.RuleFlowProcess;
 import org.drools.ruleflow.instance.RuleFlowProcessInstance;
-import org.drools.WorkingMemory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.impl.AgendaImpl;
 import org.drools.spi.Consequence;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.PropagationContext;
@@ -46,26 +55,27 @@
 import org.drools.workflow.core.node.RuleSetNode;
 import org.drools.workflow.core.node.Split;
 import org.drools.workflow.core.node.StartNode;
-import org.drools.workflow.instance.impl.ConstraintEvaluator;
 
 /**
  * @author mproctor
  */
 
 public class RuleFlowGroupTest extends DroolsTestCase {
-    private ReteooRuleBase ruleBase;
-    private BuildContext   buildContext;
+    private KnowledgeBase kbase;
+    private BuildContext  buildContext;
 
     protected void setUp() throws Exception {
-        ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
+        kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        ReteooRuleBase ruleBase = (ReteooRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase();
         buildContext = new BuildContext( ruleBase,
-                                         ((ReteooRuleBase) ruleBase).getReteooBuilder().getIdGenerator() );
+                                         ruleBase.getReteooBuilder().getIdGenerator() );
     }
 
     public void testRuleFlowGroup() {
-        final ReteooWorkingMemory workingMemory = (ReteooWorkingMemory) ruleBase.newStatefulSession();
+        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
 
-        final DefaultAgenda agenda = (DefaultAgenda) workingMemory.getAgenda();
+        final InternalAgenda agenda = ((AgendaImpl) ksession.getAgenda()).getAgenda();
 
         final List list = new ArrayList();
 
@@ -214,7 +224,7 @@
 
         // proces instance
         final RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
-        processInstance.setWorkingMemory( workingMemory );
+        processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
         processInstance.setProcess( process );
         assertEquals( ProcessInstance.STATE_PENDING,
                       processInstance.getState() );
@@ -348,7 +358,8 @@
 
     /** XOR split and join */
     public void testRuleFlowGroup2() {
-        final ReteooWorkingMemory workingMemory = (ReteooWorkingMemory) ruleBase.newStatefulSession();
+        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
 
         final DefaultAgenda agenda = (DefaultAgenda) workingMemory.getAgenda();
 
@@ -484,11 +495,11 @@
                             Node.CONNECTION_DEFAULT_TYPE,
                             end,
                             Node.CONNECTION_DEFAULT_TYPE );
-        ConstraintEvaluator constraint1 = new org.drools.workflow.instance.impl.RuleConstraintEvaluator();
+        ConstraintEvaluator constraint1 = new org.drools.process.instance.impl.RuleConstraintEvaluator();
         constraint1.setPriority( 1 );
         split.setConstraint( out1,
                              constraint1 );
-        ConstraintEvaluator constraint2 = new org.drools.workflow.instance.impl.RuleConstraintEvaluator();
+        ConstraintEvaluator constraint2 = new org.drools.process.instance.impl.RuleConstraintEvaluator();
         constraint2.setPriority( 2 );
         split.setConstraint( out2,
                              constraint2 );
@@ -528,7 +539,7 @@
 
         // proces instance
         final RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
-        processInstance.setWorkingMemory( workingMemory );
+        processInstance.setKnowledgeRuntime( workingMemory.getKnowledgeRuntime() );
         processInstance.setProcess( process );
         assertEquals( ProcessInstance.STATE_PENDING,
                       processInstance.getState() );

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,12 +19,12 @@
 
 import junit.framework.TestCase;
 
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.impl.ConnectionImpl;
 import org.drools.workflow.core.impl.WorkflowProcessImpl;
@@ -34,8 +34,8 @@
 public class EndNodeInstanceTest extends TestCase {
     
     public void testEndNode() {
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        StatefulSession session = ruleBase.newStatefulSession();        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
         
         MockNode mockNode = new MockNode();        
         MockNodeInstanceFactory factory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
@@ -56,7 +56,7 @@
         RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();   
         processInstance.setState( ProcessInstance.STATE_ACTIVE );
         processInstance.setProcess( process );
-        processInstance.setWorkingMemory( (InternalWorkingMemory) session );
+        processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
         
         MockNodeInstance mockNodeInstance = ( MockNodeInstance ) processInstance.getNodeInstance( mockNode );
         

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,13 +21,13 @@
 
 import junit.framework.TestCase;
 
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.ruleflow.core.RuleFlowProcess;
 import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.workflow.core.impl.ConnectionImpl;
 import org.drools.workflow.core.node.StartNode;
@@ -37,8 +37,8 @@
     
     public void testStartNode() {
         
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-        StatefulSession session = ruleBase.newStatefulSession();        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();        
         
         MockNode mockNode = new MockNode();
         MockNodeInstanceFactory mockNodeFactory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
@@ -60,7 +60,7 @@
                 
         RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();   
         processInstance.setProcess( process );
-        processInstance.setWorkingMemory( (InternalWorkingMemory) session );              
+        processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );              
         
         assertEquals(  ProcessInstance.STATE_PENDING, processInstance.getState() );
         processInstance.start();        

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -123,6 +123,11 @@
         return null;
     }
 
+    public Collection<Process> getProcesses() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
     public Rule getRule(String packageName,
                         String ruleName) {
         // TODO Auto-generated method stub

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -26,6 +26,7 @@
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.ExitPoint;
 import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.ObjectFilter;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
@@ -522,5 +523,9 @@
                                    ViewChangedEventListener listener) {
         throw new UnsupportedOperationException( "Not supported yet." );
     }
+    
+    public KnowledgeSessionConfiguration getSessionConfiguration() {
+    	throw new UnsupportedOperationException( "Not supported yet." );
+    }
 
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -86,6 +86,11 @@
         // TODO Auto-generated method stub
         return null;
     }
+    
+    public Collection<Process> getProcesses() {
+    	// TODO Auto-generated method stub
+        return null;
+    }
 
     public Rule getRule(String packageName,
                         String ruleName) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -29,6 +29,7 @@
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.ExitPoint;
 import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.ObjectFilter;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
@@ -547,4 +548,8 @@
                                    ViewChangedEventListener listener) {
         throw new UnsupportedOperationException( "Not supported yet." );
     }
+    
+    public KnowledgeSessionConfiguration getSessionConfiguration() {
+    	throw new UnsupportedOperationException( "Not supported yet." );
+    }
 }

Modified: labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -35,6 +35,7 @@
 import org.drools.SessionConfiguration;
 import org.drools.WorkingMemoryEntryPoint;
 import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.common.InternalRuleBase;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
@@ -63,7 +64,6 @@
 import org.drools.runtime.Channel;
 import org.drools.runtime.Environment;
 import org.drools.runtime.ExitPoint;
-import org.drools.runtime.KnowledgeRuntime;
 import org.drools.runtime.ObjectFilter;
 import org.drools.runtime.impl.ExecutionResultImpl;
 import org.drools.runtime.process.InternalProcessRuntime;
@@ -502,12 +502,12 @@
         
     }
 
-    public KnowledgeRuntime getKnowledgeRuntime() {
+    public InternalKnowledgeRuntime getKnowledgeRuntime() {
         // TODO Auto-generated method stub
         return null;
     }
 
-    public void setKnowledgeRuntime(KnowledgeRuntime kruntime) {
+    public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
         // TODO Auto-generated method stub
         
     }

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -7,9 +7,7 @@
 
 import javax.persistence.EntityManager;
 
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.definition.process.Process;
 import org.drools.process.instance.ProcessInstanceManager;
 import org.drools.process.instance.impl.ProcessInstanceImpl;
@@ -20,16 +18,16 @@
     implements
     ProcessInstanceManager {
 
-    private WorkingMemory workingMemory;
+    private InternalKnowledgeRuntime kruntime;
     private transient Map<Long, ProcessInstance> processInstances;
 
-    public void setWorkingMemory(WorkingMemory workingMemory) {
-        this.workingMemory = workingMemory;
+    public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
+        this.kruntime = kruntime;
     }
 
     public void addProcessInstance(ProcessInstance processInstance) {
-        ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( processInstance, this.workingMemory.getEnvironment() );
-        EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+        ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( processInstance, this.kruntime.getEnvironment() );
+        EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
         em.persist( processInstanceInfo );
         //em.refresh( processInstanceInfo  );
 //        em.flush();
@@ -55,7 +53,7 @@
 	    	}
     	}
     	
-        EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+        EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
         ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
                                                            id );
         if ( processInstanceInfo == null ) {
@@ -63,14 +61,14 @@
         }
         processInstanceInfo.updateLastReadDate();
         processInstance = (org.drools.process.instance.ProcessInstance)
-        	processInstanceInfo.getProcessInstance(workingMemory,this.workingMemory.getEnvironment());
-        Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess( processInstance.getProcessId() );
+        	processInstanceInfo.getProcessInstance(kruntime, this.kruntime.getEnvironment());
+        Process process = kruntime.getKnowledgeBase().getProcess( processInstance.getProcessId() );
         if ( process == null ) {
             throw new IllegalArgumentException( "Could not find process " + processInstance.getProcessId() );
         }
         processInstance.setProcess( process );
-        if ( processInstance.getWorkingMemory() == null ) {
-            processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
+        if ( processInstance.getKnowledgeRuntime() == null ) {
+            processInstance.setKnowledgeRuntime( kruntime );
             ((ProcessInstanceImpl) processInstance).reconnect();
         }
         return processInstance;
@@ -81,7 +79,7 @@
     }
 
     public void removeProcessInstance(ProcessInstance processInstance) {
-        EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+        EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
         ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
                                                            processInstance.getId() );
         if ( processInstanceInfo != null ) {

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,14 +1,14 @@
 package org.drools.persistence.processinstance;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.ProcessInstanceManager;
 import org.drools.process.instance.ProcessInstanceManagerFactory;
 
 public class JPAProcessInstanceManagerFactory implements ProcessInstanceManagerFactory {
 
-	public ProcessInstanceManager createProcessInstanceManager(WorkingMemory workingMemory) {
+	public ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime) {
 		JPAProcessInstanceManager result = new JPAProcessInstanceManager();
-		result.setWorkingMemory(workingMemory);
+		result.setKnowledgeRuntime(kruntime);
 		return result;
 	}
 

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -6,20 +6,20 @@
 import javax.persistence.FlushModeType;
 import javax.persistence.Query;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.event.DefaultSignalManager;
 import org.drools.runtime.EnvironmentName;
 
 public class JPASignalManager extends DefaultSignalManager {
 
-    public JPASignalManager(WorkingMemory workingMemory) {
-        super(workingMemory);
+    public JPASignalManager(InternalKnowledgeRuntime kruntime) {
+        super(kruntime);
     }
     
     public void signalEvent(String type,
                             Object event) {
         for ( long id : getProcessInstancesForEvent( type ) ) {
-            getWorkingMemory().getProcessInstance( id );
+            getKnowledgeRuntime().getProcessInstance( id );
         }
         super.signalEvent( type,
                            event );
@@ -27,7 +27,7 @@
 
     @SuppressWarnings("unchecked")
     private List<Long> getProcessInstancesForEvent(String type) {
-        EntityManager em = (EntityManager) getWorkingMemory().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+        EntityManager em = (EntityManager) getKnowledgeRuntime().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
         
         Query processInstancesForEvent = em.createNamedQuery( "ProcessInstancesWaitingForEvent" );
         processInstancesForEvent.setFlushMode(FlushModeType.COMMIT);

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,13 +1,13 @@
 package org.drools.persistence.processinstance;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.process.instance.event.SignalManager;
 import org.drools.process.instance.event.SignalManagerFactory;
 
 public class JPASignalManagerFactory implements SignalManagerFactory {
 
-	public SignalManager createSignalManager(WorkingMemory workingMemory) {
-		return new JPASignalManager(workingMemory);
+	public SignalManager createSignalManager(InternalKnowledgeRuntime kruntime) {
+		return new JPASignalManager(kruntime);
 	}
 
 }

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -30,9 +30,10 @@
 import javax.persistence.Transient;
 import javax.persistence.Version;
 
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
 import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.marshalling.impl.MarshallerReaderContext;
 import org.drools.marshalling.impl.MarshallerWriteContext;
 import org.drools.marshalling.impl.ProcessInstanceMarshaller;
@@ -138,18 +139,18 @@
         return state;
     }
 
-    public ProcessInstance getProcessInstance(WorkingMemory workingMemory,
+    public ProcessInstance getProcessInstance(InternalKnowledgeRuntime kruntime,
                                               Environment env) {
         this.env = env;
         if ( processInstance == null ) {
             try {
                 ByteArrayInputStream bais = new ByteArrayInputStream( processInstanceByteArray );
                 MarshallerReaderContext context = new MarshallerReaderContext( bais,
-                                                                               (InternalRuleBase) workingMemory.getRuleBase(),
+                                                                               (InternalRuleBase) ((InternalKnowledgeBase) kruntime.getKnowledgeBase()).getRuleBase(),
                                                                                null,
                                                                                null );
-                context.wm = (InternalWorkingMemory) workingMemory;
                 ProcessInstanceMarshaller marshaller = getMarshallerFromContext( context );
+                context.wm = ((StatefulKnowledgeSessionImpl) kruntime).getInternalWorkingMemory();
                 processInstance = marshaller.readProcessInstance( context,
                                                                   !externalVariables );
                 if ( externalVariables ) {

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,33 +1,10 @@
 package org.drools.persistence.jpa;
 
 import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
 
 import junit.framework.TestCase;
 
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
-import org.drools.persistence.session.JPASessionMarshallingHelper;
-import org.drools.process.core.Work;
-import org.drools.process.core.impl.WorkImpl;
-import org.drools.rule.Package;
-import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.runtime.process.ProcessInstance;
 import org.drools.runtime.process.WorkItem;
-import org.drools.runtime.process.WorkItemHandler;
-import org.drools.runtime.process.WorkItemManager;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
-import org.drools.spi.ProcessContext;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.core.impl.ConnectionImpl;
-import org.drools.workflow.core.impl.DroolsConsequenceAction;
-import org.drools.workflow.core.node.ActionNode;
-import org.drools.workflow.core.node.EndNode;
-import org.drools.workflow.core.node.StartNode;
-import org.drools.workflow.core.node.WorkItemNode;
 
 public class JPAPersisterTest extends TestCase {
 	

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,6 +9,7 @@
 	private static TestWorkItemHandler INSTANCE = new TestWorkItemHandler();
 	
 	private WorkItem workItem;
+	private WorkItem aborted;
 	
 	private TestWorkItemHandler() {
 	}
@@ -22,6 +23,7 @@
 	}
 
 	public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+		this.aborted = workItem;
 	}
 	
 	public WorkItem getWorkItem() {
@@ -30,4 +32,10 @@
 		return result;
 	}
 
+	public WorkItem getAbortedWorkItem() {
+		WorkItem result = aborted;
+		aborted = null;
+		return result;
+	}
+
 }

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -20,9 +20,9 @@
 //import javax.script.ScriptEngine;
 //import javax.script.SimpleBindings;
 
-import org.drools.WorkingMemory;
+import org.drools.process.instance.impl.ReturnValueEvaluator;
+import org.drools.runtime.KnowledgeRuntime;
 import org.drools.spi.ProcessContext;
-import org.drools.spi.ReturnValueEvaluator;
 
 public class XPathReturnValueEvaluator implements ReturnValueEvaluator {
     
@@ -34,7 +34,7 @@
 //        this.expression = expression;
     }
 
-    public Object evaluate(WorkingMemory workingMemory, ProcessContext processContext) throws Exception {
+    public Object evaluate(ProcessContext processContext) throws Exception {
 //        ScriptEngine engine = FACTORY.getScriptEngine();
 //        VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
 //            ((ProcessInstance) processContext.getProcessInstance())

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java	2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java	2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,8 +19,8 @@
 import org.drools.compiler.ReturnValueDescr;
 import org.drools.process.builder.ReturnValueEvaluatorBuilder;
 import org.drools.process.core.ContextResolver;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
 import org.drools.rule.builder.PackageBuildContext;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
 
 public class XPathReturnValueEvaluatorBuilder implements ReturnValueEvaluatorBuilder {
 



More information about the jboss-svn-commits mailing list