工作流引擎驳回设计

1.1 关于驳回

驳回,在有的应用中叫“回退”。驳回是中国特色的一种方式,驳回在流程图上也没有迁移线的表达经常也是隐性的,比如申请经费可能由于资料不足被驳回来补充资料,像这样的例子有非常多,也很常见。

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

回退的情况实际上是非常复杂的,有串行上的驳回,也有并行内的驳回,并行区内驳回到并行区外,从分支驳回到主干等,从主干驳回到分支内,多重聚合的驳回等。驳回过程中会发生很多事情,也会可能导致重走路径时产生重复路径。

驳回方式的支持力度也往往成为评价一个工作流引擎是否具有中国特色和引擎强弱的能重要批价指标。

1.2 关于显隐性驳回的理解

如下图所示,有节点A到节点B 属于正常发送,但从节点B到节点A,则出现两种情况:

(1)迁移驳回:实际说是迁移驳回的表达是不正确的,因为没有迁移驳回的说法,本质上还是正常发送,如图中B—A黑色线;(迁移的驳回严格上没有驳回的意义存在,只是一种表象,与正常向提交节点没有区别,所以迁移式的驳回不是本节讨论的重点),这里只是提出来有一个认识。

通过流程定义时绘出驳退迁移线来显式的支持驳回,即使用迁移的方式来作为回退,实际这种不叫驳回,只是用流程的正常提交流转而已。

(2)被驳回:(流程图中不存在线,如上图中红色线是不存在的)可能因为某些特殊原因,被任务B退回,要求任务A重新办理,如图中B—A红色线。虽然都是从B到A,代表的意义却完全不同。(本章所讨论的驳回模型都是讨论这种情况),

1.3 关于业务补偿

业务补偿是一个很重要的概念,在回退的情况下需要相应的回退部分业务操作。这里由通常由用户自行编写相关的代码进行业务上的回滚,由用户自定义代码进行处理。

1.4 驳回问题类型

1仅可驳回到提单

2仅可驳回到上一步

3仅可驳回到上一步或提单

4驳回任意历史节点

5驳回指定历史节点

1.5 驳回模式

1.5.1 描述

上图:驳回模式

驳回模式是指驳回后再重新提交应当怎么处理,如上图所示,节点3驳回到节点2,然后节点2重新提交时直接提交回到节点3.这就叫直来直往。

上图所示,节点6驳回到节点2,节点2正常提交依然是走节点5,节点5再并发给节点3和节点6,这样的方式就叫按流程图执行。

当按直来直往或按图流程执行时都会发生一些问题,比如节点6驳回节点2时,如果当时节点3已经存在实例了,那么这时驳回节点2这后重新走节点5会导致节点3的分支重复,那么这些问题就是驳回模式中要解决的问题。

主要分为两种模式:

按流程图执行

即按流程图定义执行。

直来直往模式

哪里在来的就回哪里去。

1.5.2 直来直往

即驳回后回到本节点

如上图所示,节点3驳回到节点2,节点2处理后直接返回到节点3.直来直往适应于绝大多数情况。

直来直往模式有且只能转递一次,比如节点13直来直住模式驳回到节点3,这时候节点3不允许再有直来直往驳回到节点2.因为如果有再次直来直住驳回到节点2会造成混乱,因为节点2处理完后直接返回节点3,当节点3再次处理时是按正常提交给节点7,并不会直接返回节点13,那么此时流程实例将无法正常流转到结束,因为节点13是一个并行结束节点。

节点3此时也不支持再次使用按流程图执行的驳回,因为是会破坏节点13的设置期望,节点13是期望驳回后直接处理返回回来,所以直来直往驳回后,统一规则为不允许再次驳回。只能是按节点13的期望处理完后再次返回给节点13.

1.5.3 按流程图执行

1、并行区间外驳回到并行区前

如上图所示节点13驳回到节点2,此时节点2提交后是按流程图执行,而引擎是删除节点2之后所有节点实例,比如节点6如果存在实例而清空掉这些实例。那么当前任务会从节点5重新开发。

1.5.4 并行外驳回到并行区间内

如上图所示,任务13驳回到任务7的情况,由于节点7处于并行分支上,我们约定这种情况的驳回模式只支持“直来直往”模式, 因为若不是这样那么节点7可能永远不法继续流转,因为节点13是一个并行结束节点,需要等候节点7和节点15同时到达。

直来直往模式:支持

按流程图执行:不支持

1.5.5 并行区间内驳回到并行区间外

如上图所示为并行区间内驳回到并行区间外,节点3驳回到节点2.

直来直往模式:支持

按流程图执行:支持

时间: 2024-12-10 07:49:41

工作流引擎驳回设计的相关文章

关于开源驰骋工作流引擎ccbpm对bpmn2.0的支持

各位ccbpmer : Ccbpm将要支持bpmn2.0了. 我们会保留现在的ccbpm设计模式,也支持bpmn2.0的规范,让ccbpm与国际接轨.包括.net版本ccflow与java版本jflow.在新版本中,我们将要支持导出导入两种格式的流程模版文件.也就是说,只要你画的流程符合bpmn2.0的规范,也可以导入到ccflow或者jflow工作流引擎中,支持bpmn2.0的画图工具很多,例如:viso,rose. 什么是bpmn2.0? 业务流程模型注解(Business Process 

工作流引擎设计第一版

很久没写点东西了,现在有点时间来分享下工作流引擎设计的一点体会.希望能帮助各位园友. 前段时间接手一OA系统项目,经过一段时间的需求调研,总共十多个功能模块,但系统主要功能是应付一堆堆审批流程,各流程千差万别,而且流程变动也大,这无疑是需要设计一个工作流引擎才能解决.这个引擎主要做到流程可配置,可视化编辑,可视化的流程图展示,且需要保留审批处理的历史快照...... 经过一段时间的资料查阅(感谢园子的大虾们),并且经合自身的经历(曾经用过,但未曾开发过工作流引擎),终于想出了一套方案: 以下是相

微型工作流引擎设计

微型工作流引擎设计 一.前言 提到工作流很多人就会想到OA,的确OA就是典型的工作流的应用,但是工作流并不仅仅局限于OA,工作流应该算是基础框架软件,主要用于流程的重组和优化,它有广阔的应用领域.在java下有很多优秀的开源工作流可以选择比如activit5.jpbm4等,在.net下却几乎找不到令人满意的工作流引擎可用.当然不是说.net下没有开源的只是有些国产开源的但看了代码后就一点兴趣都没有了,且不说代码质量如何,还引入了一大堆的东西,想在项目中应用也是非常困难.鉴于此我还是决定自己开发一

我的微型工作流引擎设计

一.前言 提到工作流很多人就会想到OA,的确OA就是典型的工作流的应用,但是工作流并不仅仅局限于OA,工作流应该算是基础框架软件,主要用于流程的重组和优化,它有广阔的应用领域.在java下有很多优秀的开源工作流可以选择比如activit5.jpbm4等,在.net下却几乎找不到令人满意的工作流引擎可用.当然不是说.net下没有开源的只是有些国产开源的但看了代码后就一点兴趣都没有了,且不说代码质量如何,还引入了一大堆的东西,想在项目中应用也是非常困难.鉴于此我还是决定自己开发一款.NET微型工作流

驰骋工作流引擎设计系列02

流程实例的生成设计 第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第2节. 关于WorkID的设计 workid也叫流程实例id, 理解清楚workid的整个过程有助于理解如何获得数据,以及相关流程引擎表,业务数据表的产生变化的过程. 第3节. 概要说明 工作流程引擎的WorkID,也叫流程实例的ID,他是一个Int64类型的,自动增长的数据类型,经过严格的测算,一般应用不会枯竭. 一个workid可会贯穿整个流程的生命周期,从workid创建开

驰骋工作流引擎设计系列04 流程引擎表结构的设计

第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. 流程引擎表结构的设计 流程引擎表是流程引擎控制流程运转的数据存储表,是整个流程引擎的核心表.理解表结构,掌握状态字段,相关字段变化的规律,就掌握的整个流程引擎运转的规律了. 1.1.1: 流程引擎表的作用 流程引擎表,是用来存储流程运行中信息的表. 流程在运行过程中,需要把中间数据写入到该表中. 一个流程启动后,就创建一个workid,就在流程引擎注册表里注册一条数据,有一个字段WFStat

驰骋工作流引擎设计系列06 保存草稿设计

第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. ccflow保存与保存草稿设计 保存,就是用户点击保存所要执行的工作,在讲解这个概念之前,我们要了解什么是草稿规则. 1.1.1:ccflow 关于草稿规则 定义:流程发起工作做了一部分,就关闭了下次处理,对这件工作我们就称为草稿. 应用背景:草稿也是常用功能之一,它是针对于,开始节点的表单才有意义.它类似于我们的邮件草稿,当您发起一个工作后,录入了一些数据,有与其他的原因,需要暂停该工作,

驰骋工作流引擎设计系列10时效考核规则设计

第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. 时效考核规则设计 考核是流程运行的副产品,业务搬到了计算机上,整个运行轨迹就会被有效的记录下来.CCBPM的考核分为时效考核.质量考核.时效考核是对工作及时程度的一种考核,而质量考核是一个节点对上一个节点工作完成好坏的一个考核. 1.1.1: 时效考核的系统配置 系统配置分为工作日信息设置,节假日信息设置. 上下班&午休时间配置,该设置在全局变量里:JFlow的配置: CCFlow的配置:

asp.net开源流程引擎API开发调用接口大全-工作流引擎设计

关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流 一.程序调用开发接口二.   接口说明 所谓的驰骋工作流引擎的接口,在BP.WF.Dev2Interface.*上面的静态方法,前台页面通过这些静态方法通过页面于操作者提供交互数据功能交互.    Port_* 开头的方法都是组织结构相关的操作,比如:登录.登出.发送消息.    DB_*的都是提供数据列表的接口,比如:发起列表.待办列表.在途列表.完成列表等.