一、启动时添加流程变量
拿第一个流程图举例,创建一个新的流程定义。
@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表中查看到所有使用过的流程变量。




















