ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
/**部署流程定义(从inputStream)*/
@Test
public void deploymentProcess_inpustream(){
InputStream inputBpmn=this.getClass().getResourceAsStream("receiveTask.bpmn");
InputStream inputPng=this.getClass().getResourceAsStream("receiveTask.png");
Deployment deployment=processEngine.getRepositoryService()
.createDeployment()
.name("部署名称")
.addInputStream("receiveTask.bpmn", inputBpmn) // 部署ID:3801
.addInputStream("receiveTask.png", inputPng) // 部署名称:部署名称
.deploy();
System.out.println("部署ID:"+deployment.getId());
System.out.println("部署名称:"+deployment.getName());
}
/**启动流程实例+设置流程变量+获取流程变量+向后执行一步*/
@Test
public void startProcessIntance(){
// 流程实例key
String processKey="receiveTask";
ProcessInstance pi=processEngine.getRuntimeService()
.startProcessInstanceByKey(processKey);
System.out.println("流程实例ID:"+pi.getId()); // 流程实例ID:4101
System.out.println("流程定义ID:"+pi.getProcessDefinitionId()); // 流程定义ID:receiveTask:1:3804
// 查询 任务中的 流程
ProcessInstance pit=processEngine.getRuntimeService()
.createProcessInstanceQuery()
.processInstanceId(pi.getId())
.singleResult();
/*if(pit==null){
HistoricProcessInstance hpi=processEngine.getHistoryService()
.createHistoricProcessInstanceQuery()
.processInstanceId(pi.getId())
.singleResult();
System.out.println(" "+hpi.getId()+" "+hpi.getProcessDefinitionId()+" "+hpi.getStartTime()+" "+hpi.getEndTime());
}*/
// 执行流程对象
Execution execution1=processEngine.getRuntimeService()
.createExecutionQuery()
.processInstanceId(pi.getId())
.activityId("receivetask1")
.singleResult();
/**使用流程变量设置当日销售额,用来传递业务参数*/
processEngine.getRuntimeService().setVariable(execution1.getId(), "汇总当日销售额", 2000);
/**向后执行一步,如果流程处于等待状态,使得流程继续执行*/
processEngine.getRuntimeService().signal(execution1.getId());
/**查询执行对象ID*/
Execution execution2=processEngine.getRuntimeService()
.createExecutionQuery()
.processInstanceId(pi.getId())
.activityId("receivetask2")
.singleResult();
/**从流程变量中获取汇总当日销售额的值*/
Integer value=(Integer)processEngine.getRuntimeService().getVariable(execution2.getId(), "汇总当日销售额");
System.out.println("给老板发送短信:金额是:"+value); //给老板发送短信:金额是:2000
/**向后执行一步,如果流程处于等待状态,使得流程继续执行*/
processEngine.getRuntimeService().signal(execution2.getId());
}
/**部署流程定义(从inputStream)*/
@Test
public void deploymentProcess_inpustream(){
InputStream inputBpmn=this.getClass().getResourceAsStream("receiveTask.bpmn");
InputStream inputPng=this.getClass().getResourceAsStream("receiveTask.png");
Deployment deployment=processEngine.getRepositoryService()
.createDeployment()
.name("部署名称")
.addInputStream("receiveTask.bpmn", inputBpmn) // 部署ID:3801
.addInputStream("receiveTask.png", inputPng) // 部署名称:部署名称
.deploy();
System.out.println("部署ID:"+deployment.getId());
System.out.println("部署名称:"+deployment.getName());
}
/**启动流程实例+设置流程变量+获取流程变量+向后执行一步*/
@Test
public void startProcessIntance(){
// 流程实例key
String processKey="receiveTask";
ProcessInstance pi=processEngine.getRuntimeService()
.startProcessInstanceByKey(processKey);
System.out.println("流程实例ID:"+pi.getId()); // 流程实例ID:4101
System.out.println("流程定义ID:"+pi.getProcessDefinitionId()); // 流程定义ID:receiveTask:1:3804
// 查询 任务中的 流程
ProcessInstance pit=processEngine.getRuntimeService()
.createProcessInstanceQuery()
.processInstanceId(pi.getId())
.singleResult();
/*if(pit==null){
HistoricProcessInstance hpi=processEngine.getHistoryService()
.createHistoricProcessInstanceQuery()
.processInstanceId(pi.getId())
.singleResult();
System.out.println(" "+hpi.getId()+" "+hpi.getProcessDefinitionId()+" "+hpi.getStartTime()+" "+hpi.getEndTime());
}*/
// 执行流程对象
Execution execution1=processEngine.getRuntimeService()
.createExecutionQuery()
.processInstanceId(pi.getId())
.activityId("receivetask1")
.singleResult();
/**使用流程变量设置当日销售额,用来传递业务参数*/
processEngine.getRuntimeService().setVariable(execution1.getId(), "汇总当日销售额", 2000);
/**向后执行一步,如果流程处于等待状态,使得流程继续执行*/
processEngine.getRuntimeService().signal(execution1.getId());
/**查询执行对象ID*/
Execution execution2=processEngine.getRuntimeService()
.createExecutionQuery()
.processInstanceId(pi.getId())
.activityId("receivetask2")
.singleResult();
/**从流程变量中获取汇总当日销售额的值*/
Integer value=(Integer)processEngine.getRuntimeService().getVariable(execution2.getId(), "汇总当日销售额");
System.out.println("给老板发送短信:金额是:"+value); //给老板发送短信:金额是:2000
/**向后执行一步,如果流程处于等待状态,使得流程继续执行*/
processEngine.getRuntimeService().signal(execution2.getId());
}