Java Activiti(6)--流程变量的添加与获取(表act_ru_variable)

1、说明:

流程变量在整个工作流中扮演很重要的作用。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中。
这里写图片描述

2、流程变量示例:

这里写图片描述

3、添加流程变量

1)在启动流程实例时

//2、在启动流程实例时,添加变量
    @Test
    public void startProcessInstanceByKey() throws Exception {
        String processDefinitionKey = "baoxiaoFlow";
        Map<String, Object> variable = new HashMap<String, Object>();
        variable.put("amount", "300元");
        variable.put("reason", "出差");
        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variable);
        System.out.println("processInstance.getId()===" + processInstance.getId());
        System.out.println("processInstance.getProcessDefinitionId()===" + processInstance.getProcessDefinitionId());
    }

2)在办理任务时

    //2.2、在办理任务时,添加变量
    @Test
    public void dealProcessTask() throws Exception {
        String taskId = "42511";  //项目经理审批
        Map<String, Object> variable = new HashMap<String, Object>();
        variable.put("amount", "300元");
        variable.put("reason", "出差");
        processEngine.getTaskService().complete(taskId, variable);
    }

3)使用runtimeService的方法设置

//2.3、使用runtimeService添加变量
    @Test
    public void setVariableByRuntime() throws Exception {
        String taskId = "47504";  //项目经理审批
        Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
        //获得流程实例id
        String processInstanceId = task.getProcessInstanceId();
        //String executionId = "601";
        String variableName = "amount3";
        Object value = "300元";
        processEngine.getRuntimeService().setVariable(processInstanceId, variableName, value);
    }

4)使用TaskService的方法设置

  //2.4、使用runtimeService添加变量
    @Test
    public void setVariableByTask() throws Exception {
        String taskId = "47504";  //项目经理审批
        //String executionId = "601";
        String variableName = "amount4";
        Object value = "300元";
        processEngine.getTaskService().setVariable(taskId, variableName, value);

        Map<String, Object> variable = new HashMap<String, Object>();
        variable.put("amount4", "300元");
        variable.put("reason4", "出差");
        processEngine.getTaskService().setVariables(taskId, variable);
    }

4、获取流程变量

1)使用runtimeService的方法获取

 //3.2、获取流程变量
    @Test
    public void getVariableByRuntime() throws Exception {
        String taskId = "47504";
        Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
        //获得流程实例id
        String processInstanceId = task.getProcessInstanceId();
        Map<String, Object> variables = processEngine.getRuntimeService().getVariables(processInstanceId);
        for (Map.Entry<String, Object> entry : variables.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }

        Object value = processEngine.getRuntimeService().getVariable(processInstanceId, "user");
        System.out.println("Value = " + value);
    }
  ```
2)使用TaskService的方法获取
 ```
//2.4、使用runtimeService添加变量
    @Test
    public void getVariableByTask() throws Exception {
        String taskId = "47504";  //项目经理审批
        Map<String, Object> variables = processEngine.getTaskService().getVariables(taskId);
        for (Map.Entry<String, Object> entry : variables.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }
    }
 ```

*-----------------------------------------------------------------------------------------------------------------------------------------------------*

java架构师项目实战,高并发集群分布式,大数据高可用视频教程,共760G
--------------------------------------

**下载地址:**

https://item.taobao.com/item.htm?id=555888526201
“`

01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
+
hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门

—————————————————————————————————————————————————–

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lovoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值