`
shangjava
  • 浏览: 1190446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

工作流回退模式分析

阅读更多

回退(Rollback WorkItem)

回退是工作流参与者对自己“待办任务”(实际是对工作项)的一种操作,即参与者主动回退待办任务列表中的任务到已经执行过的人工节点。

为什么要回退?

参与者接受任务后,发现不应由自己办理此任务或以前的执行者办理有错误等情况后,需要将此接受的任务回退给以前某个节点的执行者重新办理。

回退模式

回退的情况实际上是非常复杂的,其中包括了参与者的重新选择以及回退的条件判断等等。这里先列出常见的回退模式(其实也是我们支持的模式)。

串行

<!-- [if gte vml 1]> <![endif]-->

这种情况最为简单,后续节点可以回退到前续任意人工节点。回退后,节点重走。

分支

<!-- [if gte vml 1]> <![endif]-->

这种情况也相对简单,实际执行的分支上的节点可以回退到前续任意人工节点(不区分主支和分支)。同样,主支上的节点也可以回退到任意实际执行的分支上的节点。

可能的问题:多次回退后的回退节点选择。例如:第一次流程经过节点2、节点3到达节点5, 节点5可以回退到节点1、节点2和节点3的任意一个,此时节点5回退到节点1,节点1重走,这一次流程改为经过节点4到达节点5,节点5回退时如何选择回 退节点?此时的策略是以最近实际执行的分支为准,即节点5只允许回退到节点4和节点1,不允许回退到节点2和节点3。(抹去记忆)

并发

<!-- [if gte vml 1]> <![endif]-->

对于并发的情况,分支节点只允许在分支的节点间回退。

<!-- [if gte vml 1]> <![endif]-->

同理,主支节点也只允许在主支的节点间回退。

多实例汇聚

<!-- [if gte vml 1]> <![endif]-->

在这种情况下,节点5会产生2个实例,实际相当于继续并发。节点5根据具体哪个节点触发的它而产生回退节点。同时不允许回退到节点1以及前续的节点去。

子流程

<!-- [if gte vml 1]> <![endif]-->

支持子流程到父流程的回退,也支持父流程到子流程节点的回退。需要注意的是子流程节点有可能产生多个子流程实例,在这种情况下不支持父子流程之间的相互回退。

回退节点的参与者选择

默认策略是由原先节点的实际参与者重新处理,比如节点2回退到节点1,则节点1的实际参与者重新处理该节点任务。这也符合大多数实际的业务场景。

在节点任务竞争参与的情况下,提供另一种策略,即让人员重新竞争。

回退的条件判断

对于多人(或者多部门,用户)参与的工作项,提供不同的回退策略

任意人回退即回退,剩余工作项手工终止

最后提交人回退才回退

流程定义期定义该策略。

另外流程定义时提供节点可回退列表,由用户在定义期对可回退的节点进行限制。

关于业务补偿

业务补偿是一个很重要的概念,在回退的情况下需要相应的回退部分业务操作。这里由引擎提供统一的接口,返回回退路径,由客户自定义代码进行匹配处理。

关于实现

很多工作流引擎通过流程定义时绘出回退线来显式的支持回退,这种实现在业务复杂的情况下会造成流程图的异常烦琐,但是比较清晰,实现比较容易。隐式实现相比而言优点更多。

分享到:
评论

相关推荐

    工作流回退模式分析.docx

    用过工作流的都知道回退模式,为什么要回退? 参与者接受任务后,发现不应由自己办理此任务或以前的执行者办理有错误等情况后,需要将此接受的任务回退给以前某个节点的执行者重新办理。

    工作流回退模式设计分析

    工作流回退模式设计分析,最近正在研究这个东西,希望对大家有所帮助

    工作流回退常用模式分析

    工作流回退常用模式分析

    工作流中的回退业务实现

    工作流回退模式分析  回退(Rollback WorkItem)  回退工作流参自己“待办任务”(实际工作项)种操作,即参主动回退待办任务列表任务已经执行过人工节点。  什么回退?  参接受任务,不应由自己办理此任务或以...

    银狐999工作流文档

    胡长城老师(银狐999)工作流设计分析文档,向胡长城老师致意!内容包括:工作流基础知识;工作流模型分析;工作流设计器开发;工作流授权控制模型;...工作流回退常用模式分析;工作流之星光等。再次想银狐999致意!

    基于jbpm与activiti的工作流平台技术架构介绍

    20.流程任务逐步回退处理(任务追回及多驳回 ) 21.流程自由跳转 22.流程跳转业务规则设置 23.多级分发任务与任务汇总 24.会签(并行与串行)、补签及投票处理 25.流程版本变更管理 26.流程催办(基于MQ短信及邮件...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    3.3.2.页面回退管理的实现 22 3.4本章小结 22 第四章 页面自适应机制设计 23 4.1页面兼容策略 23 4.2 页面自适应策略 24 4.2.1设备自适应 24 4.2.2.浏览器自适应 25 4.3 模块实现 25 4.3.1根据适口属性设计响应式...

    BPS开发指南.chm

    02.02.05 回退 02.02.06 代理 02.02.07 代办 02.02.08 协办 02.02.09 交接 02.02.10 改派 02.02.11 自由流 02.02.12 多子流程 02.02.13 聚合模式 02.02.14 分支模式 02.03 在Java环境下应用BPS 02.03.01 ...

    3GPP-23501-g10(中文版).pdf

    4.2.9 网络分析架构 50 4.2.10 ATSSS 支持的架构参考模型 51 4.3 与 EPC 的互通 52 4.3.1 非漫游架构 52 4.3.2 漫游架构 53 4.3.3 5GC 通过非 3GPP 接入与 E-UTRAN 连接到 EPC 55 之间的互通 4.3.3.1 非漫游架构 55 ...

    工程企业成本管理软件

    ·外施队还回,办理退库 ·材料出场,填写出场单 ·根据周转材料进出场情况及合同签订价格,软件自动计算出租赁费,填入付款数,欠款自动生成 ·按照与外施队签订的材料消耗协议对材料损耗率进行考核 1.进场和退场...

    材料成本管理软件,物资管理软件,进销存软件

    ·外施队还回,办理退库 ·材料出场,填写出场单 ·根据周转材料进出场情况及合同签订价格,软件自动计算出租赁费,填入付款数,欠款自动生成 ·按照与外施队签订的材料消耗协议对材料损耗率进行考核 1.进场和退场...

    eas供应链dep案例集

    客户这边需要通过这个字段配合工作流,不同采购组由不同人员审批。 "1) 采购收货单编辑界面增加采购组字段; 2) 采购收货单序时簿界面增加采购组字段; 3) 在onload()方法增加KDTEditListener事件,实现采购组织与...

    Access 2000数据库系统设计(PDF)---001

    28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的数据 29212.6.5 提交和回退对表的改变 29212.7 ...

    Access 2000数据库系统设计(PDF)---002

    28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的数据 29212.6.5 提交和回退对表的改变 29212.7 ...

    Access 2000数据库系统设计(PDF)---018

    28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的数据 29212.6.5 提交和回退对表的改变 29212.7 ...

    Access 2000数据库系统设计(PDF)---003

    28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的数据 29212.6.5 提交和回退对表的改变 29212.7 ...

    Access 2000数据库系统设计(PDF)---011

    28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的数据 29212.6.5 提交和回退对表的改变 29212.7 ...

Global site tag (gtag.js) - Google Analytics