PNML简介:用于实现Petri Net工具的互操作性的Petri Net描述语言

先从法国的LIP6 实验室开始,标准制定方面的牵头人,请先访问它的PNML标准化主页 ,然后是PNML Framework
关于PNML的标准化进程,当前通过的有ISO/IEC-15909,还有一个2009-version 处于草稿状态。
ISO/IEC-15909包括两部分,Part 1定义了PNML的语义,Part 2定义语法,PNML Framework就是针对Part 2的Java 实现。

提供PNML支持的工具(如PNML Framework)至少要提供如下两类API:

  • create and save PNML models;
  • load and fetch PNML models elements.

为什么要选择LIP6PNML Framework
    有5条理由 ,主要是因为LIP6是倡导、参与PNML标准化进程的主体。

有什么能力 ?它支持如下类型的Petri Net和记号系统:

  • PNML Core Model;
  • PNML Place/Transition Net;
  • structural PNML High-level Petri Net;
  • Symmetric Net.
  • Place/Transition Net in High-level Notation

PNML标准在一个core model基础上,定义了4种类型的网。

The Core Model

It is the common graph, on top of which all types are built. It states that a Petri Nets Document is composed of Petri Nets models. Every Petri Net contains Pages which, in turn, contain Places , Transitions , Arcs , their labels and graphical appearance. At this point, what kinds of label we have is not relevant. They are abstract.

From every Petri nets type, you should be able to extract the underlying Core model .

Place/Transition Nets

It models the classical P/T nets which define annotations such as markings and arc inscriptions. Those are natural numbers .

Symmetric Nets

Symmetric Nets (aka Well-Formed Nets) are a restricted definition of High-level nets. Their carrier sets are finite, and they only allow for a predefined sets of operations. Their annotations follow a strict abstract syntax definition. Simple text in exclusion of the abstract syntax representation of any annotation is not allowed.

High-Level Nets

They allow for infinite carrier sets such as integers. They allow for any arbitrary user-defined operation or sort. Their annotations can only be simple text, though the abstract syntax representation is also allowed.

Place/Transition in High-Level Nets notation

Those are P/T nets whose annotations are in dots instead of natural numbers. In which case they are also entitled to use multisets and booleans. Therefore these annotations can also follow the abstract syntax representation defined for any high-level net annotation.


怎么用 呢?

PNML Framework is intended to be used as a Java library for your application. It provides two essential features, which will allow you to:

  • export your Petri net models, represented in your own tool format, into PNML;
  • import PNML models into your format.

To use these features, the only requirement is to provide your parsing tool for your proprietary representation format of Petri nets (which most of the time you already have). Once you meet this requirement, you just build your new application in a few steps and integrate it to your Petri net tool.


接下来,就要具体看API 文档Developer指南 了。


开发建议 :Recommended plugins for eclipse

Name Description Address
FindBugs Looks for bugs in your code using static analysis
Metrics Analyzes and gives feedback about the metrics of your program
Mylyn Task-focused interface for context-based development. Integrate Bugzilla, Trac and JIRA
PMD Detects dead code, duplicates, possible bugs, overcomplicated expressions
Checkstyle Point out your bad coding practice and propose improvements


Architecture of PNML Framework

We present here the release number 3 of PNML Framework architecture.

Of course, this architecture may change in the future, but with this diagram you will have an idea. The goal of this article is to enable you to give us your feedback about this architecture, what are your suggestions.

In this outline, we use a component diagram to expose the architecture. Component representation is the nearest approach for implementations which work with Eclipse plug-in system. Indeed, in Eclipse environment, softwares are mainly based on plug-ins. Currently, we have defined 9 components for PNML Framework.

We have defined some sub-components, which are not plug-ins but considered as packages (in the Eclipse terminology). For example, : PNML Writer of the architecture. 



Pink: Provided interfaces
Grey: Required interfaces
Brown / green: Delegate links

Brief Description

Here is a little summary of each component:

  • PNML Core Model : this component is the base of PNML Framework. It contains all base methods to write, read, or modify PNML models.
  • P/T Type, SN Type, HLPN Type : those components implement the real Petri nets Types. There are inherited links between them and PNML Core Model component as the UML package overview of PNML Framework shows.
  • Format Validator allows to check if PNML files are in the right XML format.
  • General Reader contains methods to find PNML objects type.
  • Id Repository guarantees uniqueness of each PNML object we will create.
  • Model Repository stores references to all PNML Models being used. Its usefulness for PNML Framework is not yet well established, since users can do the same in their applications.
  • Utilities gives many methods for exception and logs reports.

Activity diagrams below describe the dynamic of the export and import features of PNML Framework.

Activity of the export feature in PNML Framework

This outline describes all activities performed during the export of a PNML model into a PNML syntax . It explains all conditions which are necessary to go to a next step for each activity.

The export of a PNML model is driven by a Petri net tool A , which is a user of PNML Framework. Download the image of the export activity diagram.



Activity of the import feature in PNML Framework

This outline describes all activities performed during the import of a PNMl model. It explains all conditions which are necessary to go to a next step for each activity.

Again, the import of a PNML model is driven by a Petri net tool A , which is a user of PNML Framework. Download the image of the import activity diagram



Softwares using PNML Framework

Coloane Coloane is a generic graph editor and a front-end of FrameKit .
CpnAmi application Application to convert Cami models to PNML models and vice versa.



The following people have contributed valuable time and effort to the development of PNML Framework.

Name Qualification Institution Home page
Fabrice Kordon CIO UPMC/LIP6 Access
Lom Messan Hillah Project leader, developper UPMC/LIP6 Access
Laure Petrucci Advisor, bêta tester Paris 13/LIPN Access
Nicolas Trèves Advisor, bêta tester CNAM/CEDRIC Access
Guillaume Giffo Core Architect, developper, integrator UPMC Access
Rachid Alahyane Infrastructure and CI manager UPMC Access
Bastien Bouzerau Junior Architect, developper UPMC Access
Etienne Renault Demonstrator GUI Taipa UPMC Access
Jean-Luc Mounier System Admin UPMC/LIP6 Access
Nicolas Gibelin System Admin UPMC/LIP6 Access
Alexandre Hamez Subversion Admin UPMC/LIP6 Access
Alban Linard Consultant UPMC/LIP6 Access
Jean-Baptiste Voron Consultant, bêta tester UPMC/LIP6 Access