【PHP开源代码栏目提醒】:网学会员鉴于大家对PHP开源代码十分关注,论文会员在此为大家搜集整理了“三种开源工作流系统中的基本控制流模式的比较研究 - 会议论文”一文,供大家参考学习
三种
开源工作流系统中的基本控制流模式的比较研究· 王虎薛峰 合肥工业大学计算机与信息学院,安徽合肥23000l 摘要:工作流技术尚处于发展的初级阶段,工作流模式是软件
设计和
软件开发领域研究的热点之 一。
本文结合实例阐述了工作流模式的基本控制流模式,对比研究了目前三大主流
开源工作流系统 Shark、oSWbrkFlow和jBPM的的基本原理,分析了他们的优缺点,最后使用一个实际的案例说明了 三种工作流系统的实现流程。
关键词:工作流过程模型控制流模式Shark OSwbrkFlow jBPM 1引 言 工作流是在
计算机应用环境下的可自动执行的业务过程,能实现在参与者之间按预定规则传递数据或任务。
工作流管理系统(w0ⅥS)是一个完整定义、管理和执行工作流的人机系统。
工作流技术和管理系统的基础是工作流过程模型,是对实际业务过程的抽象定义和形式化描述。
工作流技术起源于20世纪70年代,,发展至今已有大量的工作流
管理系统相继面市。
不同系统都使用了各自的过程模型和过程定义语言,人们在使用过程中对这些
系统和模型进行比较和评估。
为此,工作流过程模型中反复出现的基本构造形式——工作流模式,就成为工作流理论领域研究的热点。
本文以工作流核心组成部分的控制流模式为切入点,结合实际的业务过程,阐述基本的控制流模式,并进一步研究和比较三个主流的
开源工作流系统的过程模型及基本控制流的具体实现方案。
2工作流模式和控制流模式 工作流模式是工作流建模的基本构造单元,从控制流、数据、资源等视角系统地描述过程定义语言需要满足的业务需求,与特定的工作流语言无关。
工作流模式的发展开始于对WfMS的自下而上的比较分析。
荷兰学者Aalst等在2000年开始分析15种不同的wfMs,比较它们的建模语言对控制流的表达能力和适用性,并归纳出20种模式。
后来的研究
工作又延伸到工作流的数据和资源方面。
到2005年,工作流模式又加入了43种资源模式和40种数据模式,控制流模式也被重新修订扩展为43种。
’ 工作流模式是评估过程建模语言的霞要工具,控制流作为工作流模式的重要组成部分,关注的是流程中活动的执行顺序和行为,又可以分组为:基本控制流模式、高级分支同步模式、迭代模式、终止模式、多实例模式、基于状态的模式、取消模式和触发模式等。
基本控制流模式是控制流的最基础形式,几乎能被全部wfMs和它们的建模语言支持。
’作者简介:手虎(1970.),男在读工程硕士,研究方向:工作流技术;薛峰(1978.),男,博士副教授,研究领域:虚拟现实、计算机
图形、图像处理、J2EE、J2ME应用研究. 3基本控制流模式 我们以报名考试流程为例说明基本控制流模式。
在考试报名结束后,需要对考牛进行考场编排和试卷统计,然后同步进行准考证印制和试卷安排工作。
如果是全国统考,需要申报试卷数量,自丰考试则要自行印制试卷。
准考证发放和试卷交接完成后进行考试。
此流程包含了全部的基本控制流模式:顺序、并行分支、同步、单选和简单合并。
图l报名考试流程图 顺序(sequence)模式中的活动按照预先设定的次序依次执行,如报名和考场编排统计。
并行分支(ParaIlelSplit)模式是指流程在某活动之后产生多个分支,并H各分支的活动町以并行或彳i受顺序限制执行。
考场编排统计之后,准考证的印制发放和试卷安排工作是并行的。
I—J步(synchronization)模式是多个并行的活动或子流程在流程进行中合并成一个流程的模式。
所谓同步,是指所有的分支都执行完成之际,才发牛流程合并,激活后续的活动。
考试工作在准考证印制发放和试卷安排完成之后进行。
单选(Exclusive Choice)模式中,一个活动完成后,后续的活动只能是多个可能的分支中的一个,类似于ilyswith语句。
考试需要的试卷根据考试是否为全国统考而确定进行申报或自行印制一种方式。
简单合并模式是指两个或多个单选的分支在流程中合并为一个分支的情况。
不论是申报试卷还是自行印制,后续的上作都足进行试卷交接。
4基本控制流模式的实现案例 工作流技术本身尚处于发展的初级阶段,国内外对它的研究方兴未艾,而
开源的wfMs是最好的选择。
目前最受关注的
开源工作流系统当属Enhydra Shark、oSWorknow和jBPM。
下面我们使用这三个主流工作流系统对上述的考试组织
案例进行比较、分析研究。
4.1 Enhydm Shark的实现方案 Enhydra Shark完全基于wfMC和oMG标准,是目前体系结构最为庞大和完善的工作流系统,其过程定义语言使用xPDL。
xPDL在其主要的结构单元包中定义过程和参与者等公共数据实体。
过程由活动(activit),)和活动间的转移(n.锄sition)组成,一个活动完成后,流程会转移到下一个活动,可以指定条件约束转移。
兮哩〕 —“i、: ~一, 图2 Shark的报名考试流程图 Shark中顺序模式表现为活动的转移,活动用不同的ID标识: <Activny Id=”A”N锄e=”报名”>…</Activity> <Activ时Id=”B”Name=”考场编排统计”>…<似ctivity>… <Transition From=”A”…T()=”B”胁 并行分支模式由转移规则Split.AND实现,相关的转移引用的目标活动都会并行执行: <Activit’y Id=”BlI Name=”考场编排统计”>… <Split Type=”AND”>…<TransitionRef Id=”T记”胗<I-ransitionRef Id=”Tr3”胁… </ActiVi妙> 同步模式转移规则是Join.AND,定义在合并后的活动上,指向此活动的转移都被合并: <ActiVb Id=”H”Name=”考试”>…qoin Type=”AND”/>…</Activity> 单选模式与并行分支类似,但转移规则是Split.xoR。
选择的转移由转移条件决定。
在本例中,使用考试类型Exam为转移条件指定参数: <Transition From=”DII To=”E1.><Condition Type=”CONDITIoN”>Exam=1≮/Condition></Transition> <Tramsition From=”D”1b=”F”><Condition Type=”OTHERWISE”胗<,mnsition> 简单聚合转移规则使用Join.xoR,其它的定义与同步模式非常相似,不再赘述。
4.2 oS、№rknow的实现 oSWbrkflow是最轻量型的工作流代表,有显著的灵活性。
工作流模型基于有限状态机理论,由自定义的xML描述。
它的过程定义为多个步骤(step),步骤有状态值,当前步骤和状态值代表当前的工作流状态。
步骤包含动作,并可设置执行条件或函数。
动作执行产生结果。
条件满足时,产生条件结果:条件不满足或无条件,则产生无条件结果。
结果定义过程的下个步骤状态,从而引发转移。
转移目标是下个步骤和状态;或者分裂(split)成多个步骤状态组合;或者是将自身和其他转移合并(join)成一个新的步骤和状态。
oSWorknow顺序模式方案是使用无条件结果从一个步骤状态转移到另一个步骤状态。
下面的
代码中,无条件结果的转移目标是step 3,状态变化为Queued,原步骤状态变化为old.status。
<st印id=”1II name=”报名’’>… <action id=”4”name=”报名”vieW=”报名”> <results><unconditional-I.esult id=”5”old—st;ltus=”Finished”status=”Queued”step=”3”/><,resuIts> 吲action>…</step> <st印id=”3”name=”考场编排统计”>…t拙ep> 并行分支模式通过split实现。
Split分支可定义多个无条件结果,这些结果将同时进行。
<step id=”10”name=”打印发放准考证”>…</step> <Step id=”ll”name=”全国统考?”>…砒tep>…<split id=”1”> <unconditional-result id=”1 2”old—status=”Finished”st{ltus=”Queued”Step=”l 0’’胗 <unconditional—result id=”l 3”old-status=”Finished”status=”Queued”step=”l 1”/>√spli伊 同步模式的实现使用合并(join)。
合并通过条件决定是否进行到下个步骤。
例子中,步骤“打印发放准考证”和“试卷交接”都定义了无条件结果: <unconditional—result…old-status=”Finished”join=”l 4”/> 当这两个步骤都具有Finished状态,才能同步,并返回无条件结果。
<join id=”14”>… <condition name=”bsh.condition”type=”beanshell”>… <!【CDAiIA【”Finished”.equals(jn.getStep(1 0).getStatus())&&”Finished”.equals(jn.getStep(2 1).getStatus())】】> 妣ondition>... <unconditional-result id=”I 8”oId。
status=”Finished”status=”Queued”step=”l 5”胁…<巧oin> 单选模式
方案通过为步骤指定条件结果实现。
当有条件为真时,流程就转移到此条件结果;没有条件满足,则转移到无条件结果。
在“全国统考?”步骤中加入结果为“申报试卷”(step=”19”)的条件,无条件结果为“印制
试卷”(step=”20”): <result id=”29”…s诅tus=’’Queued”step=”l 9”×condition n锄e=”bsh.condition”type=”beanshell”> <a喀name=”script”><!【CDATA【propertySet.getLon敷”Exam”)一1】】>砒唱>砒ondition>…√rcsul伊 <unconditional.result…step=”20”display.name=”否”胁 简单聚合将各聚合前步骤的无条件结果设定为聚合后目标步骤和状态即可。
本例为“申报试卷”和“印制试卷”指定如下的无条件结果:<unconditional.result…step=”211.胁,Step 2l表示“试卷交接”。
4.3 jBPM的实现 iBPM是基于J2EE的轻量级工作流管理系统,以状态机概念和原理为基础,使用和扩展了UML活动图的建模能力,同时还借鉴PetriNet算法进行流程的调度执行。
过程定义语言称为iPDL,它基于节点、转换、任务和动作组成建模模型。
过程由节点(node)和节点间的转换(traTlsitions)组成。
节点使用节点类型来定义节点运行时行为。
stan state和End state分别标识过程的起止边界;State节点用于表示等待状态;协k节点代表可被执行的一个或多个任务;Fork、Join和Decision节点分别用来处理并行、|_J步和选择的情况。
iBPM中,顺序模式的实现方式是在一个任务节点中定义指向目标任务节点的流出转换。
<t嬲k-node n锄e=”报名”> … …,、 <t聊1sition to=”考场编排统计”今</t舔k.node> o“8≮蝥扣’; <task.node name=”考场编排统计”>…</task.no(1e> 并行分支由包含几个流出转换的Fork节点实现,也可通过指定并 }氅唧8笔字”;行任务实现。
<fork name=”并行”><transition to=”打印发放准考证”></帆nsition> :氅蔷誊篓筹; … <n.觚sition to=”全国统考?’’></transition></f.ork> iBPM同步模式通过包含几个逻辑上的流入转换的Join节点来完 i…哆“5叩:一j成,定义中表现的是同步之前的节点的流出转换。
。
”。
。
:船Js幻。
嗣 <‰k-node n帅e=”打印发放准考证”> ,, :.:I,。
.全国笼暂~,j <”ansition to。
”同步”>吲transition></task—node> ‘蠢二;妇驰№期))、诼。
;舀6;i。
幽菇,。
l。
乃船胁茹未 <task.node name=”试卷交接”> .._。
打印筮敲硅考证 .兰~申报试卷、一j 0自主印翻试巷 <traJlsition t0=。
’I司步”></transition></taSk-node> …,。
, 、 勺oin name=”同步ff>…<(ioin> .磊“鬃娑”; 单选模式通过指定决策节点的流出转换条件实现。
第一个所含表 r“孓。
。
矗洒~{达式为真的转换将获得控制。
表达式中的Ex锄是记录考试类型的流 。
一二1:-…一一程变量。
_蠹t蕊5IfⅣ。
赫;’l <decision n锄e=”全国统考?”> ’~=二…‘勰“。
“ode5~』 <transition to=”申报试卷”> 4一《《£舸sfafe,,; <℃ondition expression=’E)删m==1’/>砒ransition> :……--特震…一 <transition to=”印制试卷”> 图3 jBPM的报名考试流程图 <conditiOn eXpression=’Exam!=l恰础ransition> <棚ecision> 简单聚合模式通过一个任务节点汇合那么需要合并的流程转换,在定义上与同步类似,通过定义简单聚合之前的节点的流出转换实现,只不过流出的目标是一个任务节点。
<taSk.node n锄e=”申报试卷”> <transition to=”试卷交接”>吼ransition≥刮caSk.node> <taSk.node name=”印制试卷”> <transition to=”试卷交接”></transition></taSk.node> <t雏k.node nam,e=”试卷交接”>…</taSk.node>4.4三种过程定义语言的特色 上述的三种工作流系统,都有各自的过程定义语言。
尽箭它们都能很好的实现基本控制流模式的定义,差别和特色却是明显存在的。
shark的xPDL是工作流定义语言的规范,XPDL中的活动是基于UML中活动图的概念,所以XPDL的定义更容易被理解;OSWbrkflow的定义更多的引入了条件和无条件结果的概念,基本体现了OSWorknow的灵活性;jBPM的jPDL借鉴和扩展了UML活动图概念,因此可以看到XPDL的影子,但具有更大的灵活性和町扩展性。
5总结与展望 本文在介绍了工作流和控制流模式的摹本概念后,结合考试安排案例详细研究和比较了三种丰流工作流系统的基本原理和实现方案。
在所有的工作流系统中,基本控制流模式体现了业务过程的基本形式,其他复杂的控制流模式多数是基本控制流模式的变化和组合的结果。
下一步的工作是在更复杂的控制流模式以及数据和资源等方面展开更深入的研究工作,为更多的业务过程定义提供可行的解决方案。
参考文献〔1】范玉顺.工作流管理技术基础〔M】.北京:清华大学出版社,2001.【2】 Pattems【oL】.http://wwW.worknowpanems.com/panems/index.
php.2009-03·05.【3】open Source JaVa XPDL W6rknow【oL】.http:,,wwW.enhydra.o叫workfloW/sharl(/.2009-03一05.【4】 oSWbrkflow oVerView【oL】.http:‖www.opensymphony.com/osworknow/.2009·03一05.〔5】 JBoss jBPM【oL】.http:,,vn删iboss.com/products/jbpm/.2009—03—05. Research of Basic Control—flow P甜ems Based on Three Open Source W,orknow Systems Wang Hu Xue Feng SchooJ ofComputer&Info珊ation,HeFei UniVersity ofTechnology,Hei fei An Hui,23000l Abstract:W6rkflow panems are 0ne of the research hotspots in so胁are design and deVelopment,which is in the initial deVeIopment stage.This paper in仃oduces the basic control·flow pattems,锄d compares tlle principles of the three main open source workflow Systems:Sharlo oSWorkFIow锄d jBPM.It鲫alyzes ttle merits and d‰vbacks of them and gives a real caSe demons臼.ating the realization of these workflow system拿. Keywords:workflow;p玎ocess model;con仃DI-fIow panems;shark;OSWorI(Flow;jBPM.