Hi, I started work on an implementation for a Coloured Petri-Nets simulator. A current snapshot of the code and a link to an introduction to CPNs can be found at http://www.inf.tu-dresden.de/~tr16 . CPNs (or Petri Nets in general) are used to model possibly distributed systems. Dependencies can be modelled a lot better than with normal state machines and they are more powerful than most types of automatons. Additionally, they are easy to read. If you don't know anything about Petri-Nets, I really recommend to read an introduction. They're cool :)
Once finished and used they should make a lot of POE stuff easier to maintain and develop. I guess I will demonstrate it with a CPN for the client ftp module (after the editor is usable). I plan (and have started writing) a simple editor / simulator GUI frontend (cpne), which should make everything a lot more comfortable. There are quite a few differences between the nets that use ML and this implementation. Perl hasn't got a real type system nor is it a functional programming language. Therefore arc expressions must determine the tokens on _their_ place that could be part of a step (and determine the bindings). Guard expressions need to check equality of bindings explicitely, there can be no real implicit check because you cannot automatically compare without types. Outgoing arcs just produce tokens. There are no docs (there are detailed design plans but not in digital form) yet. API might change. Work on libraries has just started. Embedding the net in POE sessions has not been tested, but this is not a lot of code so this should work I guess. Fortunately the core CPN code (PetriNet::Coloured, PetriNet::Coloured::(Place,Transition)::* should work, although I have just tested it with t/test1.pl. More testing will follow once cpne can be used. Maybe hierarchical nets. I do not plan to implement analysis functions for nets right now. Please tell me if you are interested in more information or would like to contribute, e.g. with the java stuff ;) Torvald
