flowable 新的驳回方式 ChangeActivityStateBuilder 多实例驳回 并行网关驳回 普通节点驳回

6.4.0 新增加了驳回的方式,真是对中国式流程的一种福音呀,感谢flowable创始人。

再也不为开发驳回流程发愁了,网上那些视频和修改源码真的是demo级别的,不能商业用。

只有心如流水的学习才是永远的发电机,不要幻想别人能给把系统都给你做好了。

任何节点都可以跳转

runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveActivityIdsToSingleActivityId("当前的任务的节点id", "需要跳转的目标节点").changeState();

当然有很多方法,大家可以去找一下ChangeActivityStateBuilder这里类。

  1. 直接上代码吧,从来都是干货,不隐藏,哈哈。
public ReturnVo<String> backToStep(BackVo backVo) throws Exception {ReturnVo<String> returnVo = new ReturnVo<>(FlowConstant.SUCCESS, "OK");Task task = taskService.createTaskQuery().taskId(backVo.getTaskId()).singleResult();String processInstanceId = task.getProcessInstanceId();FlowElement distActivity = processDefinitionUtils.findFlowElementById(task.getProcessDefinitionId(), backVo.getDistFlowElementId());//1. 保存任务信息task.setAssignee(backVo.getUserCode());taskService.saveTask(task);//2. 如果上一个节点是提交者的话要处理一下if (FlowConstant.FLOW_SUBMITTER.equals(distActivity.getName())) {//查找发起人 设置到变量中,以便驳回到提起人的时候能留在提交人这个节点ExtendProcinst extendProcinst = this.extendProcinstService.findExtendProcinstByProcessInstanceId(processInstanceId);String creator = null;if (extendProcinst != null) {creator = extendProcinst.getCreator();if (StringUtils.isBlank(creator)) {creator = extendProcinst.getCurrentUserCode();}} else {ExtendHisprocinst extendHisprocinst = extendHisprocinstService.getExtendHisprocinstByProcessInstanceId(processInstanceId);creator = extendHisprocinst.getCreator();if (StringUtils.isBlank(creator)) {creator = extendHisprocinst.getCurrentUserCode();}}if (StringUtils.isNotBlank(creator)) {runtimeService.setVariable(processInstanceId, FlowConstant.FLOW_SUBMITTER_VAR, creator);}}List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();List<String> currentActivityIds = new ArrayList<>();tasks.forEach(t -> currentActivityIds.add(t.getTaskDefinitionKey()));//3. 删除节点信息if (!(distActivity instanceof EndEvent)) {this.deleteHisActivities((Activity) distActivity, processInstanceId);}//4. 添加审批意见和修改流程状态this.addCommentAndUpdateProcessStatus(backVo, processInstanceId);//5.执行驳回操作runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveActivityIdsToSingleActivityId(currentActivityIds, backVo.getDistFlowElementId()).changeState();return returnVo;}

2.经测试 多实例节点,并行网关,判断网关都没有问题,甚至是子流程的一种节点跳转都有相应的方法
具体怎么使用可以去看官方的测试用例
在这里插入图片描述

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

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

相关文章

解锁新姿势 |如何利用配置中心规范构建PaaS服务配置

摘要&#xff1a; 在上一篇文章中&#xff0c;我们以MQ和ACM为例&#xff0c;讨论了如何借助配置中心对消息进行限流管理的场景。在本文中&#xff0c;我们继续以该场景为例&#xff0c;讲述如何以规范的配置命名格式来进行限流设置。 点此查看原文&#xff1a;http://click.al…

php email,两种PHP邮件发送的方式

有不少程序员在用PHP发送邮件的时候会遇到几个问题&#xff0c;那么遇到问题就要有解决问题的思路&#xff0c;本文就是根据php实现邮件发送的思路&#xff0c;整理下来的一篇文章&#xff0c;在遇到不同问题时给出的不同解决方法&#xff0c;感兴趣的小伙伴们可以参考一下。一…

flowable流程实例笔记(1)

RuntimeService 运行服务类 支持启动的方式 流程定义: 从这里获取资源文件. 执行实例: 流程实例中执行的每个环节.流程实例: 一个流程实例包括所有运行的节点,一个流程中流程实例只有一个.启动一个实例: public void startProcessInstanceByKey() {String processDefinitionK…

flowable6.4.2流程审批后涉及到的表

当流程全部走完后&#xff0c;act_ru_*表的数据清空了&#xff0c;全部移到了act_hi_*表

阿里云弹性高性能计算产品商业化正式发布

摘要&#xff1a; 来自全国500多家企业申请试用&#xff0c;结合客户的体验需求和反馈意见&#xff0c;不断地改善和打磨&#xff0c;弹性高性能计算商业版有了很大的优化&#xff0c;在产品性能和体验上都有全新的升级。 点此查看原文&#xff1a;http://click.aliyun.com/m/4…

php中 怎么去除,php如何去掉链接

php去掉链接的方法&#xff1a;1、删除内容中的超链接ereg_replace(]*)>([^,\\2,$content);ereg_replace("]*>|","",$content);2、消除包含特定词的超链接$find"this string is my find";$string替换掉了;//将超链接替换成的内容echo ereg…

Flowable 6.4 多实例会签 审批人设置、结果判断、会签后走向

参考文章&#xff1a;http://huan1993.iteye.com/blog/2249764 第一部分是部署文件的大致说明&#xff0c;其他文章也有介绍&#xff0c;熟悉的可以跳过 首先部署文件中&#xff1a; <userTask id"_7" name"评估" flowable:assignee"${per}"…

RabbitMQ入门指南(八):MQ可靠性

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、MQ数据持久化 1.交换机持久化 2.队列持久化 3.消息持久化 4.生产者确认机制 二、LazyQueue 1.LazyQueue模式介绍 2.管理控制台配置Lazy模式 3.代码配置Lazy模式 4.更新已有队列为lazy模式 总…

MaxCompute常用语句汇总(更新ing)

摘要&#xff1a; 收集一些MaxCompute常用命令。 点此查看原文&#xff1a;http://click.aliyun.com/m/41645/ 大数据计算服务(MaxCompute&#xff0c;原名ODPS&#xff0c;产品地址&#xff1a;https://www.aliyun.com/product/odps)是一种快速、完全托管的TB/PB级数据仓库解决…

290种零食大统计,谁能唤起80、90后的童年回忆?|数据会说话

戳蓝字“CSDN云计算”关注我们哦&#xff01;数据分析&#xff1a;喜欢果脯的朱小五内容撰写&#xff1a;只爱辣条的王小九本文转自公众号『凹凸数读』1块钱能买到什么&#xff1f;对于80、90后的童年来讲&#xff0c;1块钱是4根冰棍&#xff0c;是10张辣片&#xff0c;是两包双…

php socket主动推送消息,PHP使用WebSocket主动推送【微信小程序接收】

WebSocket.jpegWebsocket是一种服务端和客户端可以持久连接的通信协议&#xff0c;我们可以利用WebSocket的特性实现服务器主动向客户端推送消息的功能。这里我们用TP5.1框架结合Workerman来做演示首先用Composer下载TP5.1框架composer create-project topthink/think5.1.* tp5…

EDAS再升级!全面支持Spring Cloud应用

摘要&#xff1a; 近日&#xff0c;阿里中间件&#xff08;Aliware&#xff09;的企业级分布式应用服务EDAS宣布再次升级&#xff0c;全面支持Spring Cloud应用。 点此查看原文&#xff1a;http://click.aliyun.com/m/41644/ 近日&#xff0c;阿里中间件&#xff08;Aliware&am…

flowable 实现多实例-会签-动态配置人员 参考demo

会签 即多人执行当前任务 设置判断数 通过 例如&#xff1a;设置了是半数通过即可通过当前节点 如果当前是4人那就是2人即通过 如果是6人那就是三人即通过 如果是5人 即三人通过 看各位的判断值是如何书写 这个值是根据各位需求改变的 以下是xml <?xml version"1.0&q…

微博宕机复盘:什么样的技术架构,可支持80个明星并发出轨?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 张蓝予编辑 | 苏琦6月27日晚间&#xff0c;范冰冰李晨宣布分手&#xff0c;瞬间亿级的访问量&#xff0c;让微博再一次“崩溃”&#xff1a;范冰冰账号评论区无法加载&#xff0c;搜索“范冰冰李晨”显示失败。微博曾经夸下海…

flowable 动态多实例

<?xml version"1.0" encoding"UTF-8"?> <definitions xmlns"http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd"http://www.w3.org/2001/XMLSchema&quo…

手机站的view.php,织梦网站文章内容页动态地址plus/view.php路径修改

织梦系统的漏洞很多来自plus目录&#xff0c;一般的文章站根本用不了那么多功能&#xff0c;因此可以考虑直接把整个plus文件夹删除掉。在发布文章时要预览文章&#xff0c;因此我把plus下除了view.php 和 img文件夹(存放样式图标)的其他文件都删除了。但是plus也容易暴露问题&…

为什么MaxCompute采用列式存储?列式存储和行式存储的主要区别在哪

摘要&#xff1a; 1 为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好&#xff0c;直接抄原文了)&#xff1a; Row-based storage stores atable in a sequence …

Hive精华问答 | Hive和传统数据库有什么不同?

Hive是一个数据仓库基础工具&#xff0c;它是建立在Hadoop之上的数据仓库&#xff0c;在某种程度上可以把它看做用户编程接口&#xff08;API&#xff09;&#xff0c;本身也并不存储和处理数据&#xff0c;依赖于HDFS存储数据&#xff0c;依赖MR处理数据。它提供了一系列对数据…

flowable 多实例动态添加人

1.背景&#xff1a; 由于在日常情况下&#xff0c;我们的多实例要动态添加人员的场景&#xff0c;有没有这样的api呢&#xff1f;新的flowable有这样的功能。 2.具体实现 xml <userTask id"miTasks" name"My Task ${loopCounter}" activiti:assignee&…

MaxCompute SQL原理解析及性能调优

摘要&#xff1a; 分享内容 介绍了ODPS SQL的基于mapreduce是如何实现的及一些使用小技巧&#xff0c;回顾了mapreduce各个阶段可能产生的问题及相应的处理方法&#xff0c;同时介绍了一些应对数据倾斜的处理方法&#xff0c;最后介绍了一些关于数据集构造、特征选择的技巧帮助…