一、启动时添加流程变量
拿第一个流程图举例,创建一个新的流程定义。
@Testvoid contextLoads() {DeploymentBuilder deployment = repositoryService.createDeployment();deployment.addClasspathResource("process01/FirstFlow.bpmn20.xml");deployment.name("流程变量演示");Deployment deploy = deployment.deploy();System.out.println("deploy.getId() = " + deploy.getId());}
查看流程定义。
启动时为流程添加全局变量。
/*** 发起流程*/@Testpublic 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获取流程变量
/*** 获取定义的流程变量*/@Testvoid 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);}
二、启动后添加流程变量
/*** 在流程启动后添加流程变量*/@Testvoid 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表中查看到所有使用过的流程变量。