Author: jbarrez
Date: 2010-02-02 12:32:09 -0500 (Tue, 02 Feb 2010)
New Revision: 6155
Modified:
jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/EndActivity.java
Log:
JBPM-2740: work on embedded subprocess
Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/EndActivity.java
===================================================================
---
jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/EndActivity.java 2010-02-02
12:00:18 UTC (rev 6154)
+++
jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/EndActivity.java 2010-02-02
17:32:09 UTC (rev 6155)
@@ -23,6 +23,7 @@
import java.util.List;
+import org.jbpm.api.Execution;
import org.jbpm.api.activity.ActivityExecution;
import org.jbpm.api.model.Activity;
import org.jbpm.api.model.OpenExecution;
@@ -72,12 +73,22 @@
executionToEnd = execution;
}
+ ExecutionImpl parent = (ExecutionImpl) executionToEnd.getParent(); // save parent
before it is nullified
+
if (state==null) {
execution.end(executionToEnd);
} else {
execution.end(executionToEnd, state);
}
- }
+
+ // Special case: if during concurrent execution all child executions are ended,
+ // then the parent execution must be ended too.
+ if (parent != null && parent.getExecutions().isEmpty()
+ &&
Execution.STATE_INACTIVE_CONCURRENT_ROOT.equals(parent.getState()) ) {
+ parent.end();
+ }
+ }
+
}
public void setEndProcessInstance(boolean endProcessInstance) {
Show replies by date