当前位置:首页 期刊杂志

基于泳道的工作流引擎回退机制研究与实现

时间:2024-09-03

卓 皓

(福建幼儿师范高等专科学校,福州 350007)

随着教育信息化的发展,越来越多的高校开始自行设计信息管理系统供日常教学和行政工作使用。福建幼儿师范高等专科学校(以下简称“闽幼专”)从2012年开始着手开发科研管理系统。为了实现科研审批流程处理的自动化,使用开源工作流引擎JBPM(Java Business Process Management)作为对科研流程审批和管理的核心载体,该工作流引擎强大的功能能够对全校的科研审批和管理工作起到强大的支撑作用。但在设计过程中,JBPM工作流引擎西方式的管理模式和设计理念与学校所规定的审批流程在一些细节功能上有较大矛盾,流程回退即其中的一个典型问题。当某个流程不符合要求时,往往需要退回给原始执行人进行重新编辑。这期间如果是多人联合执行的任务,则需要退回给多个流程执行者,经常会涉及到多级回退,而JBPM工作流引擎缺乏相应的回退机制。因此需要针对闽幼专的基本情况设计特殊的回退机制,并将该功能整合到JBPM工作流引擎中。

1 回退机制执行流程

“回退”是办公审批行为中比较常见的一个流程动作,在一定程度上能够体现出办公审批的效率和规范程度。成熟规范的审批流程,一般每个执行环节都十分严谨,“回退”情况出现得相对较少甚至根本不出现。西方发达国家的办公审批行为十分规范,在实际审批流程中,基本不会出现退回重做的情况,这也就是JBPM作为世界级著名工作流引擎而缺少“回退”处理机制的主要原因。

在我国,由于体制性原因,政府机关和事业单位在办公审批行为上受诸如上级文件规定、单位自身文件规定和其他法律法规的制约,因此流程十分复杂,经常对不符合要求或者有欠缺的流程动作用到回退机制。回退机制基本原理如图1所示。

图1 回退机制原理图

由图1可以看出,流程的执行有许多执行者参与,流程的创建者往往是初始执行者,然后依次是执行者1,执行者2,…,执行者N,向上一级执行者的回退行为称为“单级回退”,跨过若干个执行者的回退行为称为“多级回退”。成功而有效的回退机制必须达到3个标准:一是流程必须成功回退给初始执行者;第二是流程和行为相关的数据都必须回滚到目标节点的当时现场;第三是流程控制状态必须回滚到目标节点状态。

对于工作流引擎,回退算法实现起来比较复杂,大部分工作流引擎不支持回退。所以为了实现回退,除了依靠复杂的算法来实现以外,还可以借助任务流、角色流和工作流引擎日志来实现,可以在上下文环境中新增角色流和任务流的记录,或者通过对工作流日志信息的读取来间接实现。这种做法技术难度低,易于实现,但效率较低。

2 使用泳道原理设计并实现回退机制

在分析了若干回退机制实现方法后,笔者设计了一种使用泳道原理的回退机制。相对而言,泳道是一种比较科学合理且高效的实现方法。在JBPM工作流引擎中,泳道是用来分配一个流程中若干个任务的初始执行者。当第一个任务实例被分配到某个泳道之后,第一个任务实例的执行者就确定下来,泳道内的后续任务均由此人执行。

福建幼儿师范高等专科学校科研管理信息系统的审批回退流程为例,具体说明使用泳道概念设计和实现审批流程回退机制的原理(图2)。

图2 科研管理审批回退原理

新建泳道分配给审批任务的初次执行者,由该执行者发起流程;接着流程进入文件规范性审核节点,在该节点中文件和数据的规范性将被认真审核,如果不符合相关规定的要求,则任务被退回到流程发起者;如果规范性审核通过,则进入下面若干个任务节点,这些节点的任务是审批,参与者是具有审批权限的相关负责人;审批负责人若认为该任务需要重做,则将任务回退到流程发起者;如果不需要重做,则根据审批结果流程进入结束环节。

使用泳道概念进行任务分配的具体步骤如下:

(1)检测Task任务属性是否有swinlane这个对象实例,若有,则由任务实例taskInstance将特定的ActorID或者PooledActors分配给这个泳道。

(2)如果泳道实例不存在,则新建该实例swinlane,接着调用分配代理类assignmentHandler,通过代理机制获取ActorID或者PooledActors,并将其指定为Task对象的执行者。

第一任务执行者将在首个任务实例泳道创建后被流程所记录,该执行者将在同一个泳道后续任务中继续执行任务,利用泳道所特有的“记忆”机制,原始执行者将在任务后续执行时被分配任务。图2所述流程需要两个泳道,分别是“发起者”和“审批者”泳道,并将任务和泳道相互绑定。

3 设计代码

用泳道原理设计的回退机制的核心控制文件是XML文件(其余Java实现代码略),其中创建泳道的XML代码如下:

4 结语

在回退机制中,无论是多级回退或者是单级回退,只要将泳道分配给回退的任务,就可以使得任务正常回退到最初执行者处,状态现场可以同时返回。具体流程执行数据不能够回退,也不需要回退。

总之,通过使用泳道的基本原理对JBPM工作流引擎任务回退机制的研究和设计,弥补了该引擎对于回退机制支持的不足,使该工作流引擎既能够适用于不同的业务场景,又能够扩展并实现更具个性化的功能,满足我国高校各种OA审批系统对于审批流程特殊的需求。

[1]卓皓.基于工作流引擎的科研审批流程的设计与实现[J].中国教育技术装备,2011,10(33):111 -113.

[2]卓皓.多功能在线考试系统的设计与实现[D].成都:电子科技大学,2010.

[3]卓皓.低耦合智能分布式工作流引擎的设计[J].赤峰学院学报,2012,12:59 -61.

[4]高杰.深入浅出 JBPM[M].北京:人民邮电出版社,2009:21-23.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!