[jboss-svn-commits] JBL Code SVN: r20325 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/common and 8 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 5 05:38:35 EDT 2008
Author: KrisVerlaenen
Date: 2008-06-05 05:38:35 -0400 (Thu, 05 Jun 2008)
New Revision: 20325
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.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/process/core/impl/ProcessImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/StartNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/drools.default.rulebase.conf
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/workflow/instance/node/MockNodeInstance.java
Log:
- drools-process-enterprise modifications
- runtime upgrading of processes
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -40,12 +40,12 @@
import org.drools.process.core.impl.WorkDefinitionExtensionImpl;
import org.drools.process.instance.ProcessInstanceFactory;
import org.drools.process.instance.ProcessInstanceFactoryRegistry;
+import org.drools.process.instance.ProcessInstanceManager;
import org.drools.process.instance.impl.ContextInstanceFactory;
import org.drools.process.instance.impl.ContextInstanceFactoryRegistry;
import org.drools.spi.ConflictResolver;
import org.drools.spi.ConsequenceExceptionHandler;
import org.drools.util.ChainedProperties;
-import org.drools.util.ClassUtils;
import org.drools.util.ConfFileUtils;
import org.drools.workflow.core.Node;
import org.drools.workflow.instance.impl.NodeInstanceFactory;
@@ -119,10 +119,11 @@
private static final String STAR = "*";
private ContextInstanceFactoryRegistry processContextInstanceFactoryRegistry;
- private Map<String, WorkDefinition> workDefinitions;
+ private Map<String, WorkDefinition> workDefinitions;
private ProcessInstanceFactoryRegistry processInstanceFactoryRegistry;
private NodeInstanceFactoryRegistry processNodeInstanceFactoryRegistry;
+ private ProcessInstanceManager processInstanceManager;
private transient ClassLoader classLoader;
@@ -674,6 +675,40 @@
}
}
+ public ProcessInstanceManager getProcessInstanceManager() {
+ if ( this.processInstanceManager == null ) {
+ initProcessInstanceManager();
+ }
+ return this.processInstanceManager;
+ }
+
+ private void initProcessInstanceManager() {
+ String className = this.chainedProperties.getProperty(
+ "processInstanceManager", "org.drools.process.instance.impl.DefaultProcessInstanceManager");
+ Class clazz = null;
+ try {
+ clazz = Thread.currentThread().getContextClassLoader().loadClass( className );
+ } catch ( ClassNotFoundException e ) {
+ }
+
+ if ( clazz == null ) {
+ try {
+ clazz = RuleBaseConfiguration.class.getClassLoader().loadClass( className );
+ } catch ( ClassNotFoundException e ) {
+ }
+ }
+
+ if ( clazz != null ) {
+ try {
+ this.processInstanceManager = (ProcessInstanceManager) clazz.newInstance();
+ } catch ( Exception e ) {
+ throw new IllegalArgumentException( "Unable to instantiate process instance manager '" + className + "'" );
+ }
+ } else {
+ throw new IllegalArgumentException( "Process instance manager '" + className + "' not found" );
+ }
+ }
+
private boolean determineShadowProxy(String userValue) {
if ( this.isSequential() ) {
// sequential never needs shadowing, so always override
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -561,7 +561,7 @@
final Map flows = newPkg.getRuleFlows();
for ( final Iterator iter = flows.values().iterator(); iter.hasNext(); ) {
final Process flow = (Process) iter.next();
- pkg.addRuleFlow( flow );
+ pkg.addProcess( flow );
}
}
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 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -65,8 +65,10 @@
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.ProcessInstanceFactory;
import org.drools.process.instance.ProcessInstanceFactoryRegistry;
+import org.drools.process.instance.ProcessInstanceManager;
import org.drools.process.instance.WorkItemManager;
import org.drools.process.instance.context.variable.VariableScopeInstance;
+import org.drools.process.instance.impl.DefaultProcessInstanceManager;
import org.drools.process.instance.timer.TimerManager;
import org.drools.reteoo.EntryPointNode;
import org.drools.reteoo.InitialFactHandle;
@@ -166,11 +168,9 @@
protected volatile boolean firing;
protected volatile boolean halt;
+
+ private ProcessInstanceManager processInstanceManager;
- private Map processInstances;
-
- private int processCounter;
-
private WorkItemManager workItemManager;
private TimerManager timerManager;
@@ -224,9 +224,12 @@
this.ruleBase = ruleBase;
this.handleFactory = handleFactory;
this.globalResolver = new MapGlobalResolver();
- this.maintainTms = this.ruleBase.getConfiguration().isMaintainTms();
- this.sequential = this.ruleBase.getConfiguration().isSequential();
+
+ final RuleBaseConfiguration conf = this.ruleBase.getConfiguration();
+ this.maintainTms = conf.isMaintainTms();
+ this.sequential = conf.isSequential();
+
if ( initialFactHandle == null ) {
this.initialFactHandle = new InitialFactHandle( handleFactory.newFactHandle( new InitialFactHandleDummyObject(),
null,
@@ -245,7 +248,7 @@
this.__ruleBaseEventListeners = new LinkedList();
this.lock = new ReentrantLock();
this.liaPropagations = Collections.EMPTY_LIST;
- this.processInstances = new HashMap();
+ this.processInstanceManager = conf.getProcessInstanceManager();
this.timeMachine = new TimeMachine();
this.nodeMemories = new ConcurrentNodeMemories( this.ruleBase );
@@ -256,8 +259,6 @@
this.tms = null;
}
- final RuleBaseConfiguration conf = this.ruleBase.getConfiguration();
-
this.propagationIdCounter = new AtomicLong( propagationContext );
this.objectStore = new SingleThreadedObjectStore( conf,
@@ -1447,9 +1448,7 @@
ProcessInstance processInstance = getProcessInstance(process);
processInstance.setWorkingMemory( this );
processInstance.setProcess( process );
- processInstance.setId( ++processCounter );
- processInstances.put( new Long( processInstance.getId() ),
- processInstance );
+ addProcessInstance( processInstance );
// set variable default values
// TODO: should be part of processInstanceImpl?
VariableScope variableScope = (VariableScope) process.getDefaultContext( VariableScope.VARIABLE_SCOPE );
@@ -1495,22 +1494,25 @@
}
return processInstance;
}
+
+ public ProcessInstanceManager getProcessInstanceManager() {
+ return processInstanceManager;
+ }
- public Collection getProcessInstances() {
- return Collections.unmodifiableCollection( processInstances.values() );
+ public Collection<ProcessInstance> getProcessInstances() {
+ return processInstanceManager.getProcessInstances();
}
public ProcessInstance getProcessInstance(long id) {
- return (ProcessInstance) processInstances.get( new Long( id ) );
+ return processInstanceManager.getProcessInstance(id);
}
public void addProcessInstance(ProcessInstance processInstance) {
- processInstances.put( processInstance.getId(),
- processInstance );
+ processInstanceManager.addProcessInstance(processInstance);
}
public void removeProcessInstance(ProcessInstance processInstance) {
- processInstances.remove( processInstance.getId() );
+ processInstanceManager.removeProcessInstance(processInstance);
}
public WorkItemManager getWorkItemManager() {
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 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -10,6 +10,7 @@
import org.drools.event.RuleFlowEventSupport;
import org.drools.event.WorkingMemoryEventSupport;
import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.ProcessInstanceManager;
import org.drools.reteoo.LIANodePropagation;
import org.drools.rule.Rule;
import org.drools.rule.TimeMachine;
@@ -86,7 +87,8 @@
public void addProcessInstance(ProcessInstance processInstance);
public void removeProcessInstance(ProcessInstance processInstance);
-
+
+ public ProcessInstanceManager getProcessInstanceManager();
public ExecutorService getExecutorService();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ProcessImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ProcessImpl.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ProcessImpl.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -110,7 +110,7 @@
}
public int hashCode() {
- return this.name.hashCode() + 3 * this.version.hashCode();
+ return this.name.hashCode() + (this.version == null ? 0 : 3 * this.version.hashCode());
}
public Context resolveContext(String contextId, Object param) {
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -0,0 +1,15 @@
+package org.drools.process.instance;
+
+import java.util.Collection;
+
+public interface ProcessInstanceManager {
+
+ ProcessInstance getProcessInstance(long id);
+
+ Collection<ProcessInstance> getProcessInstances();
+
+ void addProcessInstance(ProcessInstance processInstance);
+
+ void removeProcessInstance(ProcessInstance processInstance);
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -0,0 +1,34 @@
+package org.drools.process.instance.impl;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.ProcessInstanceManager;
+
+public class DefaultProcessInstanceManager implements ProcessInstanceManager {
+
+ private Map<Long, ProcessInstance> processInstances = new HashMap<Long, ProcessInstance>();
+ private int processCounter = 0;
+
+ public void addProcessInstance(ProcessInstance processInstance) {
+ if (processInstance.getId() == 0) {
+ processInstance.setId(++processCounter);
+ }
+ processInstances.put(processInstance.getId(), processInstance);
+ }
+
+ public Collection<ProcessInstance> getProcessInstances() {
+ return Collections.unmodifiableCollection(processInstances.values());
+ }
+
+ public ProcessInstance getProcessInstance(long id) {
+ return (ProcessInstance) processInstances.get(id);
+ }
+
+ public void removeProcessInstance(ProcessInstance processInstance) {
+ processInstances.remove(processInstance.getId());
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -414,7 +414,7 @@
/**
* Add a rule flow to this package.
*/
- public void addRuleFlow(Process process) {
+ public void addProcess(Process process) {
if ( this.ruleFlows == Collections.EMPTY_MAP ) {
this.ruleFlows = new HashMap();
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -0,0 +1,50 @@
+package org.drools.workflow.instance;
+
+import java.util.Map;
+
+import org.drools.WorkingMemory;
+import org.drools.common.InternalRuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.workflow.core.WorkflowProcess;
+import org.drools.workflow.instance.impl.NodeInstanceImpl;
+import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
+
+public class WorkflowProcessInstanceUpgrader {
+
+ public static void upgradeProcessInstance(WorkingMemory workingMemory, long processInstanceId, String processId, Map<Long, Long> nodeMapping) {
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+ workingMemory.getProcessInstance(processInstanceId);
+ if (processInstance == null) {
+ throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
+ }
+ if (processId == null) {
+ throw new IllegalArgumentException("Null process id");
+ }
+ WorkflowProcess process = (WorkflowProcess)
+ ((InternalRuleBase) workingMemory.getRuleBase()).getProcess(processId);
+ if (process == null) {
+ throw new IllegalArgumentException("Could not find process " + processId);
+ }
+ if (processInstance.getProcessId().equals(processId)) {
+ return;
+ }
+ ((WorkflowProcessInstanceImpl) processInstance).disconnect();
+ processInstance.setProcess(process);
+ for (NodeInstance nodeInstance: processInstance.getNodeInstances()) {
+ Long oldNodeId = nodeInstance.getNodeId();
+ Long newNodeId = nodeMapping.get(oldNodeId);
+ if (newNodeId == null) {
+ newNodeId = oldNodeId;
+ }
+ if (process.getNode(newNodeId) == null) {
+ throw new IllegalArgumentException("Could not find node " + newNodeId);
+ }
+ if (newNodeId != oldNodeId) {
+ ((NodeInstanceImpl) nodeInstance).setNodeId(newNodeId);
+ }
+ }
+ processInstance.setWorkingMemory((InternalWorkingMemory) workingMemory);
+ ((WorkflowProcessInstanceImpl) processInstance).reconnect();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -57,8 +57,7 @@
}
public void triggerCompleted() {
- getNodeInstanceContainer().removeNodeInstance(this);
- getNodeInstanceContainer().getNodeInstance(getActionNode().getTo().getTo()).trigger(this, getActionNode().getTo().getToType());
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, true);
}
private KnowledgeHelper createKnowledgeHelper() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -69,9 +69,7 @@
}
public void triggerCompleted(String outType) {
- getNodeInstanceContainer().removeNodeInstance(this);
- Connection connection = getCompositeNode().getOutgoingConnections(outType).get(0);
- getNodeInstanceContainer().getNodeInstance( connection.getTo() ).trigger( this, connection.getToType() );
+ triggerCompleted(outType, true);
}
public void cancel() {
@@ -165,8 +163,7 @@
}
public void triggerCompleted() {
- getNodeInstanceContainer().removeNodeInstance(this);
- getNodeInstanceContainer().getNodeInstance( getCompositeNodeStart().getTo().getTo() ).trigger( this, getCompositeNodeStart().getTo().getToType());
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, true);
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -1,5 +1,6 @@
package org.drools.workflow.instance.node;
+import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.EventNode;
import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -10,9 +11,7 @@
}
public void triggerCompleted() {
- getNodeInstanceContainer().removeNodeInstance(this);
- getNodeInstanceContainer().getNodeInstance(getEventNode().getTo().getTo())
- .trigger(this, getEventNode().getTo().getToType());
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, true);
}
public void cancel() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -108,10 +108,7 @@
public void triggerCompleted() {
// join nodes are only removed from the container when they contain no more state
- if (triggers.isEmpty()) {
- getNodeInstanceContainer().removeNodeInstance(this);
- }
- getNodeInstanceContainer().getNodeInstance( getJoin().getTo().getTo() ).trigger( this, getJoin().getTo().getToType() );
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, triggers.isEmpty());
}
public Map<Long, Integer> getTriggers() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -49,15 +49,10 @@
// TODO make different strategies for each type
switch ( split.getType() ) {
case Split.TYPE_AND :
- getNodeInstanceContainer().removeNodeInstance(this);
- List<Connection> outgoing = split.getDefaultOutgoingConnections();
- for ( final Iterator<Connection> iterator = outgoing.iterator(); iterator.hasNext(); ) {
- final Connection connection = (Connection) iterator.next();
- getNodeInstanceContainer().getNodeInstance(connection.getTo()).trigger(this, connection.getToType());
- }
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, true);
break;
case Split.TYPE_XOR :
- outgoing = split.getDefaultOutgoingConnections();
+ List<Connection> outgoing = split.getDefaultOutgoingConnections();
int priority = Integer.MAX_VALUE;
Connection selected = null;
for ( final Iterator<Connection> iterator = outgoing.iterator(); iterator.hasNext(); ) {
@@ -76,7 +71,7 @@
if ( selected == null ) {
throw new IllegalArgumentException( "XOR split could not find at least one valid outgoing connection for split " + getSplit().getName() );
}
- getNodeInstanceContainer().getNodeInstance( selected.getTo() ).trigger( this, selected.getToType() );
+ triggerConnection(selected);
break;
case Split.TYPE_OR :
getNodeInstanceContainer().removeNodeInstance(this);
@@ -101,8 +96,8 @@
if (selectedConstraint.evaluate( this,
selectedConnection,
selectedConstraint ) ) {
- getNodeInstanceContainer().getNodeInstance(selectedConnection.getTo()).trigger(this, selectedConnection.getToType());
- found = true;
+ triggerConnection(selectedConnection);
+ found = true;
}
outgoingCopy.remove(selectedConnection);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/StartNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/StartNodeInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/StartNodeInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.StartNode;
import org.drools.workflow.instance.NodeInstance;
import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -46,9 +47,7 @@
}
public void triggerCompleted() {
- getNodeInstanceContainer().removeNodeInstance(this);
- getNodeInstanceContainer().getNodeInstance(getStartNode().getTo().getTo())
- .trigger(this, getStartNode().getTo().getToType());
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, true);
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -43,11 +43,8 @@
}
public void triggerCompleted() {
- if (getTimerNode().getTimer().getPeriod() == 0) {
- getNodeInstanceContainer().removeNodeInstance(this);
- }
- getNodeInstanceContainer().getNodeInstance(getTimerNode().getTo().getTo())
- .trigger(this, getTimerNode().getTo().getToType());
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE,
+ getTimerNode().getTimer().getPeriod() == 0);
}
public void cancel() {
Modified: labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/drools.default.rulebase.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/drools.default.rulebase.conf 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/drools.default.rulebase.conf 2008-06-05 09:38:35 UTC (rev 20325)
@@ -18,3 +18,4 @@
drools.consequenceExceptionHandler = org.drools.base.DefaultConsequenceExceptionHandler
drools.ruleBaseUpdateHandler = org.drools.base.FireAllRulesRuleBaseUpdateListener
drools.workDefinitions = WorkDefinitions.conf
+drools.processInstanceManager = org.drools.process.instance.impl.DefaultProcessInstanceManager
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/workflow/instance/node/MockNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/workflow/instance/node/MockNodeInstance.java 2008-06-05 09:38:22 UTC (rev 20324)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/workflow/instance/node/MockNodeInstance.java 2008-06-05 09:38:35 UTC (rev 20325)
@@ -60,8 +60,7 @@
return getNodeId() == other.getNodeId();
}
- public void triggerCompleted() {
- getNodeInstanceContainer().removeNodeInstance(this);
- getNodeInstanceContainer().getNodeInstance(getMockNode().getTo().getTo()).trigger(this, getMockNode().getTo().getToType());
+ public void triggerCompleted() {
+ triggerCompleted(Node.CONNECTION_DEFAULT_TYPE, true);
}
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list