about processes and engines

restful workflow engine

update : the work announced here has been renamed “ruote-kit”, you can find it at

I’ve been working on this vaporous thing / project for a while, now it’s here, in its first iteration. It’s called Kisha (steam train).

The short designation is “RESTful workflow engine”, the long one is “RESTful Rails® enveloppe for an OpenWFEru engine [and a worklist]”.

Kisha is leveraging Ruby on Rails 2.0.2 to present a RESTful interface to the OpenWFEru workflow engine.

This first iteration implements 2 core use cases via 2 resources.

The use cases are :

  • launching a new instance of a process
  • editing and then proceeding/saving a workitem

quick wiki quote :

A business process or business method is a collection of interrelated tasks, which solve a particular issue

The 2 resources are “processes” and “workitems”. Thus, RESTfully yours, these paths are available :

  • /processes the list of processes currently running in the workflow engine
  • /processes/{process_instance_id} accessing a particular process instance
  • /workitems all the workitems awaiting manipulation/proceeding from an external participant (you)
  • /workitems/{workitem_id} a particular workitem

Launching a process is done by POSTing a process/launchitem representation to /processes, while modifying/proceeding a workitem is by PUTting an updated representation of that workitem at /workitems/{workitem_id}.

(there is a working draft enumerating those resources at kisha.txt)

That’s for the theory.

Kisha is available in its first iteration as a zip download or via the source (see this piece of documentation).

For documentation and test purposes, I took care of providing a well-connected set of HTML representations of the resources, here are a few screenshots :

Kisha screenshot

What’s in this first iteration :

  • well connected HTML representations (learn the interface by playing around)
  • Rails ActiveResource JSON and XML representations
  • Atom representations as well
  • Possibility to post resources (/processes for now) via AtomPub
  • limited Authentication scheme ( is trusted as well as the canonical “user” user, via basic http authentication)
  • binary Authorization (once you’re authentified, you can do everything)
  • a chart representation for workitems and processes (it’s taken out of densha)
  • a plain model for participants : there is one ‘catch-all’ participant (an expressions with a typo could be mistaken for a participant)

I’ve tried hard to accept a large set of variants for the process/workitem input (json, xml, yaml, atom entries, …), Kisha should be able to accomodate them all, this has proven the most time consuming aspect for now.

What will be in further iterations :

  • more authentication schemes (Pat is petitioning me about them)
  • a better authorization system (who can launch, who can proceed, who can pause)
  • more resources (process errors, process variables, maybe process definitions, …)
  • why not a /participants resource ?
  • more efficient usage of the resources (etag & co)
  • polishing the AtomPub interactions
  • activity [atom] feed
  • more documentation

Over for now.

Feedback is welcome on the OpenWFEru mailing lists.

Written by John Mettraux

December 20, 2007 at 5:52 am

6 Responses

Subscribe to comments with RSS.

  1. This framework seems really interesting. But I am having a really hard time figuring out how I may use it as a tool.

    Is it meant to facilitate a team working on a process? so they may know which stage they’re at?

    I am involved with online marketing. Would it be beneficial to map out the process I use using this framework?

    Thanks in advance


    December 21, 2007 at 9:03 am

  2. Hi Xin,

    yes, coordination of teamwork is among the goals.

    If you have repeatable processes that you’d like to track and manage (and later change) you might be interested in a workflow engine like OpenWFEru. I wrote a small presentation (quite old by now) showing the implementation of a process, it’s at :

    There are benefits to have Processes and Participants to them as first class citizens in your applications, I’m trying to highlight that with OpenWFEru. And OpenWFEru as a good workflow engine is not limited to running one type/class of process or one version of a process.

    Maybe you’d like to have a look at Densha, an instance of OpenWFEru with a web interface, there is a demo site at

    OpenWFEru is flexible enough to enact highly dynamic processes as well, but that’s for a further discussion.

    Thanks for your interest, if you have further questions, don’t hesitate to ask them at :

    Best regards,


    John Mettraux

    December 21, 2007 at 9:16 am

  3. John,

    The problem is, and has been that you don’t have practical examples of using OpenWFEru in a meaningful way. The examples you do provide are too abstract. That is why this framework hasn’t and will not take off. I’ve seen others make the same comment only for you to bite their heads off, lash out at them and say they should contribute these examples themselves. I downloaded densha, played with it for an hour and still have zero idea what your framework is supposed to do. That is totally uncool of you to waste my time like that.


    December 26, 2007 at 2:45 pm

  4. Hi AC,

    thanks for the feedback, I will digest it and try to produce some piece of useful documentation.

    Maybe the classical “holiday request process” example is a good starting point.

    Sorry for wasting your time. I’m still wondering what brought you here and which problem you were trying to solve when coming here.

    Obviously I have a) not enough introductory material as you pointed out b) something wrong in my overall communication as people that have no need for this piece of work are coming here.

    Merry Christmas, thanks for the feedback,


    John Mettraux

    December 26, 2007 at 3:11 pm

  5. […] working on it as well (with my limited vision), after Kisha, I’ve moved on to […]

  6. […] workflow engine (on Sinatra) It may seem as an exercise, writing something restful. In the first take, I used Ruby on Rails to wrap OpenWFEru with a RESTful […]

Comments are closed.

%d bloggers like this: