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


In reply to Speculation Time: PetriNets and Reusable Tasks and Data Flows by arunhorne

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":