Activiti 5.3:子流程(subProcess)(二)

2014-11-24 09:46:27 · 作者: · 浏览: 1
subprocess;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.shirdrn.workflow.activiti.AbstractTest;

/**
* @author shirdrn
*/
public class MySubProcessTest extends AbstractTest {

@Override
protected void initialize() throws Exception {
Deployment deployment = repositoryService
.createDeployment()
.addClasspathResource(
"diagrams/SubProcessTest.MySubprocess.bpmn20.xml")
.deploy();
deploymentId = deployment.getId();
}

@Override
protected void destroy() throws Exception {
repositoryService.deleteDeployment(deploymentId, true);
}

public void testSubProcess() {
// prepare data packet
Map variables = new HashMap();
Map subVariables = new HashMap();
variables.put("maxTransCount", 1000000);
variables.put("merchant", new Merchant("ICBC"));
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("MySubprocess", variables);

// enter subprocess
List tasks = taskService.createTaskQuery().processInstanceId(pi.getId()).orderByTaskName().asc().list();
assertEquals(2, tasks.size());

for(Task task : tasks) {
taskService.complete(task.getId());
}

// leave subprocess
Task collectTask = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
assertEquals("Collect message", collectTask.getName());

Map taskVariables = new HashMap();
taskVariables.put("att", "anything you need");
taskService.setVariable(collectTask.getId(), "oper", "shirdrn");
taskService.complete(collectTask.getId(), taskVariables);
}

}
运行结果信息,如下所示:

[xhtml]
2011-3-24 17:36:36 org.shirdrn.workflow.activiti.subprocess.CheckBankTask notify
信息: i am CheckBankTask.
in : {protocol=UM32, repository=10.10.38.99:/home/shirdrn/repository, merchant=Merchant[ICBC], maxTransCount=1000000, in={}, out={}}
2011-3-24 17:36:36 org.shirdrn.workflow.activiti.subprocess.CheckMerchantTask notify
信息: i am CheckMerchantTask.
in : {protocol=UM32, repository=10.10.38.99:/home/shirdrn/repository, merchant=Merchant[ICBC], maxTransCount=1000000, in={next=CheckBankTask}, out={reponse=subprocess:CheckBankTask->CheckMerchantTask}}
2011-3-24 17:36:36 org.shirdrn.workflow.activiti.subprocess.CollectMessageTask notify
信息: i am CollectMessageTask.
out : {reponse=subprocess:CheckBankTask->CheckMerchantTask}
all : {protocol=UM32, repository=10.10.38.99:/home/shirdrn/repository, merchant=Merchant[ICBC], oper=shirdrn, att=anything you need, maxTransCount=1000000, in={previous=CheckMerchantTask, next=CheckBankTask}, out={reponse=subprocess:CheckBankTask->CheckMerchantTask}}