工作流系统之三十三 撤回的实现
来源:互联网 发布:java boolean 异或 编辑:程序博客网 时间:2024/04/30 07:02
工作流系统的回退流,是指流程实例运行到一定阶段后,可以主动的选择回退到曾经运行过的任意轨迹上。回退流的发起方是当前步骤的任务执行人,选择主动的回退,上面有一篇 回退流的实现,主要说明了回退流的实现过程。
工作流系统的撤回,是指流程实例运行了一定的轨迹后,上一步的任务执行人,选择撤回刚刚提交的任务,使得流程再次流转到此步骤。撤回的发起方是当前步骤的上一步任务的执行人,选择主动撤回。
如上图:红色圈为当前运行到的轨迹,当上一步审核步骤的任务执行人,选择主动撤回时,则将回退到审核步骤,再次执行。
撤回与回退的两个区别:
1. 撤回只能撤回到当前步骤的上一步,不能跨多个步骤的撤回。回退是可以任意的回退。
2. 撤回的发起方是上一步的任务执行人。回退的发起方是当前步骤的可执行人。
撤回与回退的相同点:
1. 撤回和回退都是指回到曾经的轨迹;
2. 撤回和回退回到曾经运行的轨迹后,再次生成此轨迹的任务,并且辅助业务补偿类,将环境或业务数据恢复成原来的,持久化变量可以忽略,临时变量则需要重新赋值。
3. 撤回和回退都不是按照流程定义的正常轨迹流转,需要配置有权限的用户去操作。
撤回功能的实现:
既然撤回与回退都是回到曾经运行的轨迹,只是发起方不一样,所以在实现的时候,只需调用同一流程引擎的实现自由回退的api函数。
串行路由,实现撤回,查找当前撤回步骤的下一步是否为当前步骤,是则强行关闭当前的任务,回退到此步骤,重新生成此步骤的任务。
条件路由,实现撤回,查找当前撤回步骤的下一步是否为当前步骤,需要查找有条件结果和无条件结果,有则实现回退。
分支路由,实现撤回,主要是查找当前撤回步骤的下一步是否为当前步骤,需要略过分支节点来查找,查找到了,则实现回退。撤回的过程与回退流的实现过程一样。
分支路由的撤回,分为在分支上面的撤回,与,分支到主干上的撤回
分支--分支的撤回
如下图:
在分支上面的撤回,则只撤回本分支的任务,其它分支不受影响。
分支--主干的撤回
如下图:
分支撤回到主干,则将关闭所有的分支,撤回到主干。如果分支上面嵌套分支,也将关闭所有的嵌套分支,回到主干。
聚合路由,实现撤回,当一个分支提交了,其它分支还未执行,即未满足聚合的条件时,则实现不了撤回,因为当前步骤还在另一个分支,还未执行到聚合后面的节点。当分支条件均满足后,流转到聚合节点后面的步骤,则可以实现撤回,撤回与回退一样,只撤回此分支的轨迹,其它分支不撤回。
撤回与回退的功能均是不按流程定义的轨迹去任意执行,因此在操作的时候不能给所有的用户都分配此功能。撤回与回退在流程引擎中的实现是一样的,撤回只是对回退的一个补充。
- 工作流系统之三十三 撤回的实现
- 撤回的实现
- 微信防撤回的实现
- 工作流系统之三十一 回退流的实现
- 工作流系统之三十五 自由流的实现
- 工作流系统之三十七 自由流的实现(续)
- 工作流系统之四十 抄送功能的实现
- 工作流管理系统开发之十八 工作流会签的相关实现
- 工作流管理系统开发之十九 工作流系统的事务处理
- layim的websocket消息撤回功能实现
- activiti工作流任意节点撤回
- 工作流管理系统开发之十六 主子流程参数传递的实现
- 另一种JBPM实现互斥撤回任务的例子
- 老版本的环信,实现消息撤回功能。
- 工作流系统开发之二十四 如何构建支持多数据库的.net工作流系统
- Mac QQ 防撤回------------------简单实现防女朋友撤回消息(好吧程序员哪有女朋友,我瞎说的....)
- 工作流系统的开发
- 工作流系统的组成
- HDU-2845-Beans(简单DP)
- 工作流系统之三十二 设计模式在工作流系统开发中的运用
- 浙大数据结构基础 week3 4-2
- C语言定义数组起始地址对齐方式(IAR C99 Kinetis K66)
- Android自定义控件之CircleImageView
- 工作流系统之三十三 撤回的实现
- 上两道js面试题,关于数组字符串 之间的转化
- hash_table
- 工作流系统之三十四 集成用户系统
- mysql导入文件出现Data truncated for column 'xxx' at row 1的原因
- 网络与系统学习路线
- 74. Search a 2D Matrix
- 工作流系统之三十五 自由流的实现
- java实现租车系统