提交 653b31aa 编写于 作者: M meyerd

ACT-1072 adding additional PVM testcase to illustrate changed PVM-behavior

上级 7dc46965
......@@ -249,4 +249,53 @@ public class PvmEmbeddedSubProcessTest extends PvmTestCase {
assertEquals(expectedActiveActivityIds, processInstance.findActiveActivityIds());
}
/**
* +-------------------------------------------------------+
* | embedded subprocess |
* | +--------------------------------+ |
* | | nested embedded subprocess | |
* +-----+ | +-----------+ | +-----------+ | | +---+
* |start|-->| |startInside|--> | |startInside| | |-->|end|
* +-----+ | +-----------+ | +-----------+ | | +---+
* | +--------------------------------+ |
* | |
* +-------------------------------------------------------+
*/
public void testNestedSubProcessBothNoEnd() {
PvmProcessDefinition processDefinition = new ProcessDefinitionBuilder()
.createActivity("start")
.initial()
.behavior(new Automatic())
.transition("embeddedsubprocess")
.endActivity()
.createActivity("embeddedsubprocess")
.scope()
.behavior(new EmbeddedSubProcess())
.createActivity("startInside")
.behavior(new Automatic())
.transition("nestedSubProcess")
.endActivity()
.createActivity("nestedSubProcess")
.scope()
.behavior(new EmbeddedSubProcess())
.createActivity("startNestedInside")
.behavior(new Automatic())
.endActivity()
.endActivity()
.transition("end")
.endActivity()
.createActivity("end")
.behavior(new WaitState())
.endActivity()
.buildProcessDefinition();
PvmProcessInstance processInstance = processDefinition.createProcessInstance();
processInstance.start();
List<String> expectedActiveActivityIds = new ArrayList<String>();
expectedActiveActivityIds.add("end");
assertEquals(expectedActiveActivityIds, processInstance.findActiveActivityIds());
}
}
......@@ -13,6 +13,8 @@
package org.activiti.engine.test.pvm.activities;
import java.util.List;
import org.activiti.engine.impl.pvm.PvmTransition;
import org.activiti.engine.impl.pvm.delegate.ActivityBehavior;
import org.activiti.engine.impl.pvm.delegate.ActivityExecution;
......@@ -24,8 +26,12 @@ import org.activiti.engine.impl.pvm.delegate.ActivityExecution;
public class Automatic implements ActivityBehavior {
public void execute(ActivityExecution execution) throws Exception {
PvmTransition transition = execution.getActivity().getOutgoingTransitions().get(0);
execution.take(transition);
List<PvmTransition> outgoingTransitions = execution.getActivity().getOutgoingTransitions();
if(outgoingTransitions.isEmpty()) {
execution.end();
} else {
execution.take(outgoingTransitions.get(0));
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册