《Activiti/Flowable 深入BPM工作流》-如何设置local流程变量?
《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流程变量?相关推荐
- 《Activiti/Flowable 深入BPM工作流》-什么是流程变量?
<Activiti/Flowable 深入BPM工作流>-什么是流程变量? 一. 问题: 1. 什么是流程变量? 2. 什么是glob ...
- 《Activiti/Flowable 深入BPM工作流》---工作流中的网关有哪些?
<Activiti/Flowable 深入BPM工作流>---工作流中的网关有哪些? 一. 问题: 1. 网关分为哪几类? 2. 什么是排他网关? 3. 什么是并行网关? 4. 什么是包 ...
- 《Activiti/Flowable 深入BPM工作流》-组任务的办理流程是什么?
<Activiti/Flowable 深入BPM工作流>-组任务的办理流程是什么? 一. 问题 组任务的办理流程是什么? 二. 详情 第一步:查询组任务 指定候 ...
- 《Activiti/Flowable 深入BPM工作流》-如何分配任务负责人?
<Activiti/Flowable 深入BPM工作流>-如何分配任务负责人? 一. 问题 如何分配任务负责人? 二. 详情 1. 直接在画 流程图的时候进行设置. 2.使用流 ...
- 《Activiti/Flowable 深入BPM工作流》-流程定义怎么进行删除?
<Activiti/Flowable 深入BPM工作流>-流程定义怎么进行删除? 一. 问题 之前我们分享过流程定义的流程任务查询, 流程任务处理, 任务那么怎么进行删除? 二 ...
- 《Activiti/Flowable 深入BPM工作流》- BPM任务如何关联businessKey?
<Activiti/Flowable 深入BPM工作流>- BPM任务如何关联businessKey? 一. 问题 1. BPM任务如何关联businessK ...
- 《Activiti/Flowable 深入BPM工作流》-流程部署实现方式二
<Activiti/Flowable 深入BPM工作流> ----流程部署实现方式二 一. 问题 流程部署实现方式 ...
- 《Activiti/Flowable 深入BPM工作流》-流程实例怎么实现挂起?
<Activiti/Flowable 深入BPM工作流>-流程实例怎么实现挂起? 一. 问题 1. 什么情况要进行流程的挂起? 2. 具体怎么将流程挂起? 二. 详情 1. 什么情况 ...
- 《Activiti/Flowable 深入BPM工作流》- Activiti 与springboot 怎么进行整合?
<Activiti/Flowable 深入BPM工作流> -Activiti 与springboot 怎么进行整合? 一.问题 Activiti 如何与springboot进行整合? 1 ...
最新文章
- pthread_cleanup_push与pthread_cleanup_pop的目的、作用
- 15 个必须知道的 Chrome 开发工具技巧
- RabbitMQ使用简述
- linux下PS1命令提示符设置
- SQL Server链接服务器(一台机器SQL Server登陆,同时映射登陆到另外一台远程服务器的数据库)
- SQL Server-【知识与实战VII】存储过程(上)
- Ubuntu E: Sub-process /usr/bin/dpkg returned an error code (1)
- 修改浏览器 User-Agent
- matlab中cell2mat的作用,Matlab中cell2mat的使用
- 2022最新软件库iApp源码+简约唯美/对接hybbs
- 计算机课第一节可以讲些什么,高职《大学计算机基础》第1节课讲点什么?
- red hat linux 9.0下载地址集合,Red Hat Linux 9.0 iso最新下载地址
- htmltabl生成html表格并发送企业微信
- 又一批大学生毕业了,献上天津大学校园里的励志标语
- 20160808某公司嵌入式面试总结(加个人答案)
- 紫光软件php面试题,紫光展锐面试试题是什么?紫光展锐怎么面试的?
- 高德地图如何取消订单_高德地图怎么取消订单
- oracle数据库的安装及配置方法
- mysql重迭算法_MySQL – 如何选择’DISTINCT’重叠时段(日期或数字范围)
- Python数据分析的bs4用法
热门文章
- 【原创】无线破解Aircrack-ng套件详解(一)--airmon-ng与airodump-ng
- 网络爬虫-通过百度百科查询行政区划代码
- Pytorch最简单的图像分类——K折交叉验证处理小型鸟类数据集分类2.0版本ing
- Python古典密码编程
- 【OpenCV 例程200篇】25. 图像的平移(cv2.warpAffine)
- 联想x3850x6重装系统_中心管理服务器介绍及配置方案:联想服务器 X3850X6
- 国内虚拟运营商借SDN布局5G网络
- 快速找到Google可用Hosts的方法
- 数字化助力生产制造管理:家具行业管理系统
- iptables 限制ip配置