1、基于 ABC 法的工作流仿真模型的设计与实现第 32 卷正.,2第 5 期5计算机工程ComputerEngineering2006 年 3 月March2OO6?软件技术与数据库?tllllq,10oo-_28(2006)0 导_一 o074 一 l3 文献标识码 IA 中圈分类号 tTP311基于 ABC 法的工作流仿真模型的设计与实现曩玉春,马亮,曩明(清华大学软件学院,北京 100084)捕娶:仿真是工作流技术的重要组成部分之,其目的是检查过程模型中可能存在的错误,优化过程模型.该文对以活动网络图为基础建立的工作流模型,提出了一种基干 ABC 法的工作流仿真模型的设计与实现.关 t 谓
2、:ABC 法;仿真模型; 网络图DesignandImplementationofWorkflowSimulationModelBasedonABCApproachGUYuchun,MALiang,GUMing(CollegeofSoftware,TsinghuaUniversity,Beijing100084)AbstractSimulationisal1importantpartofworkflowtechnologyforthepurposeofcheckingpossiblemistakesintheprocessmodelandoptimizingtheprocessmode1.Th
3、isarticleintroducesthedesignandimplementationofworkflowsimulationmodelbasedonABCapproachforworkflowmodelbasedactivitynetworkgraph.Keywords!ABCapproach;Simulationmodel;Networkgraph仿真分析是工作流技术的重要组成部分之一,其目的是根据工作流管理系统的工作流模型建立合理的仿真模型,通过仿真模型来实现对过程模型的仿真运行,产生仿真报告来分析过程模型的性能,从而达到检查过程模型中的可能存在的错误,优化过程模型的目的.在这个过程
4、中,工作流仿真模型的建立是其中的基础.仿真模型的建立通常需要完成 3部分的工作:(1) 根据工作流模型选择仿真方法 ;(2)根据仿真方法构造仿真模型;(3) 仿真模型的计算机实现 .本文介绍一种基干 ABC 法的工作流仿真模型的设计和实现 .lABC 法依据离散系统仿真的原理,有 4 种方法可对工作流模型进行仿真建模,分别是事件调度法,活动扫描法,ABC 法以及进程交互法.事件调度法侧重干对确定性事件仿真,效率较高;活动扫描法可对条件事件仿真,但是它将确定性事件和不确定性事件同等对待,效率较低;进程交互法基于进程建模,兼有前两种方法的优点,但是实现起来较为复杂.ABC法是在借鉴了事件调度法的某
5、些思想,对活动扫描法进行改进的基础上提出的一种离散系统的仿真建模疗法,它既可对确定性事件,也可对条件事件求值,兼有事件调度法和活动扫描法的优点,实现上也比进程交互法简单,实践中被大量采用.ABC 法将事件类型分为两类并分别为两类事件建表,这两类事件分别是:B 类事件表示确定性事件,C 类事件表示条件事件.ABC 法将仿真控制过程分为 A,B,c3 个阶段 .(1)A 阶段:时间扫描 .该阶段对 B 类事件进行扫描,找出下一最早 B 类事件发生的时间并将仿真钟推进到该时刻.(2)B 阶段 :执行 B 类事件.该阶段扫描 B 类事件表.对于事件发生时间在仿真钟之前的 B 类事件,执行其相应的活动,
6、并将该事件从事件表中删除.(3)C 阶段 :查询 C 类事件表.该阶段查询 C 类事件表,一74-一检查 C 类事件的条件是否满足,若满足则执行相应的活动.ABC 法不断地重复 ABC3 个阶段直到仿真结束.2 工作漉模型在我们开发的一个企业应用支撑平台(EASP)中包含一个轻量级的工作流管理系统,本节将简单介绍该系统的工作流模型.EASP 工作流模型以活动网络图为基础,核心建模元素包括“活动节点 “,“逻辑节点“和“连接弧“3 种类型.活动点是定义企业业务过程的基本工作单元,它表示需要用户一次完成的工作任务.活动节点分为开始节点,结束节点,空活动节点和人工活动节点 4 种.(1)开始节点和结
7、束节点.标志一个过程模型的开始或结束每个过程模型只允许有一个开始节点和一个结束节点.(2)空活动节点.该节点是为了构造过程模型的方便而引入,没有任何实际内容而仅表示一种次序约束关系.(3)人工活动节点.该节点代表的活动需要用户的参与才能完成.每一个人工活动节点都有相应的属性描述该节点的名称,完成时间,用户资源等.运行时,活动节点产生活动实例,不同的活动节点产生的活动实例在其生命周期的过程中会经历不同的状态.其中开始节点有两种状态:准备(Ready)和完成(Finished);结束节点和空牺动节点产生的活动实例有一种状态:完成;人工活动节点产生的活动实例有 3 种状态:等待(Waiting),执
8、行(Executing)和完成 (Finished).逻辑节点表示活动之间的逻辑关系,包括“与“ 节点和“或 “节点两种,可以用于表达串行 ,与分支,与汇合,或分支,或汇合,循环 6 种基本路由模式.基金疆目:国家“863“计划基金资助项目(2003AA414030)作者筲介:顾春(1979). 男,硕士生 ,研究方向:软件工程;马亮,博士后;顾明.副教授收藕日期:20050226E-mail:gyc02mails.tsinghua.edu.ca连接弧描述活动之间的控制流,通过位于节点之间的有向线段表示,它从前驱节点指向后继节点.连接弧包括有条件连接弧和无条件连接弧两种.图 l 显示了使用本文
9、的工作流模型建立的过程模型的例子.当一个销售机会需要录入的时候,一个过程实例就被创建用来处理该请求.在这幅图中,开始和结尾处的实心圆是标志节点,分别表示过程模型的开始和结束,过程模型中间的实心圆表示“或“ 逻辑节点 ,矩形框表示人工活动节点 .圈 1 过程豢基的胡子3 工作漉仿真模型本文提出一种基于 ABC 法的工作流仿真模型 .工作流仿真模型中主要存在两类实体:用户和活动实例.用户有两种状态:空闲(Idle)和执行(Executing);活动实例(由人工活动节点产生)有 3 种状态:等待(Waiting),执行(Executing)和完成(Finished).运行时,活动实例产生之后就处于“
10、Waiting“状态,当执行该活动实例的用户处于“Idle“状态时,活动实例被分配用户,活动实例和用户的状态转为“Executing“,当活动实例到达指定的完成时间后,用户恢复为“Idle“状态,活动实例转为“Finished“ 状态 .在活动实例的生命周期中,活动实例将要经历等待用户,执行以及完成这几个状态;包括的事件有:活动实例产生,活动实例完成和分配用户给活动实例.在这些事件中,刚刚产生的活动实例只有在分配了用户之后才能被执行,而用户是一种稀缺资源,同一时间可能存在多个活动实例等待同一用户的执行,给活动实例分配用户具有不确定性,属于 c 类事件活动实例被分配用户后处于执行状态,其完成时间
11、确定下来,活动实例的完成属于 B 类事件;活动实例完成后紧接着可以产生新的活动实例,新括动实例的产生也属于 B 类事件.前一活动实例的完成和后一活动实例的产生是一个连续的过程.综上分析,由于工作流仿真中同时存在 B 类事件和 C 类事件 ,可以采用 ABC 法仿真工作流模型.在工作流模型的基础上,运用 ABC 法可以建立工作流仿真模型.图 2给出了基于 ABC 法的工作流仿真模型的执行机制.产生过程实例一一一一一一一一一一时间扫描,.一一一执行 B 粪事件,-一测试 c 类事件A 阶段B 阶段C 阶段圈 2 工作藏仿真模基曲执行机从图 2 中可以看出,仿真开始之后,首先产生过程实例,然后依次执
12、行 A,B,c3 个阶段,直到仿真结束.本节在详细介绍仿真模型的执行机制之前,首先需要明确在本文的工作流仿真中 B 类事件表和 c 类事件表中存储的是能够触发 B类或 C 类事件的活动实例.本文在第 2 节中提到 B 类事件表将存储确定性事件,即处于“EXECUTING“ 状态和处于“READY“状态的活动实例.后面将要看到“READY“状态的活动实例是在产生过程实例的过程中,由开始节点产生的活动实例.由于人工活动节点产生的活动实例在刚刚创建时就处于等待分配用户的状态,其分配用户的时间不确定,因此将其存入 c 类事件表中 .3.l 产生过程实例通常过程实例的产生有 3 种方法:(1)一个过程实
13、例完成之后再产生另一个过程实例;(2)根据一个预定的表达式产生过程实例;(3) 根据时间表产生过程实例 ,比如每天 8:00 钟产生 2 个.时间表可以预先建立也可以根据过程的执行日志产生.本文采用第(2)种方法,即系统在运行开始根据用户指定的时间间隔以及该时间间隔内的过程实例数产生全部的过程实例,同时将每个过程实例中由开始节点产生的活动实例(状态为“READY“)存入 B 类事件表中.例如用户指定的时间间隔为 l 天,每天的过程实例数为 5 个,总共运行时间为 150天,则系统将每天随机产生 5 个过程实例,总共产生 150 个过程实例.3.2A 阶段A 阶段将对 B 类事件表执行时间扫描.
14、找出下一最早发生的事件,并将仿真钟推进到该事件的发生时刻.活动实例产生和完成都属于确定性事件,扫描 B 类事件表的时候,需要选择处于“EXECUTING“ 状态的活动实例的完成时间和处于“READY“状态的活动实例的创建时间最小的时间作为仿真钟的下一推进时刻.其扫描算法如下:/TIME 表示当前仿真钟.Actlnst 表示活动实例/ActInsti表示事件表中第 i 个活动实例Fori=1,mIf(ActlnstII_Status=READY)and(Actlnstil.CreateTimeTIME)and(ActInst【i.CreateTimeMIN)thenMIN=Actlnsti】.C
15、reateTimeEndifElseif(ActInsi.Scacus=EXECUTING)and(ActInsi,FinishTimeTIME)and(Actlnsi.FinishTimeMIN)thenMIN=Actlnsi,FinishTimeEndifEndf0rTIME=MIN3.3B 阶段B 阶段将对 B 类事件表进行扫描,如果处于“Executing“状态的活动实例的完成时间或处于“Ready“状态的活动实例的创建时间小于当前仿真钟,则调用 B 类事件处理程序进行处理,其执行算法如下:(1)根据“EXECUTING“ 状态的活动实例的完成时间和“READY“状态的活动实例的创建时
16、间排序 B 类事件表(2)Fori=l,nIf(Actlnsi.Scacus;READY)and(ActIns【i】.CreateTimeTIME)or(ActInsil.Status=EXECUTING)and(Actlnsil.FinishTimeTIME)一75then,/“Ready“状态的活动实例为开始活/动实例,可置为“Finished“状态Actlnsi.Status=FinIs】1ed;从表中移出该活动实例;用户状态置为“Idle“;从过程模型中选择下一步将要产生的活动并创建新的活动实例.若新的活动实例是人工活动实例则让其处于“Waiting“状态,存入 C 类事件表中;若是结
17、束活动实例,则直接完成该括动实例并结束过程实例的运行;若是其它类型的非人工活动实例 ,直接完成该活动实例,从过程模型中选择下一步将要产生的活动并创建新的活动实例;EndifEndfor3.4c 阶段C 阶段扫描 C 类事件表,对每一个活动实例,测试其运行条件是否满足.其执行算法如下:(1)根据活动实例的创建时间排序 C 类事件表 n(2)ForI=l-nIf(UserisIDLE)then活动实例占用处于宅闲“IDLE“状态的用户并产生完成时间,状态为“EXECUTING“;从表中移出活动实例并将其存入 B类事件表中;EndifEndfor4 计算机实现工作流仿真模型的计算机实现有两种可以选择
18、的方式:使用仿真语言和高级语言.仿真语言 SLAM,SIMLIB,BASIM等都有对仿真模型的完整支持,且编程简单,易于实现.高级语言实现仿真较为复杂;但可实现对仿真的灵活控制 ,高级语言在统计的表现形式上也比仿真语言灵活,如可用表格,图形,甚至动画;此外高级语言也便于将仿真实现集成到其它的管理信息系统中.本文采用高级语言 DELPHI 实现过程模型的计算机仿真.我们所开发的工作流仿真工具不仅可以以动画的形式显示过程模型的执行过程,检查过程模型中可能存在的错误,还能对过程模型进行时间,成本,用户资源等统计,可以根据统计结果优化资源配置.使用图 l 的过程模型说明本文工作流仿真建模工具的运行.图
19、 1 中有 1 个开始节点,1 个结束节点,1 个“或“ 逻辑节点,5 个人工活动节点,8 条无条件连接弧,2 条有条件连接弧.活动节点“录入销售机会“的持续时间为 0,“修改销售机会“的持续时间为 2 天,其它的人工活动的持续时间为 3 天.条件连接弧“市(上接第 73 页)4KerseyPJ,DuarteJ,WilliamsA,eta1.TheInternationalProteinIndexanIntegratedDatabaseforProteomicsExperimentsJ,Proteomics,2004,4(7):1985.5ApweilerR,BairochA,WuCH.eta
20、1.UniProt:theUniversalProteinKnowledgebaseEB/OL,NucleicAcidsReshttp:HnarOxfordj076 一场部通过且财物部通过“的执行概率为 0.9,“市场部不通过或财物部不通过“的执行概率为 O.1.仿真运行时间为 t20天,平均每天有 1 个过程实例产生,总共完成了 38 个过程实例,其部分统计结果如图 3.活动统计 0_“-.渖自统计平均工佃搁)占过程的百分比平均嶂符资帮搁 l 平均崞符斑矗的蜜 I370910192383709%10192382d720023709253417用户统计SAN_一SI工作息时闾)1d117轧目辜
21、篁11l67%-J167975%,二 I圈 3 仿真运行和境计结果从图 3 可以很清楚地看出多个过程实例运行时的时间,成本和用户统计,根据这些统计数据,可以对将要部署系统的持续时间,用户类型以及用户数量等进行调整以优化过程模型的性能5 结束语工作流仿真技术是一种经济实用的优化配置过程模型的途径.实践证明,采用 ABC 法实现的工作流仿真能够简单高效地实现对过程模型的仿真,在工作流仿真中具有较好的应用价值.参考文献l 王维平,朱一凡,华雪倩等.离散事件系统建模与仿真 M】.长沙:国防科技大学出版社,1997.2 范玉顺,王刚,高展.企业建模理论与方法学导论M 】.北京:清华大学出版社,20013 冯允成.活动网络分析M】北京:北京航空航天大学出版社,l991.4 刘铁铭,范玉顺.基于作流的企业过程的建模和仿真技术研究.清华大学,2000,40(1):107 一 Ill,