After a lot of research, I concluded that Petri Nets are well suited for the core of a Workflow engine, because of their mathematical definition and the abundance of analysis algorithms.
For those reasons, most Workflow engines use it.
So, I began to work on a Petri Net implementation starting in July and had a working prototype by the mid term evaluations, allowing to define and execute a basic Petri Net.
As I continued my work, I found that in order to suit the needs of a Workflow engine, the basic Petri Net definition must be extended with the color (a new dimension allowing tokens to transport different kind of data).
Starting from the midterm, I worked on extending the API by adding the color while refactoring and improving what I already had.
At this moment, it is possible to define, visualize (using the GraphViz software) and execute a basic Petri Net.
It is possible to define a colored Petri Net (it might change a bit), but the execution isn’t implemented yet because of the lack of time.
The skeleton is here and I have collected documents about algorithms that can be used to do it.
The Github stats are showing that I have removed 13k lines so the API has already evolved from the first version.
I am quite happy with what I have accomplished, because two months ago I didn’t know what a Petri Net exactly is.
The API and its documentation can be found here.