/**
* 部署流程定义(InputStream)
*/
@Test
public void depolymentProcessDefinition_inputStream(){
InputStream bpmn=this.getClass().getClassLoader().getResourceAsStream("diagrams/processVariablesProcess.bpmn");
InputStream png=this.getClass().getClassLoader().getResourceAsStream("diagrams/processVariablesProcess.png");
Deployment deployment=processEngine.getRepositoryService()
.createDeployment()
.name("部署名称XX")
.addInputStream("processVariablesProcess.bpmn", bpmn)
.addInputStream("processVariablesProcess.png", png)
.deploy();
System.out.println("部署ID:"+deployment.getId()); // 部署ID:1201
System.out.println("部署名称:"+deployment.getName()); // 部署名称:部署名称XX
}
/**
* 启动流程
* ProcessInstance
*/
@Test
public void startProcessIntance(){
// 获取流程定义的 key
String proceskey="processVariables";
ProcessInstance processInstance=processEngine.getRuntimeService()
.startProcessInstanceByKey(proceskey);
System.out.println("流程实例ID:"+processInstance.getId()); //流程实例ID:1301
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId()); //流程定义ID:processVariables:5:1204
}
/**
* 启动流程
* ProcessInstance
*/
@Test
public void startProcessIntance(){
// 获取流程定义的 key
String proceskey="processVariables";
ProcessInstance processInstance=processEngine.getRuntimeService()
.startProcessInstanceByKey(proceskey);
System.out.println("流程实例ID:"+processInstance.getId()); //流程实例ID:1301
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId()); //流程定义ID:processVariables:5:1204
}
/**
* 查询当前 办理人的 任务
*/
@Test
public void findMyPersonalTask(){
//与任务(正在执行)
TaskService taskService=processEngine.getTaskService();
// 任务Id
String taskId="1304"; //act_ru_task
/**
* 一:设置流程变量,使用基本数据类型
*/
taskService.setVariableLocal(taskId, "请假天数", 5);
taskService.setVariable(taskId, "请假日期", new Date());
taskService.setVariable(taskId, "请假原因", "回家探亲一起吃个饭!");
/**
* 二:设置流程变量,使用javabean类型
*/
Person person=new Person();
person.setId(20);
person.setName("楼妹妹");
taskService.setVariable(taskId, "人员信息(添加固定版本)", person);
System.out.println("设置流程变量成功!");
}
/**
* 获取流程变量
*/
@Test
public void getVariableLocal(){
//与任务(正在执行)
TaskService taskService=processEngine.getTaskService();
// 任务id
String taskId="1304";
/**
* 一:获取流程变量,使用基本数据类型
*/
Integer days = (Integer) taskService.getVariable(taskId, "请假天数");
Date date = (Date) taskService.getVariable(taskId, "请假日期");
String resean = (String) taskService.getVariable(taskId, "请假原因");
System.out.println("请假天数:"+days);
System.out.println("请假日期:"+date);
System.out.println("请假原因:"+resean);
/**
* 二:获取流程变量,使用javabean类型
*/
Person person = (Person)taskService.getVariable(taskId, "人员信息(添加固定版本)");
System.out.println(person.getId()+" "+person.getName());
}
/**
* 模拟设置和获取流程变量的场景
*/
@Test
public void setAndGetVariables(){
//与流程实例,执行对象(正在执行)
RuntimeService runtimeService = processEngine.getRuntimeService();
// 与任务(正在执行)
TaskService taskService = processEngine.getTaskService();
//设置流程变量
// runtimeService.setVariable(executionId, variableName, value)//表示使用执行对象ID,和流程变量的名称,设置流程变量的值(一次只能设置一个值)
// runtimeService.setVariables(executionId, variables)//表示使用执行对象ID,和Map集合设置流程变量,map集合的key就是流程变量的名称,map集合的value就是流程变量的值(一次设置多个值)
// taskService.setVariable(taskId, variableName, value)//表示使用任务ID,和流程变量的名称,设置流程变量的值(一次只能设置一个值)
// taskService.setVariables(taskId, variables)//表示使用任务ID,和Map集合设置流程变量,map集合的key就是流程变量的名称,map集合的value就是流程变量的值(一次设置多个值)
// runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);//启动流程实例的同时,可以设置流程变量,用Map集合
// taskService.complete(taskId, variables)//完成任务的同时,设置流程变量,用Map集合
/**获取流程变量*/
// runtimeService.getVariable(executionId, variableName);//使用执行对象ID和流程变量的名称,获取流程变量的值
// runtimeService.getVariables(executionId);//使用执行对象ID,获取所有的流程变量,将流程变量放置到Map集合中,map集合的key就是流程变量的名称,map集合的value就是流程变量的值
// runtimeService.getVariables(executionId, variableNames);//使用执行对象ID,获取流程变量的值,通过设置流程变量的名称存放到集合中,获取指定流程变量名称的流程变量的值,值存放到Map集合中
// taskService.getVariable(taskId, variableName);//使用任务ID和流程变量的名称,获取流程变量的值
// taskService.getVariables(taskId);//使用任务ID,获取所有的流程变量,将流程变量放置到Map集合中,map集合的key就是流程变量的名称,map集合的value就是流程变量的值
// taskService.getVariables(taskId, variableNames);//使用任务ID,获取流程变量的值,通过设置流程变量的名称存放到集合中,获取指定流程变量名称的流程变量的值,值存放到Map集合中
}
/**
* 完成我的任务
* taskId 1304
*/
@Test
public void completeMyPersonalTask(){
//任务ID
String taskId = "1304";
processEngine.getTaskService()
.complete(taskId);
System.out.println("完成 :任务Id:"+taskId); //1304
}
/**
* 查询流程变量的历史表
* HistoricVariableInstance
*/
@Test
public void findHistoryProcessVariables(){
List<HistoricVariableInstance> list=processEngine.getHistoryService()
.createHistoricVariableInstanceQuery()
.variableName("请假天数")
.list();
if(list!=null && list.size()>0){
for (HistoricVariableInstance hti : list) {
System.out.println(hti.getId()+" "+hti.getProcessInstanceId()+" "+hti.getVariableName()+" "+hti.getVariableTypeName()+" "+hti.getValue());
System.out.println("======================查询流程变量 的历史表 ==========================");
}
}
}