时间:2024-05-04
江日念,林 霞,许 锟
(中国石油勘探开发研究院 计算机应用技术研究所,北京 100083)
审批流程是工作流的一部分,是一类能够完全或者部分自动执行的业务过程,它根据一系列过程规则,使得文档、信息或任务能够在不同的执行者之间传递与执行[1-3]。它通常由审批流程定义和审批流程实例两大部分组成,在建模阶段,将业务过程定义在审批流程定义里,在启动阶段,将相应的流程定义拷贝到流程实例,在运行阶段,审批人在相应审批节点选择同意或者拒绝本次审批后,将选择一条流转路径,以便将审批业务对象流转到下一节点。一般的审批流程流转方式为按序流转到各审批节点,直到流程终结。而在实际操作过程中,审批流程的“异常”情况非常多,其原因是流程规则具有不确定性[4]。所以,此种方式未考虑到现实情况中审批业务对象的部分参数对审批路径选择的影响,同时未能考虑到有子流程和分支流程的情况。
为了让审批流程能满足各种业务需求,具备一定的柔性,一般企业会采用开源工作流或者根据自身情况量身定制一套流程引擎。常用的开源工作流是基于BPMN2.0[5-8]协议jBPM[9]和Activiti[10],这两者功能强大,但入门门槛较高,而且不能满足一些使用场景,比如流程撤回、跳过某个流程节点执行等。而自主研发的工作流更适应国内审批业务现状,出于实际业务考虑,在一种自主研发的柔性审批流程模型[11]基础上提出了一种路径选择策略,将节点和路径由常规的链式存储变为基于有向图结构的存储[12-14],通过条件路径、缺省路径、默认回退路径的定义为路径选择策略的实施奠定基础,流程实例基于路径选择策略选择一条合适的流转路径后,形成审批流程的流转记录,直至审批结束。在流程路径的研究方面,当前的一些研究[15-16]以基于流程关键路径的工作流调度为目标,也取得了较好的效果。
审批流程的定义是审批流程的核心部分,定义部分规定了流程运行所需要的相关信息,包括流程所属业务、流程参数、流程可用部门、流程节点、流程路径等信息。在流程启动阶段,根据可用部门和所属业务找到一个可用的流程定义,将流程定义中的节点信息、流程参数信息、路径信息、节点下岗位信息拷贝到流程实例。这样生成的流程实例和流程定义将解耦,单个审批业务对象的流程变更,不会影响其他流程实例。为了审批流程更具柔性,在审批过程定义阶段尽可能地预见各种柔性需求,为具体执行提供可选情况。当一些在创建时不能完全预见的情况出现时,需要及时地调整原有过程定义和运行中的实例,满足业务对象的审批需求。流程定义ER图如图1所示。
图1 审批流程定义ER图
由以上ER图可知,该审批流程定义的核心是基于有向图存储的。有向图工作流模型是一种应用广泛的流程定义模型,它是一种基于活动的IPO(输入—处理—输出)的模型。基于有向图存储流程定义为灵活的路径定义提供了基础,也符合目前主流工作流模型设计理念。
以下给出该审批模型几个概念定义:
定义1:审批模型。审批模型可用一个二元组表示wf=(N,P)。其中N={nb,n2,…,nn-1,ne}是流程节点的集合,P为节点之间的路径集合,P的形式化表示为P={pi|pi=
活动节点集合N包含三类:起始节点、活动节点、结束节点。在一个合法的流程定义中,必须包含唯一的一个起始节点nb、唯一的一个结束节点ne和至少一个活动节点,且只有活动节点才关联到相应岗位。路径集合P中
定义2:条件路径。在路径定义里流转条件不为空的路径。条件路径也是路径选择策略中的优先路径,它是为了将审批业务对象中的参数传给流转条件,以匹配满足条件的路径。无论审批结果是“同意”还是“拒绝”都适用条件路径。
比如,在项目立项审批业务中,假设金额大于300万元和部门编码为“test”的项目将选择一条条件路径,这条路径的匹配条件condition则为:@JE>300 and @ORGCODE='test',其中@JE和@ORGCODE为流程参数表定义的两个参数:@JE的参数类型为数值型,@ORGCODE的类型为文本型。前台界面将项目立项表单中所需参数组装成类型为Map
①将Map中的键和流程参数定义表中的参数进行匹配,若找不到与键匹配的流程参数定义则丢弃该键值,否则转到②。
②根据流程参数表中定义的参数类型,将路径中定义的条件condition中的参数进行替换,如果参数为数值型,则直接用Map中值替换;如果参数为文本型,则Map中值加上单引号替换。假设传递的Map为(<@JE,200>,<@PARA,'para'>,<@ORGCODE, test>),则匹配后替换的condition为:200>300 and 'test'='test',转到③。
③将替换后的条件作为SQL语句的一个条件,以Oracle为例,则判定'select 1 from dual where "+condtion+"'是否有返回值,如果无返回值或者SQL异常,则判定匹配该路径失败,否则匹配成功。
条件路径的匹配流程如图2所示。
图2 条件路径匹配流程
定义3:缺省路径。缺省路径是指在路径定义里指定的缺省路径,即路径定义中属性“是否为缺省路径”取值为“true”的路径。
缺省路径的优先级次于条件路径,在未设置条件路径或条件路径匹配失败时,缺省路径有效。缺省路径的存在可以避免因条件路径不存在或者条件路径匹配失败导致流程无法正常流转。缺省路径也可以是条件路径,即该路径定义中属性“流转条件”不为空。
定义4:默认回退路径。审批人选择“拒绝”时,由当前节点默认回退到第一个活动节点的路径。
默认回退路径未在路径定义中明确定义,是该审批模型处理回退的默认路径。在系统中处理流程回退时,一旦无法找到条件路径和缺省路径则执行默认回退路径。该路径的优先级次于条件路径和缺省路径。
以上三种路径的优先级:条件路径>缺省路径>默认回退路径。
上述审批流程模型中定义了条件路径、缺省路径和默认回退路径三类路径,在流程执行阶段,审批人在选择两类审批结果“同意”或者“拒绝”后,都将选择一条执行路径,将审批业务对象传递到下一审批节点。根据节点下审批人选择的审批结果,执行两类路径选择策略,即“同意”时流程通过的路径选择策略和“拒绝”时流程回退的路径选择策略。
①将传递的Map参数与当前节点为起始点且路径类别为“同意”的路径进行条件匹配,匹配策略如定义2中条件路径的匹配策略,如果匹配成功,转到④,否则转到②;
②寻找一条当前节点为起始点的缺省路径,如果寻找到该路径转入④,否则转到③;
③抛出“未找到一条合法审批流转路径”的异常;
④该路径作为当前审批流程的执行路径,并且路径的终止点为审批流程的下一执行节点。
应该注意到,在第一个活动节点,即填报人节点,以填报人节点为起始点的路径类别均为“同意”,作为第一个活动节点,因不会有流程回退情况出现,所以它只会执行“同意”时路径选择策略。在最后一个活动节点,当审批人“同意”流程通过时,有且只有一条这样缺省路径:以最后一个活动节点为起始点,流程的结束节点ne的路径。
①将传递的Map参数与当前节点为起始点且路径类别为“拒绝”的路径进行条件匹配,匹配策略如定义2中条件路径的匹配策略,如果匹配成功,转到④,否则转到②;
②寻找一条当前节点为起始点的缺省路径,如果寻找到该路径转入④,否则转到③;
③将默认回退路径作为执行路径,即填报人节点为审批流程的下一执行环节;
④该路径作为当前审批流程的执行路径,并且路径的终止点为审批流程的下一执行节点。
流程回退时的审批策略同流程通过的审批策略基本一致,主要区别在③,即在无法寻找到缺省路径时,“拒绝”流程可回退到填报人,而“同意”流程通过却因为找不到缺省路径抛出异常。所以为了规避此异常,在流程定义时必须校验条件路径的条件参数必须在流程参数表中定义,且任一活动节点至少要有一条指向其他节点的缺省路径。
下面以请假流程为例,说明路径选择策略的使用。某部门的请假流程审批过程为:请假人提出申请,填写请假单,提交到部门经理审批,如果部门经理审批不通过,则流程回退到请假人,如果审批通过且请假天数在3天之内,则流程直接结束,请假成功,如果请假天数大于3天,则部门经理将申请提交给老板审批,老板审批通过,则请假成功,否则流程回退到部门经理。请假流程图见图3,其中所有的流转路径的路径类别都在图中标识。
图3 请假流程
在图3中所示的7条路径中,有6条在路径定义表中定义,如表1所示。部门经理到请假人之间的回退路径未在路径定义表中定义,说明该路径是审批模型处理流程回退的默认路径。流转条件中参数@day是在流程参数表中定义的数值型参数。
假设A申请请假4天,申请将提交到部门经理审批,部门经理B审批通过后,根据路径选择策略,将会匹配到部门经理审批到老板审批这条条件路径,流程将会提交给老板审批这个节点,老板C审批通过,请假成功,否则回退到部门经理B重新审批。如果A请假2天,则流程不会经过老板审批的节点。
表1 请假流程的路径定义
为了让审批流程能更好地满足业务需求,适应国内各种流程需要,提出一种自主研发的审批流程模型设计,并探讨了流程路径选择策略。流程模型基于有向图结构,并将路径分为三类:条件路径、缺省路径、默认回退路径。通过对三类路径的定义、优先级划分和匹配策略的制定,为审批流程运行时的路径选择策略的实施奠定基础。在路径选择时,根据审批结果来执行不同的策略,从而保证审批流程正确流转。最后通过一个请假流程的实例描述,说明了该路径选择策略能够应用于大部分的审批业务,因为通过简单路径配置,它能支持条件分支流程、子流程等复杂流程。目前,采用该路径选择策略的审批流程模型已经在实际的系统中得到应用。实践结果证明,该策略具有灵活、简便、兼容性好的特点。下一步将继续完善该模型的路径选择策略设计,使之能满足“会签”、“会商”的复杂审批需求。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!