工作流回退模式设计分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工作流回退模式设计分析

工作流回退模式设计分析 回退(Rollback WorkItem) 回退是工作流参与者对自己“待办任务”(实际是对工作项)的一种操作,即参与者主动回退待办任务列表中的任务到已经执行过的人工节点。 - 参与者接受任务后,发现不应由自己办理此任务或以前的执行者办理有错误等情况后,需要将任务回退给以前某个节点的执行者重新办理。 常见回退 回退的情况实际上是非常复杂的,其中包括了参与者的重新选择以及回退的条件判断等等。这里先列出常见的回退模式(其实也是我们支持的)。 串行 ??? 这种情况最为简单,后续节点可以回退到前续任意人工节点。回退后,节点重走。 分支 ??? 从“当前A”节点返回到其主干。 并发 ??? “当前A”和“当前B”分别是并行分支上的正在活动的节点,这时由“当前A”节点提出回退到其主干节点请求,这时引擎需要停止兄弟并行支路上的活动节点,对已执行过的节点要进行回滚,并进行可能的补充(可选)。 同一执行线回退 对于同一执行线之间的节点回退,系统将回退两节点形成的距形区域之间所有节点,并进行可能的补偿。 ??? 在这种情况下, ??? 从分支回到分支的处理方法是把“分支回退到主干”+“从主干回退到分支”组合起来处理,先用“分支回退到主干”方法处理前段,再按“从主干回退到分支”处理后段。 从子流程回退到主流程 分两段来处理,第一段是先从子流程当前节点“活动41”回退到子流程的启动节点“活动4”。第二段是从子流程的启动节点“活动4”按上述的方法回退到“活动1” 从主流程回退到子流程 这种情况比较复杂,处理方法是分三段处理,第一段是从当前节点“活动5”回退到子流程的启动节点“活动4”。第二段恢复子流程在执行状态。第三段是从子流程的结束节点回退到“活动42”节点。 会签节点回退 对于多人(或者多部门)会签的节点回退,提供不同的回退策略: 任意人回退即回退,剩余工作项手工终止 首个签办人回退 指定人员列表回退 流程定义期定义该策略。 回退节点的参与者选择 默认策略是由原先节点的实际参与者重新处理,比如节点2回退到节点1,则节点1的实际参与者重新处理该节点任务。这也符合大多数实际的业务场景。 在节点任务竞争参与的情况下,提供另一种策略,即让人员重新竞争。 回退的条件判断 业务补偿是一个很重要的概念,在回退的情况下需要相应的回退部分业务操作。这里由引擎提供统一的接口,返回回退路径,由客户自定义代码进行匹配处理。 ? 关于实现 很多工作流引擎通过流程定义时绘出回退线来显式的支持回退,虽然可以帮助设计人员更比较清晰管理回退,但在业务复杂的情况下会造成流程图的异常烦琐,根本无法阅读,流程也难以维护。相比而言隐式实现更易于维护和理解,也是本人推荐实现方式。 问题讨论 本文未提到的回退场景,请各位集思广益。 关于虚拟回退的问题 可以把回退分为引擎级回退和业务级的回退,引擎级的回退,可以回退到任何节点,但要求所有支路全部回滚,保证流程状态不混乱。业务级(模拟)的回退,只允许回退上一步,通过添加新节点来模拟退回。 用模拟回退的方式实现: 现在问题是,如果在执行“收集整理_副本”节点时,执行人再要求回退,该如何处理? 关于流程回退通知 引擎级回退,要求所在分支也强制回退,如何通知各分支,不至于刚发现收到待办工作,等想办理时却发现该工作已被取消,如果不知道是什么原因被回退了,就会很郁闷。 关于拒收问题 拒收和回退看起来是很相近的两个业务,到现在我还觉得他们有着同样的处理方式。在你们接触到的业务中,有遇到哪些拒收的情况? 反馈: 1)流程还提供回退条件判断接口,让业务系统自行决定是否可回退,如果业务系统未实现该接口,则按默认策略判断。 2)为业务系统提供回退情况查询,比如指定要回退的目标节点后,返回该回退的类型:同步或异步,受影响的支路。 3)多步会签,用动态创建分支去实现。 4)提供流程历史意见和流程流转跟踪。 5)提供拒收事件,由业务系统实现拒收。 6)回退产生一个事件,由该事件的实现人来处理回退的通知。

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档