activiti 流程驳回是很常见的需求,但如果总是通过分支划线来实现驳回流程就会看起来很复杂,所以这里介绍流程驳回的实现

 

原理 

  1. 重写activiti缓存,让流程定义缓存线程化(解决并发下对其他流程定义的影响)
  2. 任务提交前,克隆流程定义,放入线程中,直接修改ProcessDefinitionEntity 的ActivityImpl 的指向,把当前节点设置为需要跳转的目标节点。
  3. 提交任务

历史节点的id可以从审批历史中获取,也可以对流程进行驳回配置

 如图,选择一个流程的节点进行配置,然后在流程定义中获取到配置。进行驳回的控制

 

 

 

跳转任意节点也是如此实现,所不同的就是计算目标节点的方式。

 

可以参考案例项目 https://gitee.com/agile-bpm/agile-bpm-basic

 

posted on 2018-08-17 17:41  agilebpm  阅读(3028)  评论(0编辑  收藏  举报