Flowable串行流程移动活动

在Activiti6和Activiti7中跳转节点都要自己实现,Flowable增加了这个功能。

一:简介

串行流程是指简单的一条线的流程,流程中如果包含会签排它网关也算串行流程。

节点移动有三种方式:

  • 向前移动foreward。
  • 向后移动back。
  • 直接跳转到最后一个结束节点end。

串行流程节点移动有三个API,每个API都可以前进后退结束节点。

// 方式一
ChangeActivityStateBuilder moveActivityIdTo(String currentActivityId, String newActivityId);// 方式二:只是目标节点是个List而已
ChangeActivityStateBuilder moveSingleActivityIdToActivityIds(String currentActivityId, List<String> newActivityIds);// 方式三:通过指定执行id
ChangeActivityStateBuilder moveExecutionToActivityId(String executionId, String activityId);

二:示例

在这里插入图片描述

2.1 启动流程

@Test
void delopyProcess() {Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/myProcess.bpmn20.xml").name("串行流程").deploy();System.out.println(deploy.getId());
}@Test
void startProcess() {ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();taskService.setAssignee(task.getId(), "huihui");taskService.complete(task.getId());
}

在这里插入图片描述

2.2 方式一

// 前进:group -> hr
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveActivityIdTo("group", "hr").changeState();
insert into ACT_HI_TASKINST
insert into ACT_HI_ACTINST
// hr节点
insert into ACT_RU_EXECUTION
insert into ACT_RU_ACTINST
// 插入ACT_RU_TASK 人事审批节点
insert into ACT_RU_TASK// 更新ACT_HI_ACTINST group节点的审批完成时间
update ACT_HI_ACTINST SET REV_ = ?, PROC_DEF_ID_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ? where ID_ = ? and REV_ = ?// 更新ACT_HI_ACTINST group节点的审批完成时间,注意会更新删除原因字段
update ACT_HI_TASKINST SET REV_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ?, LAST_UPDATED_TIME_ = ? where ID_ = ? and REV_ = ?

在这里插入图片描述

update ACT_RU_ACTINST SET REV_ = ?, PROC_DEF_ID_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ? where ID_ = ? and REV_ = ?update ACT_RU_EXECUTION SET REV_ = ?, IS_ACTIVE_ = ? where ID_ = ? and REV_ = ?
delete from ACT_RU_TASK where EXECUTION_ID_ = ?delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ?

在这里插入图片描述
在Activiti6和Activiti7中都没有ACT_RU_ACTINST表,没看出来这两张表有啥不同???
在这里插入图片描述

2.3 方式二

// 后退: manage <- hr
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveSingleActivityIdToActivityIds("hr", Arrays.asList("manage")).changeState();

2.4 方式三

// 狠一点:直接结束流程
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveExecutionToActivityId(task.getExecutionId(), "end").changeState();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对产品实现折扣服务(对多个异步任务进行流水线操作)

需求&#xff1a;给商品打折 1、根据产品名称返回价格 2、查询商品的折扣率 3、计算新价格 源码清单 Data public class DiscountShop {private final String name;private final Random random;public DiscountShop(String name) {this.name name;random new Random(name…

1334.阈值距离内邻居最少的城市

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;1334. 阈值距离内邻居最少的城市 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 利用贝尔曼-福德算法计算出每个节点到其余节点的最短距离后对符合条件的计数&#xff0c;返回计数最小且编…

C#截取范围

string[] strs new string[]{"1e2qe","23123e21","3ewqewq","4fewfew","5fsdfds"};var list strs[1..2];Range p 0..3;var list strs[Range];

【Python+requests+unittest+excel】实现接口自动化测试框架

一、框架结构&#xff1a; 工程目录 二、Case文件设计 三、基础包 base3.1 封装get/post请求&#xff08;runmethon.py&#xff09; 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if header …

CSS:为什么看起来content-box更合理,但还是经常使用border-box?

当我们在进行网页布局时&#xff0c;经常会遇到content-box和border-box这两种盒子模型。虽然content-box看起来更合理&#xff0c;但我们却经常使用border-box。本文将解释为什么会出现这种情况&#xff0c;并详细介绍如何将一个盒子模型变成border-box。 开始 在网页开发中&…

微服务nacos实战入门

注册中心 在微服务架构中&#xff0c;注册中心是最核心的基础服务之一 主要涉及到三大角色&#xff1a; 服务提供者 ---生产者 服务消费者 服务发现与注册 它们之间的关系大致如下&#xff1a; 1.各个微服务在启动时&#xff0c;将自己的网络地址等信息注册到注册中心&#x…

【科研新手指南4】ChatGPT的prompt技巧 心得

ChatGPT的prompt心得 写在最前面chatgpt咒语1&#xff08;感觉最好用的竟然是这个&#xff0c;简单方便快捷&#xff0c;不需要多轮对话&#xff09;chatgpt思维链2&#xff08;复杂任务更适用&#xff0c;简单任务把他弄复杂了&#xff09;机理chatgpt完整咒语1&#xff08;感…

Vue基础必备掌握知识点-Vue的指令系统讲解(二)

Vue指令系统继续讲解 v-for 作用:基于数据进行循环&#xff0c;多次渲染整个元素 数据类型:数组.对象.数字。。。 遍历数组语法&#xff1a;v-for"(item,index)" in 数组 item:表示每一项 index:则是表现下标 注意:v-for中的key值&#xff0c;key属性唯一的…

探秘亚马逊云科技海外服务器 | 解析跨境云计算的前沿技术与应用

目录 一、什么是海外服务器 二、不同主流海外云服务器对比 三、海外服务器的创建(亚马逊为例) 四、个人总结 一、什么是海外服务器 亚马逊云科技海外服务器&#xff1a;指的是部署在世界各地的亚马逊数据中心中的服务器设备。这些服务器提供了计算、存储、数据库、网络等各…

μC/OS-II---信号量管理1(os_sem.c)

目录 信号量管理信号量创建信号量删除获取/等待信号量发出信号量 信号量管理 信号量创建 OS_EVENT *OSSemCreate (INT16U cnt) {OS_EVENT *pevent; #if OS_CRITICAL_METHOD 3u /* Allocate storage for CPU status register */OS_CPU_SR cp…

【SA8295P 源码分析 (三)】123 - MAX96712 解串器 sensor_detect_device_channels() 探测 Camera Sensor加串器 过程详细解析

【SA8295P 源码分析】123 - MAX96712 解串器 sensor_detect_device_channels 探测 Camera Sensor加串器 过程详细解析 一、sensor_detect_device():MAX96712 检测解串器芯片是否存在,获取chip_id、device_revision二、sensor_detect_device_channels() :MAX96712 解串器 寄存…

mysql子查询

1、概念 子查询就是将一个查询&#xff08;子查询&#xff09;的结果作为另一个查询&#xff08;主查询&#xff09;的数据来源或判断条件的查询。 2、分类 按查询结果的行列数 标量子查询&#xff1a;结果只有一行一列列子查询&#xff1a;结果只有一列多行&#xff0c;也称…

vue通过span-method合并列之后,合并列显示在中间位置,根据鼠标滑动跟随展示

当vue通过span-method合并列之后&#xff0c;出现的合并列显示在中间位置&#xff0c;但是如果页面没有分页&#xff0c;如何进行展示呢&#xff0c;难道要滑到最下面去看吗&#xff0c;下面我们来根据鼠标滑动跟随展示 没有处理的合并页面 <template> <el-table:dat…

智能穿戴AR眼镜主板方案定制_MTK平台AR智能眼镜PCB板开发

AR智能眼镜&#xff0c;是采用了多种技术实现增强现实效果&#xff0c;是将虚拟信息和现实场景相结合的智能设备。 AR智能眼镜硬件上&#xff0c;包括多个传感器、显示装置和处理器等。其中&#xff0c;传感器用于捕捉用户的动作和环境信息&#xff0c;如摄像头、陀螺仪、加速…

Hadoop入门——数据分析基本步骤

文章目录 1.概述2.分析步骤2.1第一步 明确分析目的和思路2.2第二步 数据收集2.3第三步 数据处理2.4第四步 数据分析2.5第五步 数据展现2.6第六步 报告撰写 3.总结 1.概述 2.分析步骤 2.1第一步 明确分析目的和思路 2.2第二步 数据收集 2.3第三步 数据处理 2.4第四步 数据分析 …

Phar 文件上传以及反序列化

1.phar反序列化 触发条件&#xff1a; 1、能将phar文件上传 2、可利用函数 stat、fileatime、filectime、file_exists、file_get_contents、file_put_contents、file、filegroup、fopen、fileinode、filemtime、fileowner、fileperms、is_dir、is_executable、is_file、is_link…

BEVFormer 论文阅读

论文链接 BEVFormer BEVFormer&#xff0c;这是一个将Transformer和时间结构应用于自动驾驶的范式&#xff0c;用于从多相机输入中生成鸟瞰&#xff08;BEV&#xff09;特征利用查询来查找空间/时间&#xff0c;并相应地聚合时空信息&#xff0c;从而为感知任务提供更强的表示…

【ROS】RViz2源码下载、编译、运行

【ROS】郭老二博文之:ROS目录 1、源码下载 1.1 源码地址 ROS1对应的RViz源码:https://github.com/ros-visualization/rviz ROS2对应的RViz2源码:https://github.com/ros2/rviz 注意:在搜索RViz2源码时,使用傻度搜索的结果是对应ROS1的RViz,使用谷歌的搜索结果是正确的…

c++之json的创建,解析,增加,删除

c之json的创建&#xff0c;解析&#xff0c;增加,删除 1.存储方式,类型2.宏3.创建,保存json4.解析5.删除6.修改 1.存储方式,类型 typedef struct cJSON { struct cJSON *next,prev; / next是获取下一个元素数据&#xff0c;prev是获取前一个元素数据 */ struct cJSON child…

【华为OD机试高分必刷题目】生理周期(C++-模拟迭代实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试高分必刷题目】生理周期(C++-模拟迭代实现)题目描述解题思路java题解代码代码OJ评判结果代码讲解寄语【华为OD机试高分必刷题目…