PNML简介：用于实现Petri Net工具的互操作性的Petri Net描述语言
先从法国的LIP6 实验室开始，标准制定方面的牵头人，请先访问它的PNML标准化主页 ，然后是PNML Framework 。
ISO/IEC-15909包括两部分，Part 1定义了PNML的语义，Part 2定义语法，PNML Framework就是针对Part 2的Java 实现。
- create and save PNML models;
- load and fetch PNML models elements.
- PNML Core Model;
- PNML Place/Transition Net;
- structural PNML High-level Petri Net;
- Symmetric Net.
- Place/Transition Net in High-level Notation
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 .
It models the classical P/T nets which define annotations such as markings and arc inscriptions. Those are natural numbers .
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.
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.
|FindBugs||Looks for bugs in your code using static analysis||http://findbugs.sourceforge.net/index.html|
|Metrics||Analyzes and gives feedback about the metrics of your program||http://metrics.sourceforge.net/|
|Mylyn||Task-focused interface for context-based development. Integrate Bugzilla, Trac and JIRA||http://www.eclipse.org/mylyn/|
|PMD||Detects dead code, duplicates, possible bugs, overcomplicated expressions||http://pmd.sourceforge.net/|
|Checkstyle||Point out your bad coding practice and propose improvements||http://eclipse-cs.sourceforge.net/|
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
|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.
|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|
|Jean-Baptiste Voron||Consultant, bêta tester||UPMC/LIP6||Access|