日期:2023-01-24 阅读量:0次 所属栏目:软件技术
0 引言
工作流技术是实现企业业务过程自动化的核心技术之一,相应的工作流管理系统技术也得到普及。工作流的流程引擎是工作流管理系统的心脏,是业务处理流程执行服务中的部分或全部运行控制环境,为工作流实例提供运行环境。以业务流程为中心的工作流管理系统可以描述为建立时和运行时,建立时是指流程定义过程和实例化过程模型阶段;运行时是指过程模型的执行阶段,是工作流引擎对流程定义进行解释执行[1]。流程引擎研究中的一个重要问题就是如何控制流程引擎,执行工作流系统中的各种任务状态转移,保证各项任务在制定的时间内正确地完成。本文基于有限状态机的方法很好地实现了流程引擎执行这一问题。
1 工作流过程建模
过程是一系列活动的集合,活动之间存在着各种顺序关系,构成了过程的控制流,过程还包括流程执行间相关的数据。
定义1:工作流模型(又称为过程定义)形式化表示为:W=(Process,N,CF,D),Process为流程属性;N是活动集合,CF为控制流,CF属于N×N,指明了活动之间的连接关系,D是工作流相关数据变量集合。
定义2:流程Process的属性形式化表示为:p=(Role,Table,Deadline,Events,Info,Dvars),Role为参与人角色,Table为流程表单,Deadline为流程执行期限,Events为流程中所有事件的集合,Info为流程中发送的通知信息,Dvars 属于D,为流程中所有数据变量。
定义3:流程的执行过程形式化表示为:WI=(Taskassin,Transition,Route,Eventexe),Taskassin为任务分配,Transition为活动迁移,Route为路由决策,Eventexe为事件执行。
2 流程实例状态模型
在工作流执行服务中,流程实例能够响应外部事件并改变自身的状态,比如执行一项任务、激活一个活动,又如调度流程实例的下一个活动或任务。因此,工作流执行服务可以看作是一个状态变化机,用来控制流程实例和活动实例的状态转换[2]。活动实例是活动在流程里的实例化;任务(工作项)是流程最小工作单元,由活动实例产生并分配给参与者执行。一个活动实例可能产生多个任务实例 [1],如图1所示。
2.1 有限状态机FSM理论
有限状态机,又叫有限状态自动机,是表示有限状态(State)及在这些状态间的转移(Transition)和动作(Action)等行为的数学模型,通常用有向图来表示有限状态机,其节点代表状态。若在当前状态接收到某个输入条件后转向目标状态,就在图中画一条从当前状态到目标状态的带箭头线,并在弧线上标记[3]。
定义4:有限状态机形式化表示为六元组M=(S, E, T, F,S0,H),S表示内部有限状态集,E是有穷事件输入集,T表示为非空转移集,映射函数F=S*E→T,S0属于S,H是最终状态集合。其中T中每个元素又可以表示为一个三元组(Sourcestate,tr,Tragetstate),其中tr=(e,c)。Sourcestate是源活动状态,Tragetstate为目标活动状态;事件函数event(t)=e表示迁移调用的事件,路由函数condition(t)=c表示状态转移的条件表达式。有限状态机逻辑图[1]如图2所示。
图2 有限状态机逻辑
由图2可以看出,有限状态机的下一个状态和输出是输入和当前状态的函数,也就是说,输入和当前状态触发变迁为下一个状态,而下一个状态的实现会产生输出结果。状态机说明了活动对象在生存期间内可检测到相应的事件。在活动实例状态转移中,可能由于输入条件和当前状态的不同,输出状态也不同,相应产生不同的多个状态转移。
2.2 基于有限状态机的流程实例迁移算法
流程实例推进机制是通过动作执行来进行的,每一种状态(State)描述成为一个步骤(Step)和步骤的状态(Status)。对于工作流引擎来说,任何一种状态改变都是由某个动作引起的变化结果。一个State到另一个State的转移,依赖Action的发生。在一个工作流实例的生命周期内通常有一个或者多个活动的状态(State)[4]。
2.2.1 简单状态迁移算法
流程实例处于状态SK:①事件ei到达;②从当前状态SK的事件触发集S中查找事件ei,如果ei存在于SK中,则执行步骤⑥,否则执行步骤⑤;③退出;④根据映射函数F(SK,Ei),获取事件ei处理tx的入口;⑤执行tx中的action;⑥依次执行下一动作;⑦根据状态转移路由函数 condition(t)=ci,完成状态转移;⑧该次状态转移结束,系统回到步骤①(但状态已经迁移)。
2.2.2 流程实例动作(action) xml描述
< xml version=”1.0” encoding=”UTF-8” >
图3 流程实例的状态转移
3.2 流程执行过程
当流程执行时便处于准备状态,任务分配(参与人、消息、表单、期限)进入初始化状态(SK)。若流程ei事件到达,根据映射函数F(SK,Ei),获取ei事件处理tx的入口。执行tx中execute动作,根据状态转移条件函数condition(t)=ci(路由),过程实例完成一个节点状态转移,迁移到
目标待签状态to sign in,依次循环执行下一状态。若迁移过程中发生了异常abort,则转移为异常状态aborted;当处于待签状态时,执行tx中sign in动作,则迁移为目标状态、待办状态to do;若动作complete触发,则流程[专业提供教育论文写作的服务,欢迎光临] 实例进入完成状态;当流程状态处于待签状态to sign in 时,suspend触发则迁移为挂起状态suspended;当活动实例满足继续执行的条件时,重启活动实例,把处于suspended状态的活动恢复到待签;若terminate动作触发,则迁移为终止状态terminated。同样待办也可能处于挂起、终止状态。
4 结语
本文通过考察工作流运行实例,建立了以业务流程为核心的工作流模型,并对流程进行了实例化分析,把基于有限状态机的理论模型运用于流程引擎,进一步体现了工作流运行的本质属性——状态迁移,极大地提高了流程引擎执行效率。
参考文献:
\[1\] 辛鹏,荣浩.流程的永恒之道[M]. 北京:人民邮电出版社,2014.
[2] 侯志松,余周,冯启高. 工作流管理系统开发实录[M]. 北京:中国铁道出版社,2010.
[3] 王欣.基于状态机的移动终端应用软件设计[D].上海:上海交通大学,2007.
Going to the first state!
3 FSM流程运行状态迁移实现
3.1 流程执行时的动态行为状态
我们定义了流程实例在运行时所经历的状态以及这些状态之间的转换关系。如果流程的控制流到达一个活动,则通过外部动作加载这个活动。一个迁移在过程模型的执行期间可能处于准备prepare、初始化initial、待签to sign in、待办to do、终止terminated、异常aborted、挂起suspended、结束completed状态。图3所示为流程实例状态转移之间的关系。任务或活动实例满足所有执行条件后,进入完成状态,并传播该状态给流程实例,流程实例根据路由选择下一个活动,启动实例,进入下一个任务活动实例的执行;如果流程实例已经没有任务或活动执行,流程实例执行结束节点,进入完成状态,流程实例执行结束[2]。
本文链接:http://www.qk112.com/lwfw/jsjlw/ruanjianjishu/230002.html