SpringBoot整合Activiti7——流程变量(五)

news/2024/12/21 22:22:55/

文章目录

  • 一、全局变量
  • 二、局部变量
  • 三、临时变量


一、全局变量

启动实例时设置的变量(或者taskService.setVariable设置),设置完后流程全局可见。

// 设置流程变量
Map<String, Object> variables = new HashMap<>();
// 办理人
variables.put("applyUserId", APPLY_USER_ID);
// 候选人
variables.put("candidateUsers", String.join(",", CollectionUtil.newArrayList("depLeader1", "depLeader2", "depLeader3")));
// 候选组
variables.put("candidateGroups", CollectionUtil.newArrayList("hrGroup1", "hrGroup2", "hrGroup3"));String processDefinitionKey = "overtime";
String businessKey = processDefinitionKey + ":" + BUSINESS_ID; // 假设模拟业务id为1001// 启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
System.out.println("processInstance = " + processInstance);
// 查询任务
Task task = taskService.createTaskQuery().processInstanceId(PROCESS_INSTANCE_ID).singleResult();
// 设置全局变量
taskService.setVariable(task.getId(), "applyUserId", "zhangsan");

二、局部变量

任务办理时设置local流程变量,当前运行的流程实例只能在该任务结束前使用,任务结束该变量无法在当前流程实例使用,可以通过查询历史任务查询。设置完后只有该task可见。(或者taskService.setVariableLocal设置)

// 查询任务
Task task = taskService.createTaskQuery().processInstanceId(PROCESS_INSTANCE_ID).singleResult();
// 完成任务
Map<String, Object> hashMap = new HashMap<>();
hashMap.put("departPass", true);
taskService.complete(task.getId(), hashMap, true);
// 查询任务
Task task = taskService.createTaskQuery().processInstanceId(PROCESS_INSTANCE_ID).singleResult();
// 设置局部变量
taskService.setVariableLocal(task.getId(), "departPas", true);

三、临时变量

临时变量不做持久化存储,也就是不存储数据库。(taskService.setTransientVariable)

/*** Similar to {@link #complete(String, Map)}, but allows to set transient variables too. 
*/
void complete(String taskId, Map<String, Object> variables, Map<String, Object> transientVariables);

http://www.ppmy.cn/news/1145348.html

相关文章

PlantUML 绘图

官网 https://plantuml.com/zh/ 示例 绘制时序图 USB 枚举过程 PlantUML 源码 startuml host <-- device : device insert host note right : step 1 host -> device : get speed, reset, speed check note right : step 2 host -> device …

Docker 网络管理

Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c;同时Docker网桥是每个容器的默认网关。因为在同一宿主机…

当被问到你使用过iframe吗?有哪些优点和缺点?

前言 之前做需求遇到过这样的场景&#xff0c;两个不同的平台&#xff0c;其中一个平台需要使用另一个平台的某个页面&#xff0c;在没有用微前端和独立封装组件库的时候。就想到了使用iframe&#xff0c;直接将另一个页面嵌入到需要的页面里面。2即使是不同源的也没问题。 什…

网工内推 | base郑州,上市公司,最高15薪,五险一金全额缴

01 四方达 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责公司数据中心&#xff08;机房&#xff09;的管理与运维工作。 2、负责公司服务器、路由器、防火墙、交换机等设备的管理、以及网络平台的运行监控和维护&#xff1b; 3、负责公司服务器运维管理工作、…

Stream流使用

IntStream使用&#xff1a; String[] arr IntStream.rangeClosed(1, 10).mapToObj(String::valueOf).toArray(String[]::new);java拼接字符串&#xff1a; String.join(",",arr)

Transformer为什么如此有效 | 通用建模能力,并行

目录 1 更强更通用的建模能力 2 并行计算 3 大规模训练数据 4 多训练技巧的集成 Transformer是一种基于自注意力机制的网络&#xff0c;在最近一两年年可谓是大放异彩&#xff0c;我23年入坑CV的时候&#xff0c;我看到的CV工作似乎还没有一个不用到Transformer里的一些组…

C# InvokeRequired线程安全

C# InvokeRequired线程安全 为了保证新家的线程可能要对主界面的控件元素的属性发生一些改变&#xff0c;此时防止此操作对于主线程的影响&#xff0c;就提出了 InvokeRequired方法&#xff0c;保证主线程的安全&#xff0c;同时新加的线程也可以改变主页面中元素的值。 定义…

No Monotone Triples

题目传送门 引 D i l w o r t h 定理 Dilworth定理 Dilworth定理 有点意思 解法 首先 ∣ b ∣ ≤ 4 |b|\le 4 ∣b∣≤4 ,考虑证明&#xff0c;证明如下&#xff1a; 用反证法证明 假设 ∣ b ∣ > 4 |b|>4 ∣b∣>4 , l e n len len 为 b b b 的最长不降子序列的…