arunhorne has asked for the wisdom of the Perl Monks concerning the following question:


My work often involves a series of discrete steps (tasks) that are performed on given inputs and produce given outputs that become inputs for the next step. Clearly this kind of structure could be formalised and described using a labelled directed graph, or to be more accurate and regulate the flow of information through the graph a petri-net.

This idea is already utilised in the Houdini graphics system ( and also the Kensington Discovery platform ( I would like to utilise a similar approach in my own work. Does anyone know of any good starting points? For example, I am considering writing a reusable library to generically support tasks of this type where an XML description of different nodes types (tasks) and data types (edges, data flows) describes a mapping to the actual task and datatype implementations -- the most logical mapping being one Datatype/Task per object. This would allow new tasks and datatypes to be easily added. Further to this I would then have a second XML definition describing the actual structure of a set of tasks. Finally an set of core code would then take this definition and execute the tasks in order to produce results.

Has anyone used a similar approach before? The users of my work in the scientific community are often not programmers so this high level approach would suit the work well. Can anyone recommend any modules that could help or indeed is there a name that this sort of technique usually goes by so I could find out more about it?

Thanks for any comments

  • Comment on Speculation Time: PetriNets and Reusable Tasks and Data Flows

Replies are listed 'Best First'.
Re: Speculation Time: PetriNets and Reusable Tasks and Data Flows
by lachoy (Parson) on Jun 30, 2003 at 16:44 UTC
Re: Speculation Time: PetriNets and Reusable Tasks and Data Flows
by monsieur_champs (Curate) on Jun 30, 2003 at 17:49 UTC

    Dear arunhorne

    I had just finished an end-course undergraduation work about the Petri Net Kernel, an almost complete library to handle, represent and analyse Petri Nets of any kind using java (/me quickly wash my mouth with soap). I wrote a tool to build the reachability tree of a given Place / Transition Petri Net. It is a nice data structure, quite usefull to determine if a Petri Net have some "good" properties.

    My next step would be contact professor Michael Weber, from the Humboldt Universitšt zu Berlin and ask him to help me to rewrite the entire library to Perl. Maybe you have some interest in this work too. I would love to hear some comments / tips / informations on this subject from you.

    I have the firm intention of aquiring a master degree on this subject, and will write professor Weber right now.

    Just Another Perl Monk

Re: Speculation Time: PetriNets and Reusable Tasks and Data Flows
by adrianh (Chancellor) on Jul 01, 2003 at 21:35 UTC

    I'm not really up to speed on Petri Nets, but from what little I know I think that POE would be a good fit for the implementation of the state-machine/graph traversal stuff. Worth looking at anyway.