public void execute(DelegateExecution execution) throws Exception {
// varInSubprocess<->varOutFromSubprocess
String varOutFromSubprocess = (String)execution.getVariable("varOutFromSubprocess");
log.info("in mainprocess get(varOutFromSubprocess): " + varOutFromSubprocess);
log.info("variavles=" + execution.getVariables());
execution.setVariable("m:dt", "Mainprocess:DoTransaction");
log.info("I am DoTransaction in mainprocess.");
}
}
实现的测试用例,代码如下所示:
[java]
package org.shirdrn.workflow.activiti.subprocess;
import java.util.HashMap;
import java.util.Map;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.shirdrn.workflow.activiti.AbstractTest;
/**
* @author shirdrn
*/
public class MainprocessTest extends AbstractTest {
@Override
protected void initialize() throws Exception {
Deployment deployment = repositoryService
.createDeployment()
.addClasspathResource(
"diagrams/Subprocess.Check.bpmn20.xml")
.deploy();
deploymentIdList.add(deployment.getId());
deployment = repositoryService
.createDeployment()
.addClasspathResource(
"diagrams/Subprocess.Mainprocess.bpmn20.xml")
.deploy();
}
@Override
protected void destroy() throws Exception {
for(String deployment : deploymentIdList) {
repositoryService.deleteDeployment(deployment, true);
}
}
public void testSubProcess() {
// prepare data packet
Map
Map
variables.put("protocol", "UM32");
variables.put("repository", "10.10.38.99:/home/shirdrn/repository");
variables.put("in", subVariables);
variables.put("out", new HashMap
// start process instance
ProcessInstance pi = runtimeService.startProcessInstanceByKey("Mainprocess", variables);
assertEquals(true, pi.isEnded());
}
}
代码中org.shirdrn.workflow.activiti.AbstractTest类可以参考:Activiti 5.3:流程活动自动与手工触发执行里面。上述测试程序运行结果如下所示:
[xhtml]
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.Initialization execute
信息: variavles={protocol=UM32, repository=10.10.38.99:/home/shirdrn/repository, in={}, out={}}
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.Initialization execute
信息: I am Initialization in mainprocess.
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.Initialization execute
信息: in mainprocess set(varOutFromMainprocess): AAAA
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.BusinessCheck execute
信息: in subprocess get(varInSubprocess): AAAA
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.BusinessCheck execute
信息: variavles={varInSubprocess=AAAA}
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.BusinessCheck execute
信息: I am BusinessCheck in subprocess.
2011-3-24 17:52:13 org.shirdrn.workflow.activiti.subprocess.BusinessCheck execute
信息: in subprocess set(va