使用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工作流驳回操作相关推荐

  1. Activiti工作流并行网关驳回在发起问题

    1. 问题描述 第一次发起: 流程从发起人走到并行节点 -> 人员3,和人员4,人员5,人员6是并行.人员3(同意),人员4(同意),人员5(同意),人员6(不同意)回到发起人节点. 第二次发起 ...

  2. activiti工作流引擎入门教程

    activiti简介 Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准. Activiti是一种轻量级,可嵌入的BPM引擎,而且 ...

  3. Activiti工作流使用之SpringBoot整合Activiti

    Activiti工作流使用之SpringBoot整合Activiti 文章目录 Activiti工作流使用之SpringBoot整合Activiti 一.springboot整合Activiti环境依 ...

  4. WF4.0实战(七):请假流程(带驳回操作)

    我使用WF4.0有很长一段时间了,但是对WF3.0和WF3.5自知甚少,对状态机也不甚了解.今天生鱼片前辈的博文:WF4实现工作流驳回流转模型的几种设计方案 中提出的四中实现驳回的方式中.第一种大家都 ...

  5. Activiti工作流从入门到入土:完整Hello World大比拼(Activiti工作流 API结合实例讲解)

    文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig 欢迎 star !!! 本来想着闲来无事,前面在项目中刚刚用到了工作流 Activit ...

  6. Activiti工作流之实现一个简单的流程审批

    该代码在上一篇博客的基础上开发. Activiti工作流入门 1.绘制bpmn流程图 在resources目录下新建一个diagram文件夹来存放我们绘制的bpmn流程图 由于我的IDEA中已经安装了 ...

  7. Activiti工作流引擎使用

    Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本 ...

  8. activiti 工作流_一文让你读懂什么是Activiti工作流

    Activiti工作流学习经验总结(一) 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程. 什么是Activiti? Activiti 是 ...

  9. activiti api文档_【白银人机】Activiti 工作流从入门到入土:完整 hello world 大比拼(API 结合实例讲解)...

    点击上方"好好学java",选择"置顶"公众号 重磅资源.干货,第一时间送达 重磅推荐  ① 纯福利 | 公众号资源大汇总,一年才一次! ② 重磅!!2018年 ...

最新文章

  1. ccentos 7下安装php5.6并使用nginx + php-fpm部署多个不同端口网站
  2. NTFRS事件ID:13568
  3. DockerFile和DockerCompose使用总结
  4. pollard_rho大数分解Java版
  5. linux 火狐无法执行二进制文件_尝试在Linux上运行Shell脚本时“无法执行二进制文件”...
  6. Mob统计分析游戏类App详细埋点需求
  7. asp.net mvc5 oracle,ASP.NET MVC5网站开发用户注册(四)
  8. linux tty驱动名称,Linux下TTY驱动程序分析
  9. MySQL不能使用/tmp
  10. 常用的SEO工具都有哪些呢?5个SEO必备优化工具推荐
  11. 点歌机终端服务器停止服务怎么办,服务器版点歌系统常见问题处理
  12. 移动端分享链接给微信好友
  13. 1. NET 6.0 前言
  14. fastadmin中ajax传参
  15. 已解决:git push代码出现Support for password authentication was removed on August 13, 2021.
  16. c语言流水调度作业,最优流水作业调度问题:流水作业调度问题
  17. python import注意事项
  18. 腾讯广告终于迎来全面整合
  19. 英语学习案例分析APP 201421123108 王坤彬
  20. 久别重逢,畅快开吃!

热门文章

  1. Java开发者福音 阿里巴巴宣布连任Java全球管理组织席位
  2. 计算机教学行为的改进,应用信息技术教学的好处和改进措施
  3. IDEA 出现Override is not allowed when implementing interface method
  4. StructuredStreaming
  5. IIS 发布网站出现compilation debug=true targetFramework=4.6.1错误
  6. android ftp教程,android ftp上传功能实现步骤
  7. 高并发场景下的库存更新
  8. 计算机目前九种编程语言大对比
  9. 概率论由相关性求数学期望和方差的公式_《概率论与数理统计》(公共课—计算机科学与技术本科专业)教学大纲(2017.2编)资料...
  10. 说说Android桌面(Launcher应用)背后的故事(七)——又是一个附属品(可以转动的绚烂饼图)