restful workflow engine (on Sinatra)
May 7, 2008It may seem as an exercise, writing something restful. In the first take, I used Ruby on Rails to wrap OpenWFEru with a RESTful interface.
In this second take, I considered the alternatives among the Ruby web frameworks and went for Sinatra by Blake Mizerany.
Ruote-rest is mainly the result of a collaboration with a company which is integrating OpenWFEru (ruote) among its .NET applications. Its software artifacts speak XML over HTTP with ruote.
Ruote-rest, as a “take two”, is also the refinement of the concepts explored in the take one.
So what’s this RESTful workflow/BPM engine ?
It’s named “ruote-rest” and it’s available from GitHub at http://github.com/jmettraux/ruote-rest.
It provides for now 3 resources, /processes, /participants and /workitems (and the special /expressions resource).
- /processes - running [business] process instances
- /participants - participants in the processes (out of the box there are two ‘worklist’ participants provided ‘alpha’ and ‘bravo’, but you can POST others and DELETE those)
- /workitems - the workitems held by ‘worklist’ participants (for human consumption generally)
These resources are sufficient for
- launching processes
- fetching workitems, update their payload and let them resume in their business process
- canceling part or all of a process
- modifying a process on the fly
- adding or removing participants to business processes
Ruote-rest currently provides two representations of its resources, an XML one and an HTML one. The XML representation is meant for automated consumption, the main case, while the HTML one is meant for learning / debugging.
The installation instructions are in the README.txt, and there is also a packaged release available.
— warning : boring technical post ahead —
Posted by John Mettraux

