Announce: Graph::PetriNet on CPAN
One of the problems I have to solve for my infrastructure is to compute semantic landscapes ("SemScapes" if you were so marketing-ish inclined) with an efficient computation model.
If, for instance, a user has added a new document to the document corpus, then new feature vectors, after that new vector spaces, new convergence models, new landscapes and new maps (as images) have to be generated.
There is a dependency graph, quite similar to one you are used with tools like make. The only difference is that all involved objects are modelled with REST, so have URLs, not just file names. And that any concurrency information should be kept.
Some of these computations are quite fast, some take seconds, but high-resolution renderings might take minutes. Certainly not a time a user will want to wait interactively. These will run in the background, locally or remotely depending on the machines available.
While the default implementation is classically moving tokens around the Petri net, with proper subclassing of the transition nodes you can morph it into a concurrent make for URI resources.
I am currently working on the scheduler (which nodes does what and when), so maybe this goes into Graph::PetriNet at some later point. We'll see.