《Activiti/Flowable  深入BPM工作流》-如何设置local流程变量?

一. 问题:

 1. 什么是local流程变量? 

   2. 如何设置local流程变量?

   3.Local变量设置后成功与否, 如何测试?

二. 详情

1. 什么是local流程变量? 

解答:  流程变量默认作用域是一个流程实例(processInstance), 也可以是一个任务(task)或一个执行实例(execution). 这三个作用域流程实例的范围最大,成Global变量.

任务和执行实例仅仅是针对一个任务和一个执行实例范围,范围没有流程实例大,成为local变量.所以local流程变量是包含(一个任务或一个执行实例)

特点:

1.  global变量中变量名不能重复. 设置相同名称的变量,后设置的值会覆盖前面的变量值.

2. Local变量名可以重复,也可以和global名相同.  local变量由于在不同任务或不同的执行实例中, 作用域互不影响,变量名可以相同,没有影响.

// 办理任务时设置local流程变量
@Test
public void completTask() {//任务idString taskId = "";TaskService taskService = processEngine.getTaskService();// 定义流程变量Map<String, Object> variables = new HashMap<String, Object>();Holiday holiday = new Holiday ();holiday.setNum(3);// 定义流程变量Map<String, Object> variables = new HashMap<String, Object>();//变量名是holiday,变量值是holiday对象variables.put("holiday", holiday);// 设置local变量,作用域为该任务taskService. setVariablesLocal(tasked, variables );taskService.complete(taskId);
}

2. 如何通过当前任务设置local变量?

解答: 具体实现code如下

@Test
public void setLocalVariableByTaskId(){//当前待办任务idString taskId="1404";TaskService taskService = processEngine.getTaskService();Holiday holiday = new Holiday ();holiday.setNum(3);//通过任务设置流程变量taskService.setVariableLocal(taskId, "holiday", holiday);//一次设置多个值//taskService.setVariablesLocal(taskId, variables)
}

注意: 任务id必须是当前任务id, act_ru_task中存在的.

3.Local变量设置后成功与否, 如何测试?

方法一:

local变量在任务结束后无法在当前流程实例中执行使用,如果后续的流程执行需要用到此变量则会报错.

方法二:

在部门经理审核,总经理审核,人事经理审核是设置local变量,可通过HistoryService查询每个历史任务时将流程变量的值查询出来

 // 创建历史任务查询对象HistoricTaskInstanceQuery  historicTaskInstanceQuery  =historyService.createHistoricTaskInstanceQuery();// 查询结果包括 local变量historicTaskInstanceQuery.includeTaskLocalVariables();for (HistoricTaskInstance historicTaskInstance : list) {System.out.println("==============================");System.out.println(" 任 务 id : "  +historicTaskInstance.getId());System.out.println(" 任 务 名 称 : "  +historicTaskInstance.getName());System.out.println(" 任 务 负 责 人 : "  +historicTaskInstance.getAssignee());System.out.println(" 任 务 local 变 量 : "+historicTaskInstance.getTaskLocalVariables());}

注意:查询历史流程变量,特别是查询 pojo 变量需要经过反序列化,不推荐使用。

《Activiti/Flowable  深入BPM工作流》-如何设置local流程变量?相关推荐

  1. 《Activiti/Flowable  深入BPM工作流》-什么是流程变量?

               <Activiti/Flowable  深入BPM工作流>-什么是流程变量? 一. 问题:         1. 什么是流程变量?        2. 什么是glob ...

  2. 《Activiti/Flowable 深入BPM工作流》---工作流中的网关有哪些?

    <Activiti/Flowable  深入BPM工作流>---工作流中的网关有哪些? 一. 问题: 1. 网关分为哪几类? 2. 什么是排他网关? 3. 什么是并行网关? 4. 什么是包 ...

  3. 《Activiti/Flowable  深入BPM工作流》-组任务的办理流程是什么?

        <Activiti/Flowable  深入BPM工作流>-组任务的办理流程是什么? 一. 问题          组任务的办理流程是什么? 二. 详情 第一步:查询组任务 指定候 ...

  4. 《Activiti/Flowable 深入BPM工作流》-如何分配任务负责人?

    <Activiti/Flowable  深入BPM工作流>-如何分配任务负责人? 一. 问题      如何分配任务负责人? 二. 详情 1. 直接在画 流程图的时候进行设置. 2.使用流 ...

  5. 《Activiti/Flowable 深入BPM工作流》-流程定义怎么进行删除?

        <Activiti/Flowable  深入BPM工作流>-流程定义怎么进行删除? 一. 问题 之前我们分享过流程定义的流程任务查询,  流程任务处理, 任务那么怎么进行删除? 二 ...

  6. 《Activiti/Flowable 深入BPM工作流》- BPM任务如何关联businessKey?

               <Activiti/Flowable  深入BPM工作流>- BPM任务如何关联businessKey? 一. 问题    1. BPM任务如何关联businessK ...

  7. 《Activiti/Flowable 深入BPM工作流》-流程部署实现方式二

    <Activiti/Flowable  深入BPM工作流>                                     ----流程部署实现方式二 一. 问题 流程部署实现方式 ...

  8. 《Activiti/Flowable 深入BPM工作流》-流程实例怎么实现挂起?

    <Activiti/Flowable  深入BPM工作流>-流程实例怎么实现挂起? 一. 问题 1. 什么情况要进行流程的挂起? 2. 具体怎么将流程挂起? 二. 详情   1. 什么情况 ...

  9. 《Activiti/Flowable  深入BPM工作流》- Activiti 与springboot 怎么进行整合?

    <Activiti/Flowable  深入BPM工作流> -Activiti 与springboot 怎么进行整合? 一.问题 Activiti 如何与springboot进行整合? 1 ...

最新文章

  1. pthread_cleanup_push与pthread_cleanup_pop的目的、作用
  2. 15 个必须知道的 Chrome 开发工具技巧
  3. RabbitMQ使用简述
  4. linux下PS1命令提示符设置
  5. SQL Server链接服务器(一台机器SQL Server登陆,同时映射登陆到另外一台远程服务器的数据库)
  6. SQL Server-【知识与实战VII】存储过程(上)
  7. Ubuntu E: Sub-process /usr/bin/dpkg returned an error code (1)
  8. 修改浏览器 User-Agent
  9. matlab中cell2mat的作用,Matlab中cell2mat的使用
  10. 2022最新软件库iApp源码+简约唯美/对接hybbs
  11. 计算机课第一节可以讲些什么,高职《大学计算机基础》第1节课讲点什么?
  12. red hat linux 9.0下载地址集合,Red Hat Linux 9.0 iso最新下载地址
  13. htmltabl生成html表格并发送企业微信
  14. 又一批大学生毕业了,献上天津大学校园里的励志标语
  15. 20160808某公司嵌入式面试总结(加个人答案)
  16. 紫光软件php面试题,紫光展锐面试试题是什么?紫光展锐怎么面试的?
  17. 高德地图如何取消订单_高德地图怎么取消订单
  18. oracle数据库的安装及配置方法
  19. mysql重迭算法_MySQL – 如何选择’DISTINCT’重叠时段(日期或数字范围)
  20. Python数据分析的bs4用法

热门文章

  1. 【原创】无线破解Aircrack-ng套件详解(一)--airmon-ng与airodump-ng
  2. 网络爬虫-通过百度百科查询行政区划代码
  3. Pytorch最简单的图像分类——K折交叉验证处理小型鸟类数据集分类2.0版本ing
  4. Python古典密码编程
  5. 【OpenCV 例程200篇】25. 图像的平移(cv2.warpAffine)
  6. 联想x3850x6重装系统_中心管理服务器介绍及配置方案:联想服务器 X3850X6
  7. 国内虚拟运营商借SDN布局5G网络
  8. 快速找到Google可用Hosts的方法
  9. 数字化助力生产制造管理:家具行业管理系统
  10. iptables 限制ip配置