VPML-OOPN集成建模方法的设计与实现

来源:岁月联盟 作者:万里威 时间:2010-08-30
  摘要: 为了支持对业务流程进行建模和分析,辅助过程改进,提出了VPML-OOPN集成建模方法。该建模方法是利用可视化过程建模语言VPML建立企业过程模型,然后将该过程模型映射为面向对象Petri网模型。通过Petri网模型的分析和仿真,其结果可用于修正和改进模型设计。?
  关键词:可视化过程建模语言;面向对象Petri网;可视化过程建模语言—面向对象Petri网集成建模方法;企业过程建模?
 
  在激烈的市场竞争中,所有企业都希望及时而高效地开发出高质量、高性能的产品。这一切在很大程度上取决于开发产品的过程和对过程的管理。过程建模是过程管理和并行工程的基础和核心技术。通过过程建模,进行并行性分析,提高并行度;通过仿真分析,过程改进,缩短研制周期,提高资源利用率。本文针对企业过程分布、并行的特点,提出了集成可视化过程建模语言(Visual Process Modeling Language,VPML)和面向对象Petri网(Object-Oriented Petri Nets, OOPN)的企业过程建模方法。?
  
  1VPML-OOPN集成建模方法的技术基础?
  
  1.1可视化过程建模语言?
  可视化过程建模语言是北京航空航天大学软件工程研究所和美国Funsoft公司合作开发的,是针对企业过程的建模语言,用图形与文本相结合的方式描述企业过程的不同方面的内容,具有高度的可视性和形式化程度。VPML能从活动、后勤、数据、协同以及活动中的行为等五个模型来刻画一个企业的过程[1], 如图1所示。?
  VPML定义了四组对象原语:一组连接原语和三组连接符原语。每个对象原语对应于企业模型中的一个概念,每个连接和连接符原语定义对象原语间的一种关系。对象原语包含活动、产品、资源和其他概念,它定义了在VPML中合法的对象集合。?
  
  1.2Petri网?
  Petri网是Carl Adam Petri博士在1962年提出的,它是一种形式化的建模方法。Petri网作为一种图形工具,可以使用标记(Token)来模拟系统的动态行为和并发活动;作为一种数学工具,它可以建立状态方程、数学方程以及系统行为的其他数学模型[2]。?
  
  ?其中,P和T分别称为N?的place(库所)集和transition(变迁)集,?F?为流关系。若用圆圈表示库所,用矩形框表示变迁,用有向弧来表示库所与变迁的有序偶,则构成了Petri网的图形?表示。
  对Petri网表示的系统,可以进行活性、可达性、冲突、死锁等分析。分析方法有可达树方法、关联矩阵方法、不变量分析方法等。?
  
  1.3面向对象Petri网?
  本文采用的面向对象Petri网OOPN是对韩国KAIST的Yang Kyu Lee等人提出的OPNets模型的扩展。在OPNets中,如图2、3所示,用高级网子网描述每个对象的行为以及对象之间的关系,通过用方形框把子网括起来表示封装与抽象。为了信息隐藏,每个对象清晰地表示为外部结构和内部结构两部分。外部结构描述对象之间的信息通信,而内部结构描述每个对象的内部控制流。对象的外部接口由消息队列(message queue,mesQueue,用椭圆表示,类似于用圆表示的库所)、门(gate,用粗线表示,类似于用方形框表示的变迁)以及它们之间的流关系(arc,用弧线表示)给出。每个对象表示为一个子网,库所中令牌的变化代表了对象的不同状态(用黑点表示令牌token),故这些库所特别地称为state。?
  
  对象的内部行为用谓词网描述。在弧上不加谓词,在变迁中定义发生条件和发生时要执行的动作。当变迁的所有前驱中都有令牌,并且存在某一令牌的组合使变迁的发生条件为真时,变迁就可以发生。不同对象之间可以用 gate把输入mesQueue与输出mesQueue 连接起来,以此表示相互的消息传递关系。?
   对象有复合对象(图2中的A)和简单对象(图3中的AA和AB)之分。在简单对象中,不包含并发部分,只表示顺序行为;而在复合对象中则允许并发,因为复合对象定义了简单对象之间的连接关系,其控制分布在这些聚合的简单对象之间。为了依照系统要求来同步基本对象的顺序行为,在复合对象中定义了对象间的消息通信。这种构造可使同步约束从每个对象内部分离出来,更便于对象的重用,也为系统死锁分析方法奠定了基础。?
  
  1.4VPML与OOPN的共同之处和差异 ?
  VPML与OOPN的共同之处是两者均为面向对象的建模语言,都能够对现实的过程进行建模,两者都有相应的形式化定义。?
  两者的差异是Petri网的形式化程度更高,能够对系统的结构和动态行为进行严密的数学分析和直观的机仿真,但是相对比较抽象,不易于掌握。而VPML语言的特点是功能丰富、直观易学、灵活适用,但形式化程度不够。?
  综上所述,VPML对用户友好,Petri网具有形式化的严密性;VPML能够有效地描述系统,Petri 网能够严密分析系统;VPML模型与程序实现紧密相连,Petri 网模型则易于进行仿真。根据VPML和Petri网各自的优点,本文提出了VPML-OOPN集成建模方法,实现两者的优势互补。?
  
  2VPML-OOPN集成建模方法的设计和实现?
  
  2.1VPML-OOPN集成建模方法的总体设计思想?
  VPML-OOPN集成建模方法的总体设计思想如图4所示。具体分为以下几个步骤:?
  (1) 首先对要创建的过程模型进行需求分析,然后利用VPML的对象源语、连接和连接符源语对过程模型进行描述和设计。?
  (2) 将建立好的过程模型自动映射成面向对象Petri网模型。?
  (3) 利用面向对象Petri网模型进行模拟、仿真、静态和动态死锁检测等。?
  (4) 模拟和仿真以及定性分析的结果用于修正和改进模型设计,模型设计和模型分析不断进行,直到满意为止。?
  (5) 根据改进后的过程模型描述实现模型。?
  
  2.2系统总体结构?
  系统从功能上可分为如下主要部分:系统总控模块、用户界面模块、创建VPML过程模型模块、过程模型到面向对象Petri网模型的映射模块、面向对象Petri网的模拟仿真和死锁检测模块。系统总体结构图如图5所示。?
  下面分别对各个模块的功能作简要介绍:?
  (1) 用户界面模块?
  该模块用于生成用户的界面。用户界面包括菜单条、工具条、控制面板和图形编辑区。?
  (2) 创建VPML过程模型模块?
  该模块的功能包括支持定义过程模型的结构,编辑VPML的可视化图符原语对象,为每类对象设置其相应的属性。通过设置活动的属性完成其时间的设置;通过设置资源对象的属性完成资源的分配。?
  (3) 模型映射模块?
  该模块包括VPML过程模型映射模块、生成Petri网脚本文件模块和生成模型系统脚本文件模块。?
   VPML过程模型映射模块包括对象源语映射模块、逻辑连接符映射模块和连接关系映射模块。对象源语映射模块能够完成活动、产品、资源和时钟的映射。其中产品的映射能够区分源产品和非源产品。如果是源产品还具有区分单一源产品和多源产品的功能。资源映射首先区分人工资源和非人工资源,然后再进行映射。时钟映射能够设置时钟的开始时间、结束时间、重做周期和间隔时间等,以此对活动进行控制。逻辑连接符映射模块能够完成输入逻辑连接符Input_OR和Input_AND以及输出逻辑连接符Output_OR和Output_AND的映射。连接关系映射模块能够完成数据流连接、关联连接、引用连接和时钟连接的映射。?
  
本文原文
   生成Petri网脚本文件模块是将映射的结果按照事先定义好的复合类的脚本文件格式写入扩展名为.OPNC的脚本文件中,生成复合类;生成模型系统的脚本文件是按照模型系统的脚本文件的基本框架写入脚本文件,作为系统模拟和定性分析的基础。?
   (4) 模拟仿真和死锁检测模块?
  该模块能完成面向对象Petri网的模拟仿真和死锁检测。?
  
  3系统核心模块设计及关键技术分析?
  
  3.1创建VPML过程模型的流程?
  生成过程模型如图6所示。?
  创建一个过程模型分为以下几个步骤[3]:?
  (1) 分析用户需求与目标,根据分析的结果建立VPML过程模型。?
  (2) 定义VPML过程模型的活动以及输入/输出产品。?
  (3) 定义执行活动所需的资源。?
  (4) 定义每个对象源语的属性。?
  (5) 通过合成过程,生成VPML过程模型图。?
  (6) 检查VPML过程模型是否具有完整性,如果VPML过程模型具有完整性则保存该文件;否则重新定义。?
  
  3.2映射部分的设计与实现?
  (1) 弧的映射?
  在过程模型中VPML节点是通过弧来连接的。在映射时是将每一条弧映射成由起始节点到门、门到终节点两条弧。(2)对象源语的映射和生成Petri网脚本文件?
  对象源语的映射是参照[4]中的VPML语义的Petri网描述。图7为活动和批处理活动的面向对象Petri网的对应子图。按照面向对象Petri网事先定义的简单类和复合类的脚本格式,依照脚本定义的顺序依次写入,并保存在扩展名为.OPNC的文件中。?
  图7中批处理活动有四种不同的控制:如果同时选择时钟和数量控制,在“选择二”对象中加一个Token;否则在“选择一”对象中添加一个Token。详情请参照文献[4]。?
  简单类的脚本文件的基本框架的定义请参照文献[2],在此不详述。在简单类的定义中,最重要的是Transition的定义。单个Transition的基本框架定义如下:?
  ?…: ??
  ?Pos: …??
  [ Color: … ]?
  [ NameLoc: … ]?
  [ Time: … ]?
   [ PreCond:]?
   …?
   [ #PreCond]?
   [ Action:]?
   …?
   [ #Action ]?
  “Time:”是时间标志符,为任选项,用来定义Transition发生的持续时间。后跟用逗号隔开的数字和时间单位。时间单位有七种:“MilliSecond”“Second”“Minute”“Hour”“Day”“Month”和“Year”。?
  “PreCond:”和“#PreCond”是发生条件定义标志符,为任选项,分别表示发生条件定义的开始和结束。这两个标志符之间可以定义一个合法的返回值为“boolean”的方法体,若不想为Transition定义发生条件,则可以省略此项内容。?
  “Action:”和“# Action”是动作定义标志符,为任选项,分别表示动作定义的开始和结束。这两个标志符之间可以定义一个合法的返回值为“void”的方法体,若不想为Transition定义动作,则可以省略此项内容。  在活动的属性中,最重要的是对活动的持续时间的定义,如果活动的持续时间是常量分布,那么则根据活动定义的具体时间和相应的比例出Token停留在Transition 中的时间,然后把时间写入脚本文件中;如果活动的持续时间是其他分布,则根据相应的算法计算出时间,写入脚本文件中。在模拟时Token会自动驻留在Transition中相应的时间,以达到模拟运行的效果。?
  (3) 生成Petri网脚本文件?
   将对象源语、逻辑连接符和连接弧映射完之后,需要按照面向对象Petri网中的复合类的脚本文件的基本框架写入脚本文件,生成的文件保存在.OPNC文件中。?
  (4) 生成模型系统的脚本文件?
   生成模型系统的脚本文件是按照模型系统的脚本文件的基本框架写入脚本文件,生成的文件保存在.OPNS文件中。在模型系统的定义中,最重要的是实例的定义。实例的基本定义框架如下:?
  ?InnerClass的名字.State的名字:??
   ?Token:??
   ?实例的名字:??
   ?Init:??
   …?
   ?#Init??
   ?#Token??
  在实例的定义中,最重要的是State中Token的定义。比如说执行一个活动必须有人这个资源,那么在写模型系统的脚本文件时则写入Token。这样在模拟运行时,Token会自动存于网中,点击运行按钮则网可以自动启动。?
  
  3.3模拟仿真和死锁检测模块?
  模拟仿真是把OOPN类转换成Java类来进行底层的实现,而Java类中仍然保留网结构,即系统的执行仍然按照网的引发规则来进行,而非将网结构转换成语言中的控制结构来实现。这样可以通过Petri网的执行获知系统的运作,也可以用Petri网的观点和角度来对系统进行控制[2]。?
   死锁检测过程首先根据对象的内部结构,提取出对其输入/输出门发生次序的要求,构造出接口等价网(Interface Equivalent Net,IE网),然后将不同对象的IE网合并,构成整个系统的IE网,通过建立IE网的可达树,分析其中是否存在死锁。?
  
  4结束语?
  
  通过分析VPML和面向对象Petri网各自的特点,提出了VPML-OOPN集成建模方法,设计和实现了VPML-OOPN集成开发环境。此环境可以完成过程模型的建立、映射、模拟仿真和死锁检测等功能,实现了VPML和面向对象Petri网的优势互补。?
  
  文献:?
  [1]周伯生,张社英.可视化建模语言[J].软件学报,1997,8(增刊):535-545.?
  [2]牛锦中.基于面向对象Petri网的并发软件集成开发环境的研究与实现[D].北京:北京航空航天大学,1999:20-24.?
  [3]周伯生,徐红,张莉.过程工程原理与过程工程环境引论[J].软件学报,1997,8(增刊):519-534.?
  [4]任爱华,周伯生.Petri网描述的VPML语义[J].计算机工程与应用,2001(12):11-18.?
  [5]勾红梅,黄必清.UML-PNs集成建模方法及其在虚拟中的应用[J].计算机集成制造系统,2000(10):23-28.

图片内容