|
|
|
The Petri Net Kernel (PNK) version 2.0 provides an infrastrucure for
|
|
building Petri net tools.
|
|
|
|
Copyright (C) 1999-2001 Petri Net Kernel Team
|
|
(Humboldt-University Berlin, Germany)
|
|
|
|
pnk@informatik.hu-berlin.de
|
|
|
|
|
|
Table of Contents
|
|
-----------------
|
|
|
|
* License Agreement
|
|
* Quick Start
|
|
+ Download and Run
|
|
+ First steps - Open, Edit and Save Nets
|
|
+ Start a first Simulator Session
|
|
* Distributed Files
|
|
|
|
|
|
License Agreement
|
|
-----------------
|
|
|
|
The PNK version 2.0 is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
(see file gpl.txt) as published by the Free Software
|
|
Foundation; version 2 of the license.
|
|
|
|
Furthermore, this product includes software developed by the
|
|
"Apache Software Foundation" (http://www.apache.org/)
|
|
as well as software developed by the
|
|
"Sun Microsystems, Inc." (http://www.sun.com/).
|
|
|
|
The PNK is distributed in the hope that it will be
|
|
useful, but WITHOUT ANY WARRANTY.
|
|
|
|
You are NOT ALLOWED to CHANGE THE ORIGINAL COPYRIGHT NOTICE. See the
|
|
GNU Library General Public License for more details. You should have
|
|
received a copy of the GNU Library General Public License along with
|
|
the PNK; if not see http://www.gnu.org/. An application using the
|
|
Petri Net Kernel MUST GIVE NOTICE OF THIS USE. Please contact
|
|
ag-pnk@informatik.hu-berlin.de to notify this application.
|
|
|
|
|
|
Quick Start
|
|
-----------
|
|
|
|
This is just a crash course to get the Petrinet Kernel running. It
|
|
should give you an overview how to use the Petrinet Kernel. I'm
|
|
leaving out some important details which will be added soon ...
|
|
|
|
NOTE: It is important that you have installed the jdk1.2.x to use the
|
|
Petrinet Kernel. Otherwise download it from java.sun.com. If you don't
|
|
know which jdk version is installed on your system, you may check this
|
|
by calling the java interpreter's -version option.
|
|
|
|
>java -version
|
|
|
|
|
|
Download and Run
|
|
----------------
|
|
|
|
Download the latest PNK2alpha.jar file. Extract the archive on the command
|
|
line by typing
|
|
|
|
>jar xvf PNK2alpha.jar
|
|
|
|
This creates a new directory PNK2/ containing the source and class
|
|
files of the Petrinet Kernel. Now you may change to PNK2/ directory
|
|
|
|
>cd PNK2
|
|
|
|
and take a look at it's contents. You should find something like this
|
|
|
|
* jaxp.jar - api for reading and writing xml files
|
|
* crimson.jar - api for reading and writing xml files
|
|
* PNK2.jar - archive of the Petrinet Kernel's class files
|
|
* PNK2sources.jar - archive of the Petrinet Kernel's source files
|
|
* Makefile - with this you may compile sources by hand
|
|
* sampleNets - contains some saved netexamples
|
|
* netTypeSpecifications - contains examples for a net's specification
|
|
* toolSpecification - contains some toolspecification examples
|
|
* icons - icons used by applications
|
|
|
|
Then start up Petrinet Kernel using the -jar option of the java
|
|
interpreter.
|
|
|
|
>java -jar PNK2.jar
|
|
|
|
You may also compile sources by hand. Therefore you possibly have to
|
|
extract a source file archive.
|
|
|
|
>jar xvf PNK2sources.jar
|
|
|
|
This command installs a directory tree of source files. Now take
|
|
notice of the makefile in the PNK2/ root directory. Modify it to your
|
|
requirements and enter
|
|
|
|
>make run
|
|
|
|
This command should compile all files and run the Petrinet Kernel. If
|
|
it does not, please check the path to your java2 interpreter and java2
|
|
compiler. You may edit the path in the headline of the makefile.
|
|
Verify also the correctness of the CLASSPATH variable. It should at
|
|
least point to the crimson.jar and jaxp.jar archives distributed with
|
|
the pnk.jar archive. These two file archives are necessary for loading
|
|
and writing xml and pnml files.
|
|
|
|
If the makefile doesn't work you may generally start the Petrinet
|
|
Kernel by typing a commandline like this:
|
|
|
|
>java -classpath .:jaxp.jar:crimson.jar \
|
|
de.huberlin.informatik.pnk.appControl.ApplicationControl [<toolspec>]
|
|
|
|
In this case it is important that you are currently in the root
|
|
directory of the Petrinet Kernel. The `toolspec` argument is
|
|
optional and should point to a valid `toolSpecification.xml` file.
|
|
This file contains data of known nettypes and their applications.
|
|
It is recommended that you compose your own specification file.
|
|
Therefore you find some examples in the `toolSpecifications/` directory.
|
|
|
|
|
|
First steps - Open, Edit and Save Nets
|
|
--------------------------------------
|
|
|
|
Now I will give you a short tutorial how you can play around with the
|
|
Petrinet Kernel. In this section I tell you how you may open or edit
|
|
nets and how you may invoke applications to work on your net. When
|
|
launching the Petrinet Kernel the ApplicationControl's window should
|
|
appear.
|
|
|
|
In the ApplicationControl's menubar you find a File menu for opening
|
|
existing nets, creating new nets and saving nets. There should also be
|
|
a Net menu for starting applications or switching between them. At
|
|
first you have to choose your nettype. You may open the File menu. If
|
|
you select the File -> new Net menuentry a submenu with a list of
|
|
different nettypes appears. Click on one of these menuitems. You can
|
|
also select the File -> Open menuentry to open an existing net. Some
|
|
interesting netexamples are stored in the sampleNets/ directory.
|
|
|
|
As default a editor start's to display the net. Everytime you invoke
|
|
an application it's menu is shown in the ApplicationControl's menubar.
|
|
So now you should find there the editor's menu. You may add objects
|
|
like places, transitions and arcs to the net.
|
|
|
|
In the editor's menu you select the Place checkbox or the Transition
|
|
checkbox. Then click on an open editorpage. Every mouseclick should
|
|
create a new object. Then choose the Arc checkbox and mouseclick on a
|
|
place. The place should change it's color indicating that it is
|
|
selected as an arc's initialnode. Now mouseclick a transition and a
|
|
new arc appears. You may want to drag around some places and
|
|
transitions to make your net look lovely. You achieve this by
|
|
mouseclicking in an object and hold the mousebutton pressed while
|
|
moving your mouse. After this you usually want edit the extensions of
|
|
some objects. For example set the name and marking of places, the
|
|
inscriptions of several arcs or the guards of transition. Which of
|
|
these extensions exists depends on the nettype. To edit an extension
|
|
you choose the Edit checkbox in editor's popupmenu. Now a mouseclick
|
|
on a place, transition or arc will open a dialog frame where you may
|
|
set new values for the objects extensions. Then it is recommended that
|
|
you save your net with the File -> save or File -> save as menu and
|
|
choose ApplicationControl's Net menu to start a further application
|
|
for example a simulator.
|
|
|
|
|
|
Start a first Simulator Session
|
|
-------------------------------
|
|
|
|
Choose Net -> Start Application -> Simulator. This creates a new
|
|
instance of the simulator. Now the simulator's menu should appear in
|
|
the ApplicationControl's menubar. You should also see a dialog frame
|
|
with a CANCEL button. To run the simulator choose the Simulator ->
|
|
Start menu from ApplicationControl's menubar. If there is any
|
|
concessioned transition in the net the simulator will emphasize it in
|
|
the editor. You may fire a concessioned transition by mouseclicking
|
|
into it. Continue these steps until you are tired or there is no
|
|
concessioned transition anymore. In the first case press the CANCEL
|
|
button in the simulator's dialog frame. (It is recommended that you
|
|
don't choose Simulator -> Stop from ApplicationControl's menubar,
|
|
because it's not yet correctly implemented.) In the last case the
|
|
simulator stops automatically.
|
|
|
|
|
|
Distributed Files
|
|
-----------------
|
|
|
|
Root directory:
|
|
|
|
./Makefile
|
|
./README.txt
|
|
./PNK2.jar
|
|
./PNK2src.jar
|
|
./jaxp.jar
|
|
./crimson.jar
|
|
./sampleNets
|
|
./netTypeSpecifications
|
|
./toolSpecifications
|
|
./gpl.txt
|
|
./License-ASF
|
|
./License-RI.html
|
|
|
|
Examples for toolspecifications ...
|
|
|
|
* toolSpecifications/:
|
|
|
|
+ net2pnmlApp.xml
|
|
+ toolSpecification.dtd
|
|
+ toolSpecification.xml
|
|
+ toolSpecification1.xml
|
|
+ toolSpecification2.xml
|
|
+ toolSpecification3.xml
|
|
|
|
Examples for nettypespecifications ...
|
|
|
|
* netTypeSpecifications/:
|
|
|
|
+ BlackTokenNet.xml
|
|
+ Echo.xml
|
|
+ GHSGraph.xml
|
|
+ HLNet.xml
|
|
+ PTNet.xml
|
|
+ bagNet.xml
|
|
+ dawnGuard.xml
|
|
+ graph.xml
|
|
+ netTypeSpecification.dtd
|
|
+ netTypesPytJava.table
|
|
+ signatureTable.dtd
|
|
+ signatureTable.xml
|
|
+ subrange.xml
|
|
+ timedNet.xml
|
|
|
|
|
|
There are also some examples for nets ...
|
|
|
|
* sampleNets/:
|
|
|
|
+ HLDinner.net
|
|
+ ProducerConsumerSystem.pnml
|
|
+ ProducerConsumerSystem1.pnml
|
|
+ ProducerConsumerSystem2.pnml
|
|
+ ProducerConsumerSystem3Pages.pnml
|
|
+ bag.pnml
|
|
+ blackToken.pnml
|
|
+ connectivity.pnml
|
|
+ connectivity.xml
|
|
+ dinner.net
|
|
+ echo.pnml
|
|
+ echoInit.pnml
|
|
+ maximumFinding.pnml
|
|
+ maximumFinding.xml
|
|
+ ptNet.pnml
|
|
+ ptNet.xml
|
|
+ shortestPath.pnml
|
|
+ shortestPath.xml
|
|
+ subrange.pnml
|
|
+ timeNet.pnml
|
|
+ wzk.net
|
|
|
|
The Petrinet Kernel's sources are a bunch of packages ...
|
|
|
|
* de.huberlin.informatik.pnk.kernel:
|
|
|
|
+ Arc.java
|
|
+ BlockStructure.java
|
|
+ Edge.java
|
|
+ Extendable.java
|
|
+ Extension.java
|
|
+ Graph.java
|
|
+ Kerntest.java
|
|
+ Member.java
|
|
+ NameExtension.java
|
|
+ Net.java
|
|
+ Node.java
|
|
+ Place.java
|
|
+ PlaceArc.java
|
|
+ Specification.java
|
|
+ SpecificationTable.java
|
|
+ Transition.java
|
|
+ TransitionArc.java
|
|
|
|
* de.huberlin.informatik.pnk.kernel.base:
|
|
|
|
+ ActionObject.java
|
|
+ ChangeExtension.java
|
|
+ ChangeSourceAction.java
|
|
+ ChangeTargetAction.java
|
|
+ DeleteAction.java
|
|
+ FlattenAction.java
|
|
+ JoinInterfaceNodeAction.java
|
|
+ NetObservable.java
|
|
+ NetObserver.java
|
|
+ NewArcAction.java
|
|
+ NewBlockAction.java
|
|
+ NewNetAction.java
|
|
+ NewPlaceAction.java
|
|
+ NewPlaceArcAction.java
|
|
+ NewTransitionAction.java
|
|
+ NewTransitionArcAction.java
|
|
+ RegisterInterfaceAction.java
|
|
+ RegisterSonAction.java
|
|
+ SplitInterfaceAction.java
|
|
+ UnregisterInterfaceAction.java
|
|
+ UnregisterSonAction.java
|
|
|
|
* de.huberlin.informatik.pnk.app:
|
|
|
|
+ Application.java
|
|
+ ApplicationB.java
|
|
+ BspApplication1.java
|
|
+ BspApplication2.java
|
|
+ GHSSimulator.java
|
|
+ GraphAlgorithmSimulator.java
|
|
+ MarkingsToInitial.java
|
|
+ Simulator.java
|
|
|
|
* de.huberlin.informatik.pnk.app.base:
|
|
|
|
+ AnnotateObjectsAction.java
|
|
+ ApplicationACInterface.java
|
|
+ ApplicationAWInterface.java
|
|
+ ApplicationNetDialog.java
|
|
+ ApplicationRequests.java
|
|
+ EmphasizeObjectsAction.java
|
|
+ MetaActionObject.java
|
|
+ MetaApplication.java
|
|
+ MetaJFrame.java
|
|
+ NetObserver.java
|
|
+ ResetAnnotationsAction.java
|
|
+ ResetEmphasizeAction.java
|
|
+ SelectObjectAction.java
|
|
+ SelectObjectsAction.java
|
|
+ StructuredNetObserver.java
|
|
+ UnAnnotateObjectsAction.java
|
|
+ UnEmphasizeObjectsAction.java
|
|
|
|
* de.huberlin.informatik.pnk.appControl:
|
|
|
|
+ AAObject.java
|
|
+ ACResources.java
|
|
+ ANObject.java
|
|
+ ATObject.java
|
|
+ ApplicationControl.java
|
|
+ ApplicationControlMenu.java
|
|
+ CTObject.java
|
|
+ IOTObject.java
|
|
+ InOut.java
|
|
+ NFObject.java
|
|
+ NTObject.java
|
|
+ NetInOut.java
|
|
+ NetParseException.java
|
|
+ PNKClassLoader.java
|
|
+ PNKDialog.java
|
|
+ PnmlInOut.java
|
|
+ TestInOut.java
|
|
+ ToolSpecification.java
|
|
+ Viewer.java
|
|
|
|
* de.huberlin.informatik.pnk.appControl.base:
|
|
|
|
+ ACApplicationInterface.java
|
|
+ PnkFileFilter.java
|
|
|
|
* de.huberlin.informatik.pnk.netElementExtensions.base:
|
|
|
|
+ FiringRule.java
|
|
+ Inscription.java
|
|
+ Marking.java
|
|
+ Mode.java
|
|
+ Type.java
|
|
|
|
* de.huberlin.informatik.pnk.editor:
|
|
|
|
+ AllSelectedDialog.java
|
|
+ Annotation.java
|
|
+ Arc.java
|
|
+ Draw.java
|
|
+ Edge.java
|
|
+ EditDialog.java
|
|
+ Editor.java
|
|
+ EditorMenu.java
|
|
+ EditorWindow.java
|
|
+ Extension.java
|
|
+ GraphProxy.java
|
|
+ GruenLookAndFeel.java
|
|
+ Label.java
|
|
+ LogoWin.java
|
|
+ MemberSprite.java
|
|
+ MemberSpriteNode.java
|
|
+ NetLoader.java
|
|
+ NetWriter.java
|
|
+ Node.java
|
|
+ Page.java
|
|
+ PageMouseListener.java
|
|
+ PageVector.java
|
|
+ Place.java
|
|
+ PlaceArc.java
|
|
+ ReferenceTable.java
|
|
+ SelectDialog.java
|
|
+ Sprite.java
|
|
+ SpriteVector.java
|
|
+ Transition.java
|
|
+ TransitionArc.java
|
|
+ ViewPane.java
|
|
|
|
* de.huberlin.informatik.pnk.exceptions:
|
|
|
|
+ ExtensionValueException.java
|
|
+ KernelUseException.java
|
|
+ NetSpecificationException.java
|
|
|