基于工作流管理系统的回退方法_第1页
基于工作流管理系统的回退方法_第2页
基于工作流管理系统的回退方法_第3页
基于工作流管理系统的回退方法_第4页
基于工作流管理系统的回退方法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于工作流管理系统的回退方法

1流程回退的实现工作流是计算机自动执行的一个完整或部分的过程。在这一过程中,文档、信息或任务按照规定的规则执行,员工和现有软件之间的协调工作实现了公司业务的总体目标。回退是工作流管理系统的重要功能。传统的回退方法一般是回退至上一步活动,或通过逐级回退,一步步回退至发生错误的活动上,这样很容易造成流程的混乱和回退的繁琐;现有的回退机制不能很好地解决跨and合并和跨and分支模式的回退,在处理此类模式的回退时往往容易造成流程的死锁和数据的不一致。因此,为了增强工作流管理系统的柔性和灵活性,实现工作流管理系统流程的多步回退、跨and合并、跨and分支回退机制,在工作流管理系统中,有必要对流程的回退方法进行详细的研究。文献[1]通过动态改变流程实例定义,将后续指定的回退目标活动作为流程的起始活动开始执行,并删除“当前活动”和“后续指定回退活动”之间的工作项,从而实现流程的回退。但该方法没有给出具体回退所遵循的规则和数据、事务的恢复方案。文献[2]提出采用补偿机制,向后恢复实现工作流产品的回退,但对于一些无法用补偿机制来实现的事务工作流则未予考虑。文献[3]提出一种基于静态策略集和动态策略集的方法实现工作流的回退。该方法能实现流程的正确回退,但是回退时只能回退至其直接前驱活动,不能一次多步回退。文献[4]通过设计回退规则和回退算法获取可回退的目标活动集,通过选取可回退的目标活动进行回退。该方法能实现流程的正确回退,也不会产生流程死锁和数据不一致的问题,但回退的过程中禁止跨and合并和跨and分支,对回退的行为进行了严格的限制。本文在以上回退方法的基础上进行了改进,修改了回退规则和回退算法,设计了一种回退应用模型。改进的模型能较好地支持流程的多步回退、跨and合并和跨and分支回退机制,最后在开源工作流引擎shark上进行了验证。2工作流模式分析根据WFMC的XPDL所允许的工作流拓扑控制结构可知,常用的工作流模式主要有5种:顺序(线性),并行分支(and分支),同步(and合并),排它选择(xor分支),简单合并(xor合并),下面分别对以上5种常用工作流模式回退进行介绍。(备注:灰色代表正在执行的活动,白色代表已完成的活动)。2.1排它选择方式顺序模式的回退最为简单,如图1中从活动2回退到活动1等,因为没有其他支路,所以可以直接回退,而且回退时不会造成流程死锁及数据不一致,回退时数据恢复也容易实现。排它选择方式是指流程在运行时,当前活动的完成可以触发多个后继活动中满足条件的一个活动的执行,如图1中活动2的完成可触发活动3或活动4中满足条件的一个活动执行。简单合并方式是指多个活动只要有一个正确完成就可触发后继活动的执行,如图1中活动5的完成触发活动7的执行。由于在运行时以上2种工作流模式都仅有一条支路在执行,因此这2类可参照顺序模式的回退,回退时按照流程从哪来回哪去的原则,这样既可省略回退路径选择的问题又可避免因回退时选择了一条未执行的路径从而目标现场无法恢复的问题。2.2根据其他油路的影响并行分支工作流模式时,由于流程在运行时触发了多条支路后继活动的执行,因此当其中一条支路回退时,需要考虑对其他支路的影响。如图2中活动4欲回退到活动2,结果导致流程的重新执行,但由于活动7并未回退,活动也未终止,这样就造成活动7前后数据的不一致。要解决跨and分支节点回退产生的数据不一致问题,可以考虑采用先终止活动7,再回退活动4的方法,让流程从活动2重新执行。2.3流程上看回退流程同步工作流模式是指工作流在运行时,需要各分支活动都完成才能触发后继活动的执行,如图3所示。同步工作流模式回退时,如活动7回退至活动4,被回退的活动4将永远等待另一条未被回退触发的活动6,这种回退将导致流程无法执行,最终会停留在and合并节点,产生流程死锁。对于此类模式有3种处理办法:(1)设置活动处理期限,当在规定的时间内存在未执行的活动时,则由流程调度器负责触发此类活动;(2)活动7同时回退到活动4和活动6;(3)直接跨越and合并区,回退到活动2或活动1。本文采用方法3。3循环属性和回归方向规则的定义3.1活动实例的定义为了更好地描述流程的形式化定义,本文在文献[5-6]提出的形式化描述流程的方法基础上进行了扩展,制定了以下5个定义来描述流程的相关概念。定义1(流程定义)流程P可由二元组<A,D>表示,其中,A表示流程中活动的集合;D表示活动之间依赖关系的集合。定义2(活动间依赖关系)依赖关系d(d∈D)可以表示为四元组<activityx,activityy,conditionc,typet>,其中,x、y∈A;条件c表示活动x、y之间的依赖关系;t表示活动之间依赖关系的类型。为了更好地表述各元素间的关系,先设定如下表示意义:∃x,y表示从活动x到y存在一条通路,y依赖于x;∃y,x表示从活动y到x存在一条通路,x依赖于y;null表示活动x,y无关。依据上述表示意义,则各元素存在如下表达式关系:定义3(活动定义)∀a∈A,其中每个活动a又是一个三元组<Split_Flag,Join_Flag,SC>。其中,Split_Flag/Join_Flag可取的值有null、and、xor。null表示活动是线性关系,and表示and分支和and合并关系的总称,xor表示xor分支和xor合并关系的总称。SC表示活动的触发条件。如果Join_Flag为空,SC则为该活动的前驱活动;如果Join_Flag不为空,SC则为该活动的多个前驱的交集。定义4(流程实例定义)流程实例PI可用二元组<AI,PS>来表示。AI是活动实例的集合,定义见定义5;PS表示流程实例的状态,有4种类型,如下所示:定义5(活动实例定义)活动实例的集合用AI表示,每个AI又是一个二元组<id,state>。id唯一标识了这个活动实例;state表示这个活动的状态,状态取值同定义4的PS。3.2基于预期的回退控制通过对现有基本工作流模式的分析,本文制定了以下回退规则集:规则1流程实例必须是正在运行的;当前回退活动必须是正在运行的,已完成或已终止或已挂起或未启动的活动不能执行回退操作;回退目标活动必须是已完成的。规则2流程中所有活动回退均采取从哪来回哪去的原则。规则3同步区里当活动的任一同级活动已被执行,则其他同级活动不允许回退。4控制流程回退为了实现工作流流程的多步回退以及支持跨and合并和跨and分支回退,本文在以上研究的基础上对现有回退算法进行了改进,改进后的算法首先将构造流程的活动集和依赖集(A,D),以及流程实例<AI,PS>,最后根据前面的结果利用回溯算法获取可回退的目标活动列表,获取可回退列表之后再调用回退执行算法,实现流程的回退。其中,流程的活动集A可以通过遍历该流程活动节点得到;活动依赖集D可以通过构造活动间的依赖关系得出,如d(x,y).c=d(y,z).c=“>”,则可推导出d(x,z).c=“>”;限于篇幅,本节重点介绍获取可回退目标活动列表的回溯算法以及回退执行算法。算法1用于获取可回收目标的跟踪算法5实现和验证可重复的应用程序模型5.1基于业务一致性的回退环境设计为了实现回退机制,本文在开源工作流引擎shark原模型的基础上增添了一个流程回退管理器,如图4所示。回退管理器主要包括模型处理器、事务处理器、数据恢复器、流程场景恢复器以及回退调度器。其中,模型处理器是通过分析工作流回退模型,获取可回退目标活动列表,以供用户选择回退目标活动。事务处理器与数据恢复器是工作流回退保证事务、数据一致性的关键部分,其中,事务处理器用来确保工作流中的事务和外部业务数据事务的统一,从而保证回退的总体事务性。数据恢复器与应用数据库相关联,从应用数据库中获取回退所需的数据和状态,从而确保回退执行时数据的完整性;其中对于无法在数据库级别进行数据恢复的活动,如审批过程中发送的确认邮件,由于邮件是工作流系统调用外部邮件服务执行的,因此工作流本身无法回退,此时只能通过重发一份邮件的方式进行替换。流程场景恢复器是用来确保工作流流程回退时业务场景的一致性,参与者在选择目标活动进行回退时,如果选择了一条未执行的路径,则回退后的目标场景无法恢复,因此,可以调用流程场景恢复器从应用数据库中获取流程执行的上下文环境。回退调度器负责调用以上各模块完成整个回退操作。5.2shark扩展经过分析,上述回退管理器需要实现的功能概括为以下3点:5.3流程回退校验为了验证改进后的工作流引擎回退执行效果,使用JAWE建模构造了一个流程图,如图5所示。其中,“组长审核”、“经理审核1”为AND分支类型的活动,“总审”为AND合并类型的活动,流程图中其他活动的类型均为xor合并/分支。将构造的流程图加载到改进后的shark引擎中,由引擎负责实例化流程,并执行活动。进行回退校验时,获取了如表1所示的当前活动的所有可回退目标活动的集合。从集合中选择任一个目标活动跨多步进行回退时,流程数据和状态也同时跟着回退,实现了流程的正确回退。如图5中从经理审核1节点回退到拟稿节点,正在运行的经理审核2节点将被关闭,回退开始点经理审核1和回退目标点拟稿都有状态记录,回退后重新执行时,经理审核1、经理审核2都被重新执行,实现了流程的正确回退。其他节点在校验时也都实现了正确回退,此处不再详细阐述。6流程回退应用模型本文对工作流管理系统回退机制进行了研究,实现了一个基于shark的回退应用模型,解决了流程的多步回退、跨and合并和跨and分支回退的问题。今后的工作将集中于完善回退算法,使其对一些特殊工作流模式提供更好的回退支持。流程回退处理(1)获取当前活动的所有可回退目标活动。(2)终止当前活动以及撤销回退目标活动和当前活动中间已执行的活动实例和操作。(3)回退至目标活动以及完成数据和流程场景的恢复。因此,为了实现上述功能,本文对shark引擎进行了扩展,其中,在shark内核类WfProcessWrappe里增加了:(1)StopCurrentActivity(Activityact,SharkTransactiont)和(2)RunTargetActivity(Activitytarget,SharkTransactiont)2个方法,分别实现功能(2)和功能(3),参数SharkTransaction是为了确保回退过程中工作流操作和业务操作处于一个事务中;同时新建了一个ProcessRollBack类用以对流程回退进行处理,该类中主要包含以下2个处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论