LIP6 UPMC CNRS Move-team
Presentation
Materials
News
Feedback
2016-10-10
LIP6 > Software > MoVe Sofware > PNML Framework > Documentation

Where to find documentation about PNML Framework?

If you are looking for user documentation to get you started, it is located on our wiki, starting from the following page.

If you are specifically looking for the API docs of the latest stable release, they are just here.


Integrate PNML Framework libraries as Maven dependencies

To use PNML libraries in your Maven build, add the following declarations in the dependencies section of the pom.xml of your project.

Note that you may select only the declarations corresponding to the libraries you are interested in. No need to pick them all if for instance you are not using the PT-HLPNG Net type.

First, declare a property to hold the version of PNML Framework you'll be using, anywhere under the project element in your pom.xml:

<properties>
	<pnml.version>2.2.12</pnml.version>
</properties>

Then declare the required runtime libraries:

<dependencies>
 	<dependency>
        	<groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.3rdpartimports</artifactId>
		<version>${pnml.version}</version>
	</dependency>
	<dependency>
		<groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.utils</artifactId>
		<version>${pnml.version}</version>
	</dependency>
        
	<!-- declare the PNML Framework Petri Net libraries. See below -->

</dependencies>


Then declare the PNML Framework Petri Net libraries:

<dependencies>
	<dependency>
		<groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.coremodel</artifactId>
		<version>${pnml.version}</version>
	</dependency>
 	<dependency>
                <groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.ptnet</artifactId>
		<version>${pnml.version}</version>
	</dependency>
 	<dependency>
		<groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.symmetricnet</artifactId>
		<version>${pnml.version}</version>
	</dependency>
 	<dependency>
                <groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.hlpn</artifactId>
		<version>${pnml.version}</version>
	</dependency>
 	<dependency>
                <groupId>fr.lip6.pnml</groupId>
		<artifactId>fr.lip6.pnml.framework.pthlpng</artifactId>
		<version>${pnml.version}</version>
	</dependency>
</dependencies>

For updating, you will just need in the future to change the version number as the value of the property pnml.version. It is also possible, alternatively, to pre-declare these dependecies in the dependencyManagement section of the parent pom.xml of your project, before reusing them (without re-specifying the version) in any of your Maven modules. To learn more about this, refer to the Maven documentation, or have a look at how I use it in the the parent pom of PNML Framework.

PNML Framework libraries are deployed on Maven Central, except the 3rd party library (fr.lip6.pnml.framework.3rdpartimports), which you need to install manually (it is included in the archive distribution), using the command as explained on that Maven page.

However, everything is also deployed on our remote Maven repository. In this case, you may want to add the following repository declaration in your pom.xml:

<repositories>
	<repository>
		<id>pnml.framework</id>
		<url>http://miage11.u-paris10.fr:8081/nexus/content/groups/public/</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
		        <enabled>true</enabled>
		</snapshots>
	</repository>

</repositories>

Finally, if you added the above declaration, you might also want to add an exception for our repository to the list of mirrors in your $HOME/.m2/settings.xml configuration for Maven:

<settings>
...
	<mirrors>
		...
		<mirrofOf>external:*,!pnml.framework</mirrorOf>

	</mirrors>
...

</settings>

Final note: if you are using Eclipse (Modeling Distribution) with EMF installed, no further dependencies to declare. Otherwise, add them manually to your build path, that is the simpler way. PNML Framework requires EMF Ecore, EMF Common, OCL Ecore and OCL Common jars.

If you are a Tycho user, chances are you're already familiar with the dependency mechanism on Eclipse plugins using Tycho.

The implemented Standard Petri Net types

PNML Framework exports many interfaces, corresponding to the implemented Petri Nets types of the standard. So far, the Standard has defined four types of nets, based on a common graph, the Core Model.

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.

Bas