Activiti工作流驳回操作
使用activiti6.0工作流,驳回到某个节点。
当前思想:获得流程图,找到当前节点和想要驳回到节点,清理掉线,加上新的线,执行完成操作,然后还原线,图也就还原了。相当于临时修改了一下图,执行了complete操作。
问题:高并发下,其他实例提交,驳回操作取到这个还没还原的图了怎么办?加锁又太耗费资源了。。。有没有什么方法是只取到当前实例的这张图,而不是公用的图?
代码如下:跟图中一样
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); String currActivityId = task.getTaskDefinitionKey(); String processDefinitionId = task.getProcessDefinitionId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);//获得流程图 //获得当前待办节点信息 FlowNode currFlow = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currActivityId); //获得驳回目标节点信息 FlowNode targetFlow = (FlowNode) bpmnModel.getFlowElement(pti.getTaskId()); //如果不是同一个流程(子流程)不能驳回 if (!(currFlow.getParentContainer().equals(targetFlow.getParentContainer()))) {logger.info("此处无法进行驳回操作,抛出异常"); } //记录原活动方向 List<SequenceFlow> oriSequenceFlows = new ArrayList<>(currFlow.getOutgoingFlows()); //清理活动方向 currFlow.getOutgoingFlows().clear(); //建立新的方向 List<SequenceFlow> newSequenceFlows = new ArrayList<>(); SequenceFlow newSequenceFlow = new SequenceFlow(); String uuid = UUID.randomUUID().toString().replace("-", ""); newSequenceFlow.setId(uuid); newSequenceFlow.setSourceFlowElement(currFlow); //原节点 newSequenceFlow.setTargetFlowElement(targetFlow); //目标节点 newSequenceFlows.add(newSequenceFlow); currFlow.setOutgoingFlows(newSequenceFlows); //完成节点任务 //taskService.complete(task.getId(), map条件);动态每次完成的时候设置进去条件,不用一次性开始就设置 taskService.complete(task.getId());//驳回不需要条件 //恢复原方向 currFlow.setOutgoingFlows(oriSequenceFlows);
Activiti工作流驳回操作相关推荐
- Activiti工作流并行网关驳回在发起问题
1. 问题描述 第一次发起: 流程从发起人走到并行节点 -> 人员3,和人员4,人员5,人员6是并行.人员3(同意),人员4(同意),人员5(同意),人员6(不同意)回到发起人节点. 第二次发起 ...
- activiti工作流引擎入门教程
activiti简介 Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准. Activiti是一种轻量级,可嵌入的BPM引擎,而且 ...
- Activiti工作流使用之SpringBoot整合Activiti
Activiti工作流使用之SpringBoot整合Activiti 文章目录 Activiti工作流使用之SpringBoot整合Activiti 一.springboot整合Activiti环境依 ...
- WF4.0实战(七):请假流程(带驳回操作)
我使用WF4.0有很长一段时间了,但是对WF3.0和WF3.5自知甚少,对状态机也不甚了解.今天生鱼片前辈的博文:WF4实现工作流驳回流转模型的几种设计方案 中提出的四中实现驳回的方式中.第一种大家都 ...
- Activiti工作流从入门到入土:完整Hello World大比拼(Activiti工作流 API结合实例讲解)
文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig 欢迎 star !!! 本来想着闲来无事,前面在项目中刚刚用到了工作流 Activit ...
- Activiti工作流之实现一个简单的流程审批
该代码在上一篇博客的基础上开发. Activiti工作流入门 1.绘制bpmn流程图 在resources目录下新建一个diagram文件夹来存放我们绘制的bpmn流程图 由于我的IDEA中已经安装了 ...
- Activiti工作流引擎使用
Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本 ...
- activiti 工作流_一文让你读懂什么是Activiti工作流
Activiti工作流学习经验总结(一) 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程. 什么是Activiti? Activiti 是 ...
- activiti api文档_【白银人机】Activiti 工作流从入门到入土:完整 hello world 大比拼(API 结合实例讲解)...
点击上方"好好学java",选择"置顶"公众号 重磅资源.干货,第一时间送达 重磅推荐 ① 纯福利 | 公众号资源大汇总,一年才一次! ② 重磅!!2018年 ...
最新文章
- ccentos 7下安装php5.6并使用nginx + php-fpm部署多个不同端口网站
- NTFRS事件ID:13568
- DockerFile和DockerCompose使用总结
- pollard_rho大数分解Java版
- linux 火狐无法执行二进制文件_尝试在Linux上运行Shell脚本时“无法执行二进制文件”...
- Mob统计分析游戏类App详细埋点需求
- asp.net mvc5 oracle,ASP.NET MVC5网站开发用户注册(四)
- linux tty驱动名称,Linux下TTY驱动程序分析
- MySQL不能使用/tmp
- 常用的SEO工具都有哪些呢?5个SEO必备优化工具推荐
- 点歌机终端服务器停止服务怎么办,服务器版点歌系统常见问题处理
- 移动端分享链接给微信好友
- 1. NET 6.0 前言
- fastadmin中ajax传参
- 已解决:git push代码出现Support for password authentication was removed on August 13, 2021.
- c语言流水调度作业,最优流水作业调度问题:流水作业调度问题
- python import注意事项
- 腾讯广告终于迎来全面整合
- 英语学习案例分析APP 201421123108 王坤彬
- 久别重逢,畅快开吃!
热门文章
- Java开发者福音 阿里巴巴宣布连任Java全球管理组织席位
- 计算机教学行为的改进,应用信息技术教学的好处和改进措施
- IDEA 出现Override is not allowed when implementing interface method
- StructuredStreaming
- IIS 发布网站出现compilation debug=true targetFramework=4.6.1错误
- android ftp教程,android ftp上传功能实现步骤
- 高并发场景下的库存更新
- 计算机目前九种编程语言大对比
- 概率论由相关性求数学期望和方差的公式_《概率论与数理统计》(公共课—计算机科学与技术本科专业)教学大纲(2017.2编)资料...
- 说说Android桌面(Launcher应用)背后的故事(七)——又是一个附属品(可以转动的绚烂饼图)