一、启动时添加流程变量
拿第一个流程图举例,创建一个新的流程定义。
@Test
void contextLoads() {
DeploymentBuilder deployment = repositoryService.createDeployment();
deployment.addClasspathResource("process01/FirstFlow.bpmn20.xml");
deployment.name("流程变量演示");
Deployment deploy = deployment.deploy();
System.out.println("deploy.getId() = " + deploy.getId());
}
查看流程定义。
启动时为流程添加全局变量。
/**
* 发起流程
*/
@Test
public void startProcess() {
String id = "FirstFlow:2:1aaa5203-2aed-11ef-b004-644ed7087863";
// 在启动流程实例时为流程添加全局变量
Map<String, Object> variables = new HashMap<>();
variables.put("var1", "test1");
variables.put("var2", "test2");
variables.put("var3", "test3");
// 根据流程定义ID启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceById(id, variables);
}
在act_ru_variable表中可以看到添加的变量信息。
根据执行实例ID获取流程变量
/**
* 获取定义的流程变量
*/
@Test
void getVariables() {
// 通过执行实例ID获取,ID可以在act_ru_variable表中查看到
String executionId = "f1d7ec2c-2aed-11ef-9790-644ed7087863";
Map<String, Object> variables = runtimeService.getVariables(executionId);
System.out.println(variables);
// 也可以通过taskService获取
// taskService.getVariables(taskId);
}
二、启动后添加流程变量
/**
* 在流程启动后添加流程变量
*/
@Test
void setVariables() {
// 通过执行实例ID获取,ID可以在act_ru_variable表中查看到
String executionId = "f1d7ec2c-2aed-11ef-9790-644ed7087863";
runtimeService.setVariable(executionId, "var4", "test4");
// 添加局部变量
runtimeService.setVariableLocal(executionId, "varLocal5", "test5");
// 也可以通过taskService添加
// taskService.setVariable();
}
查看添加结果
当流程审批结束所有的变量将全部移除。
三、局部变量
- taskService添加的局部变量,只作用于当前节点,当前节点审批后,数据会消失。
- runtimeService添加的局部变量,作用于当前执行实例I,当出现不同的执行分支时,数据将消失。
四、历史变量
在act_hi_varinst表中查看到所有使用过的流程变量。