分享

结合UML和Petri Net技术的工作流建模的研究

 hehffyy 2012-03-27
工作流输入和输出的质贵是工作流管理系统成功的关健因素,因此对工作流的建模尤为重要。本文以汽车租货流程为例,研究知何把UML和Petri Net两大工其结合起来对工作流进行建模和系统仿真的方法。UML能够有效地描述系统,但缺乏精确的语义描述;而Petri Net能对系统进行仿真和产密地分析,形式化程度较高。将两者结合,可实现优势互补,为改进模型、促进业务流程管理提供有效途径。
        
        1 引 言
        
        在软件业不断迅猛发展的今天,信息技术在企业流程管理上显示了巨大潜能。如BPR(Business Process Reengineering),即业务流程再造;BPM(Business Process Management),即业务流程管理,等根据企业业务环境的变化,运用信息技术来推进人与人、人与系统以及系统与系统之间整合协调的经营与解决方案正越来越受到人们的推祟。
        
        在业务流程管理中,对于工作流,即业务过程的设计、仿真和分析成为研究领域的重中之重。本文以汽车租赁的业务过程为例,研究如何将UML与Petri Net技术相结合来建立合理高效的工作流模型,从而优化企业业务流程。
        
        2 UML和Petri Net工作流建模技术
        
        2.1 工作流建模
        
        

        
        工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。这一定义是由工作流管理联盟(Workflow Management Coalition,WfMC)给出的。工作流的构建是在确定任务的基础上进行的。任务是一个工作的逻辑单元,它不可分割且必须完整执行。
        
        WfMC对于工作流管理系统(WFMS)给出的定义为:工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。它是以规格化的流程描述作为输入的软件组件,维护流程的运行状态,并在人和应用之间分派活动。
        
        工作流管理系统提供了三个功能:其一是建立阶段的功能,主要考虑工作流过程和相关活动的定义和建模功能;其二是运行阶段的控制功能,执行工作流过程,并完成每个过程中活动的调控功能;第三是运行阶段的人机交互功能,实现各种活动执行过程中用户与IT应用工具之间的交互。
        
        工作流建模定义工作流模型。通过分析企业不同的业务过程,采用有向图的方法对企业活动进行形式化描述,并严格定义组成有向图的各类元素的行为特征,从而明确建立企业业务过程到工作流模型的映射机制。在此基础上,进一步扩展模型语义,增强其表达能力,在图论指导下确定方便、实用且形式上严格规范的工作流模型。
        
        2.2 UML工作流建模
        
        

        
        统一建模语言UML是一种可视化、规范定义、构造和文档化的建模语言,已经成为目前面向对象软件系统分析与设计的标准。然而,UML的使用并不局限于软件开发,也可被有效地运用于企业工作流建模和业务过程分析,其为过程建模提供了四种图,即:时序图、协作图、状态图和活动图。UML对待用户友好,能够有效地描述系统,模型与程序实现联系紧密,然而其形式化程度相对较低,不能对工作流进行仿真。因此,可通过与Petri Net技术相结合来更好地实现工作流的建模、分析和仿真。
        
        2.3 Petri Net工作流建模
        
        

        
        Petri Net作为一种过程建模和分析工具,在1962年由Carl Adam Petri提出,它是一种图形化描述过程的强有力工具,Petri Net可直观地描述工作流过程,有严密的数学基础,且完全形式化,可对建模过程的性质进行准确的判断和分析。
        
        Petri Net由库所和变迁组成,圆圈表示库所(place),矩形表示变迁(transition),由有向弧连接库所和变迁。库所可以容纳标记(token),标记用黑色表示,Petri Net结构是固定的,而库所中的标记分布是可变的。Petri Net的状态用库所中的标记的分布来描述。变迁只有满足可实施的条件才能实施,即输入库所至少由一个标记,变迁才能被触发,准备就绪。如图1所示。
        
        
        
        图1 Petri Net基本结构
        
        将UML建立的时序图、状态图和活动图映射到Petri Net,可对工作流进行严密的分析和模拟、仿真及静态、动态死锁检测,用于修正工作流模型,从而使得业务流程得到改进。
        
        2.4 建模步骤
        
        

        
        1.根据企业的实际业务流程确定工作流。
        
        2.用UML对工作流进行建模,下文主要以客户预订车辆子过程为例构建UML时序图、以整个汽车租赁业务流程为例构建UML活动图。
        
        3.UML模型到Petri Net模型的映射,下文实例中将UML时序图和状态图映射到Petri Net。映射规则如下:
        
        (1)UML时序图到Petri Net的映射
        
        UML时序图描述了对象之间的消息传递过程,将这种关系映射为Petri Net的通讯关系,是通过Petri Net各库所间发送和接收代表对象之间通讯的token来完成的,因此,只要把时序图中的消息传递箭头映射为从消息发送方的活动Transition到接收方的place,从place输入接收方的Transition。
        
        (2)UML活动图到Petri Net的映射
        
        UML活动图能够对对象的生命周期建模,且对状态图不能对对象之间控制流进行建模的特点予以补充。映射规则如表1和图2所示。
        
        表1 UML活动图到Petri Net映射规则
        
        
        
        图2 Petri Net基本结构表示
        
        4.基于Petri Net的工作流仿真。
        
        3 建模实例
        
        3.1 根据汽车租赁业务流程确定工作流
        
        

        
        根据实际业务需求,该汽车租赁系统工作流程为:(1)客户填写预定申请表;(2)租赁商收到客户申请后对其进行处理;(3)根据客户的历史记录以及车辆的状态确定是否接受客户请求。如果某个条件不符合,就向客户发送拒绝通知,交易结束;如果条件都符合,则接受该请求并向客户发送租赁通知,同时保存相关数据,若是新客户,还须登记客户信息;(4)客户在约定时间内取车,取车需出示相关通知;(5)车辆使用后,客户必须在规定时间内将车返还给租赁商;(6)技术人员对车辆进行检查,根据车辆状况收取相应费用,若车辆有所损坏,收取罚金;(7)交易结束。
        
        3.2 趁立相关UML模型
        
        

        
        1.构建“客户预订车辆”子过程的UML时序图,流程为上述步骤(1)——(3),如图3所示。
        
        
        
        图3 客户预订车辆UML时期
        
        对象说明如下:
        
        (1)the Customer:客户;(2)the Request:客户租赁申请;(3)worker:工作人员;(4)Customer Record:客户记录;(5)the Car:车辆。
        
        函数说明如下:
        
        (1)fillOrder():客户填写租赁申请表;(2)checkReq():查看客户申请;(3)checkRecord():检查客户历史记录;(3)passed():历史记录无问题;(5)ifServed():判断车辆状态;(6)Available():车辆可租赁;(7)createNewRecord():创建新记录;(8)Allow():允许客户租赁;(9)isHandled():客户请求处理;(10)notify():通知客户取车。
        
        2.构建整个“汽车租赁”业务流程的UML活动图,流程为 上述步骤(1)——(7),如图4所示。
        
        
        
        图4 汽车租赁系统UML活动图
        
        3.3 实现UML模型到Petri Net模型的映射
        
        

        
        1.“客户预订车辆”UML时序图到Petri Net的映射,如图5所示。
        
        
        
        图5 客户预订车辆流程Petri Net映射
        
        2.“汽车租赁系统”UML活动图到Petri Net的映射,如图6所示。
        
        
        
        图6 汽车租赁系统流程Petri Net映射
        
        3.4 墓于Petri Net的工作流仿真
        
        本文对Petri Net仿真以图6,即汽车租赁系统流程Petri Net模型为例。图6为初始状态。(由于篇幅原因,以文字描述代替图形表示)
        
        1.状态1:两个Token分别处于Request Checked和Customer Req库所,Check History和Store Req变迁被激活。
        
        2.若客户历史记录不佳,则转:
        
        状态2.1:两个Token分别处于Sad History和Customer Req库所,Deny和Store Req变迁处于激活状态。
        
        状态2.2:Token处于End状态,一次流程结束,租赁请求被拒绝。
        
        3.若客户历史记录正常,则转:
        
        状态3:两个Token分别处于Good History和Customer Req库所,Check Car和Store Req变迁被激活。
        
        4.若该车辆未处于待租赁状态,则转:
        
        状态4.1:两个Token分别处于Not Available和Customer Req库所,Deny和Store Req变迁被激活。
        
        状态4.2:Token处于End状态,一次流程结束,租赁请求被拒绝。
        
        5.若该车辆处于待租赁状态,则依次转:
        
        状态5、6、7:一个Token处于Customer Req库所的同时,另一个依次经过Available、Customer Get Car和Waiting for Check库所,notify、Give Car Sack和Check the Car变迁依次被激活,在此过程中Store Req变迁一直处于激活状态。
        
        6.若客户归还的车辆有所损坏,则转:
        
        状态8.1:两个Token分别处于Damaged和Customer Req库所,Fine和Store Req变迁处于激活状态。
        
        状态8.2:Token处于End状态,一次租赁流程结束。
        
        7.若客户归还的车辆未损坏,则转:
        
        状态9.1:两个Token分别处于Caris Ok和Customer Req库所,Pay和Store Req变迁处于激活状态。
        
        状态9.2:Token处于End状态,一次租赁流程结束。
        
        4 总 结
        
        

        
        本文以汽车租赁系统工作流建模为例,研究了如何用UML和Petri Net技术相结合的方式来建立企业业务流程的模型并进行仿真。两者都能对系统做出严密的描述,其中,UML方便程序员将模型转换为代码,而Petri Net则可被用于系统的仿真.在两者结合的基础上,系统构架师能够对企业业务流程做出各类分析,如:可达性分析、性能分析等以便对业务流程进行重构和优化。
        
        发表时间:2008-9-19  张彦歆   来源:万方数据
原文网址: http://bbs./25352-1-1/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多