Petri网的角色扩展探讨
2014-05-30张永亮
张永亮
摘 要:Petri网具有严格的数学表述方式和直观的图形表达方式,在软件设计、工作流管理、工作流模式、数据分析、并行程序设计、协议验证等方面得到广泛的应用。随着Petri网的研究和应用的发展,产生了许多扩展Petri网的建模表达方式,包括:着色Petri网、时间Petri网、层次Petri网。现时的软件设计方法以面向对像为主流,在需求分析阶段要对业务流程进行建模工作,需要对业务过程中的人和事进行表述。使用Petri网对业务流程进行建模,一方面,Petri网可以很好地表现业务数据的变迁,却未能表达出相关业务数据变迁所涉及到的实际操作角色。另一方面,使用基于UML和Petri网的混合设计,要做大量的规则映射,不便于最终用户阅读。文章尝试讨论在经典Petri网的基础上,不改变Petri网的數学性质,为Petri网的变迁增加角色属性的描述,使之更有效地适应具体业务流程建模。
关键词:Petri网;工作流;面向对像
中图分类号:TP311.52 文献标识码:A 文章编号:1006-8937(2014)24-0091-02
1 工作流的建模原理
经典Petri网是由库所和变迁、有向弧和托肯元素组成。在Petri网的基础上,Aalst提了出了工作流的概念。
2 经典扩展Petri网
随着Petri网的建模研究发展,实践者对Petri网进行扩充,以适应不同的应用场景,例如着色Petri网、时间Petri网、层次Petri网等。
2.1 着色Petri网
通过给标记赋值,就好比给它们涂上了不同的颜色,通过它对标记进行区分。变迁实施所产生的标记,取决于实施时被消耗的标记的值,生产出的标记的值也可以依赖于那些被消耗的标记的值。与传统的Petri网不同,生产的标记数目也是变化的,即生产的标记数目由消耗的标记值决定。
2.2 时间Petri网
标记将时间戳作为一个值。该时间戳指明标记自何时可用,只有在每个要被消耗的标记的时间戳早于当前时间时,变迁才能就绪。换句话说,变迁的就绪时刻是它的输入库所包含足够的可用标记的最早时刻。标记的消耗按照先进先出规则。拥有最早时间戳的标记首先被消耗。此外,具有最早就绪时刻的变迁首先实现。
2.3 层次Petri网
一个过程能由子过程构成,其子过程又能由更深层次的子过程构成,从而可以层次化地构造一个复杂的过程。
根据上面三种Petri网的扩展可以看出,三种扩展Petri网的扩展侧重点不同。如果想通过这三种扩展Petri网来描述一个业务流程中“什么人做了什么事”具有一定的局限性。
3 经典Petri网的角色扩展
角色Petri网是在经典Petri网的基础上,对每一个变迁增加角色描述。角色描述是变迁的一个辅助说明属性,所以不改变Petri网的数学定义。
角色Petri网是用来展现业务流程中参与者与操作、参与者与参与者之间的协作关系的模型。业务流程由源库所开始,以汇结库所结束。以Petri网的可达路径表示业务流程的执行步骤顺序。角色表示业务流程中业务操作的实施者。变迁表示实施者的业务操作。一个实施者到另一个实施者的协作次序使用有向弧和令牌表示。每一个变迁只对应一个业务操作。如果一个角色要进行多个业务操作,把每一个业务与一个变迁建立对应关系,以保证把角色Petri网向面向对像编程语言转换时,角色的每一个变迁与对象的一个方法进行一对一的关系映射。
4 各种Petri网的建模比较
文章分别运用经典Petri网、角色Petri网和UML和Petri网混合建模对业务流程进行建模。
4.1 经典Petri网
经典Petri网以图形化的形式对业务流程进行表达,对于每个变迁的相关实施主体,把经典Petri网转换成面向对像代码时,由于缺少变迁的实施者说明,无法与面向对象的抽象类形成对应关系。虽然可以把角色与业务操作合并成一个变迁,但在转换成面向对象的代码时候就会变成概念不清晰,一个变迁与一个抽象类、一个抽象方法对应,形成一对二的关系。
4.2 角色Petri网
角色Petri网能完整地表达业务流程中什么人做什么事。当把角色Petri网向面向对象编码转换的时候,只要把角色与抽象类,变迁与抽象类的方法建立映射关系即可。但这种映射关系只在抽象层,对于具体细化每一个抽象类和方法没提供进一步的展现,要进一步的具体化抽象类的方法的实际业务逻辑,需要配合层次Petri网,再进一步细化具体业务逻辑。
4.3 UML和Petri网混合建模
基于UML和Petri网的建模,首先要进行规则的映射转换定义,经过转换所得的Petri网,与经典Petri网相比,库所和变迁都有所增多,这主要是因为UML与Petri网的映射所造。如果要表达更复杂的业务流程,经UML转换的Petri网会出现更多冗余的库所和变迁。
4.4 总 结
经典Petri网,角色Petri网,以及UML与Petri的比较见表1。
综合上述对比可发现,角色Petri网建模界于经典Petri网建模与UML和Petri网混合建模之间。一方面,角色Petri网具有经典Petri网的严格数学表达方式,同时增加了面向对像设计的支持。使用角色Petri网建模,能较为完整地表达业务流程的完整信息。另一方面,使用角色Petri网进行业务流程建模,方便系统分析员把业务流程模型转换为基于开发级的抽象类和抽象方法。但角色Petri网也有其不足的地方,在细化面向对像的建模中,由于角色Petri网是在抽象类级别进行设计和表达,对于代码级别的设计和表达不够细化,而这方面也是正UML的所具备的。角色Petri网可以尝试与层次Petri网结合。在业务的建模中,使用角色Petri网展现业务流程的高级抽象层。而在业务流程的具体逻辑表现层上,运用层次Petri网与角色Petri网结合,形成层次化表达关系,达到更详细的业务逻辑描述,使模型更容易转换成实际开发代码。
5 结 语
角色Petri网在经典Petri网的基础上增加了对业务流程中涉及的对象的表达,对以面向对象方式进行业务流程建模提供了帮助。后续工作是要研究角色Petri网与层次Petri网相结合,使Petri网所建的模型更容易在软件开发中直接转换成代码。
参考文献:
[1] Toshiyuki Miyamoto,Sadatoshi Kummagai:Application of Object-Orie-
nted Petri Nets to Industrial Electronics[M].IECON,Taipei,Taiwan,2007.
[2] 刘宝代,张建,刘冰寒.基于UML活动图和Petri网电子政务工作流建模研究[J].计算机应用与软件,2011,(6).