[jboss-svn-commits] JBL Code SVN: r34218 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 27 09:22:26 EDT 2010


Author: KrisVerlaenen
Date: 2010-07-27 09:22:26 -0400 (Tue, 27 Jul 2010)
New Revision: 34218

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
Log:
JBRULES-2598: WorkItemNodeInstance should not reset workItemId to -1 after completion
 - using state of work item to derive state

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2010-07-27 12:58:40 UTC (rev 34217)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2010-07-27 13:22:26 UTC (rev 34218)
@@ -119,9 +119,8 @@
 		}
         if (!workItemNode.isWaitForCompletion()) {
             triggerCompleted();
-        } else {
-        	this.workItemId = workItem.getId();
         }
+    	this.workItemId = workItem.getId();
     }
     
     protected WorkItem createWorkItem(WorkItemNode workItemNode) {
@@ -187,6 +186,7 @@
     }
 
     public void triggerCompleted(WorkItem workItem) {
+    	this.workItem = workItem;
     	WorkItemNode workItemNode = getWorkItemNode();
     	if (workItemNode != null) {
 	        for (Iterator<Map.Entry<String, String>> iterator = getWorkItemNode().getOutMappings().entrySet().iterator(); iterator.hasNext(); ) {
@@ -210,7 +210,6 @@
 	            }
 	        }
     	}
-    	this.workItemId = -1;
         if (isInversionOfControl()) {
             WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
             workingMemory.update(workingMemory.getFactHandle(this), this);
@@ -220,7 +219,10 @@
     }
     
     public void cancel() {
-    	if (workItemId != -1) {
+    	WorkItem workItem = getWorkItem();
+    	if (workItem != null &&
+    			workItem.getState() != WorkItem.COMPLETED && 
+    			workItem.getState() != WorkItem.ABORTED) {
     		((WorkItemManager) ((ProcessInstance) getProcessInstance())
 				.getWorkingMemory().getWorkItemManager()).internalAbortWorkItem(workItemId);
     	}



More information about the jboss-svn-commits mailing list