about processes and engines

Archive for the ‘openwfe’ Category

article in ‘Software Design’ 2007 11

すごい !

Sakaguchi-san did something great for OpenWFE, again.

At first he had translated the OpenWFE manual, entirely from English to Japanese. Then he translated the OpenWFEru website from English to Japanese.

And now he wrote a full article about OpenWFE and OpenWFEru that got published in the next “Software Design“. I’m looking forward grabbing a copy of the magazine by the end of the week. Deciphering the article will be another thing.

I’m really indebted to Sakaguchi-san, I hope he likes Gruyere cheese :)

Written by John Mettraux

October 15, 2007 at 8:32 am

enterprise 2.0

2 weeks ago, at the RubyKaigi, I was lucky enough to meet Matz-san (the father of Ruby), Sasada Koichi, Dave Thomas, Tim Bray, Thomas Enebo and Charles Nutter, and so many great japanese Ruby aficionados, so many business cards (and many respect).

This week, focus on BPM and Workflow; I met Ismael Ghalimi and Jacques-Alexandre Gerber of Intalio.

Ismael and Jacques presented their ideal and their implementation of BPM 2.0. They were and are audacious, they have experience and endurance; they can, without shame, use the term “leader” when it comes to Business Process Management.

Ismael also talked briefly about his vision of “Enterprise 2.0 = BPM 2.0 + Office 2.0”. I’m looking forward seeing their implication in the “BPM on demand” field. Office 2.0 applications as emerging points of a bigger BPM 2.0 drive.

I particularly liked the BPMS implementation cases and their “lessons learnt” points.

Intalio demand driven development (d3) was discussed as well, Jacques highlighted the fact that software artifacts demanded via d3 and produced were also maintained, that’s so important.

I have to say that I’m not a fan of BPEL, I think it’s biased towards SOAP services. They’re talking about making it REST aware, I really hope they won’t push any hideous WADL complementing WSDL. Essence to Dogma, bad.

Unfortunately, I missed the opportunity to talk to Wakizaka-san. Meet you next time !

This Enterprise 2.0 seminar was organized by Sawada-san (thanks a ton !).

Written by John Mettraux

June 27, 2007 at 2:38 am

Posted in bpm, bpms, openwfe, workflow

for the week-end

I spent a nice week-end attending a wedding in the north. A cool breeze from the sea was very much welcome.

I was also quite delighted when, just before leaving, I exchanged a few emails with someone in a company in the southern hemisphere, she was explaining me they were using OpenWFE quite happily inside one of their products and they even had built a BPMN designer for it.

As their company acquired a BPM vendor, they will be heading on maybe greener pastures, the mail was anyway quite rewarding. I wish them good luck.

Written by John Mettraux

June 24, 2007 at 11:10 pm

Posted in java, openwfe


I’ve been playing with that idea for a while. Participants in business processes are just channels, workitems are just messages.

OpenWFEru 0.9.11 will add a new ‘listen’ expression, for listening to those channels (instead of simply emitting messages to them).

listening to participant "alpha"

Listening to participant ‘alpha’, notifying participants ‘bravo’ and ‘charly’ with a copy of the next workitem dispatched to ‘alpha’.

Switching to a Ruby process definition, it feels lighter…

listening to participant "alpha" (specific customer)

This time, participants bravo and charly are interested by a copy of the next workitem coming back from participant alpha concerning customer “Acme”.

The scope of this listen expression is not limited to a single process instance, it thus opens up easy (looser ?) correlation points among process instances. Possibilities are for another blog post.

It should have been part of OpenWFE[ru] sooner, but I never could make up my mind on how to do it right (a little bit).

There are more options, they are documented in the expressions documentation page.

Written by John Mettraux

May 29, 2007 at 10:37 am

Posted in bpm, openwfe, openwferu, workflow


I had forgotten to document the ‘timeout’ feature of the participant expression. It’s documented for OpenWFEja but not for OpenWFEru. This has been fixed.

Until now, the timeout concept in OpenWFEru was limited to the participant expression and the when expression. For OpenWFEru 0.9.11, I’ve implemented a “timeout” expression :


The sequence of participants bravo and charly will timeout after three days. [Johnny] bravo itself will timeout after twenty hours (timeout attribute of the participant expression).

It wraps its child expression with a timeout behaviour.

Somehow the question is : why didn’t I do that in the first place ? No need thus to have an attribute ‘timeout’ for the participant expression… Well, trial and errors and the ‘timeout’ attribute makes for concise process definitions (and it’s backward compatible).

PS 1 – pastie is nice
PS 2 – I’ve written a bit more documentation on expressions and on patterns.

Written by John Mettraux

May 27, 2007 at 8:49 am

Posted in bpm, openwfe, openwferu, workflow

silent worklist

Yes, I’m a bit silent these days : I’m working on a Ruby implementation of the old style REST interface (2002) for OpenWFE engine and worklist.

I’ll have to check if it works from the pnuts, .NET, python and perl connectors that are available.

Perhaps I’ll add REST methods for adding (posting) new stores to a worklist… This feature is very demanded. Fortunately Ruby makes it easy (Ruby makes plenty of things easy).

Next, I’ll focus on making sure that OpenWFEru runs 100% on JRuby, as this fine bridge (trojan horse ?) is nearing its 1.0 release.

Written by John Mettraux

May 21, 2007 at 12:27 pm

the state of our ruby workflow engine (2)

An enumeration of points on the current development status of our open source Ruby workflow and bpm engine, like done previously.

* almost all of the OpenWFE expressions got implemented. There are some variations, for example, in OpenWFEja, there was a <do> expression for tagging a block of code for further undo/redo operations. Now all expressions can be tagged with the ‘tag’ attribute.

* OpenWFEru is not limited anymore to XML expressed process definitions, it now understands processes defined as Ruby classes (like in the quickstart for example), this allows for interesting process definitions ‘macros’ in Ruby.

* speaking of expressions, an extensive listing of workflow control patterns is being written, we are at pattern 10 right now.

* it’s a pure open source Ruby workflow engine, developed on “ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.3]”, tests on JRuby (0.9.9) seem promising, there seem to be only an issue when safe levels are set.

* there are now two ‘spin-off’ to OpenWFEru : openwferu-scheduler and openwferu-sqs.

* a simple and effective persistence implementation is now in place. It stores process instances and workitems in files using YAML. Other implementation are being planned, there will most likely be something with ActiveRecord, but nothing sure for now.

* a process journaling system is integrated into OpenWFEru, replaying processes is possible. The current weak point for this system is documentation, it’s an advanced technique, the ‘replay’ aspect is hard to explain in an easy way.

* a mini web application for viewing process definitions in a graphical way has been written, it could make its way into the source repository soon. It’s Rails based.

* there is a fair amount of documentation, of course, contributions are welcome.

* I’ve been receiving lots of request for a Rails integration, but no help actually (contributesume), I’ll probably start exploring that myself, earning my Rails dev badge on the way.

There are lots of other small things, but this is sufficient for now.

I’ll probably release 0.9.9 this week.

quickstart / download / feedback

Written by John Mettraux

April 10, 2007 at 9:32 am


I’ve started to produce a “template” at engine_template.rb, it’s a piece of Ruby code, but you can think of it as a configuration file.

It shows how to configure an OpenWFEru workflow engine, it should gather all the variants and options in a single place. I’ll make sure to keep it complete and well commented.

Written by John Mettraux

March 30, 2007 at 2:20 am

OpenWFEru 0.9.7 released

OpenWFEruThe full “press release” is available from

You can get OpenWFEru via “gem install openwferu” or by direct download.

Thanks to Patrice Cappelaere for the ‘parameter’ feature suggestion and the excellent feedback he gave.

I’m working hard on the journaling feature for the next release, I’m also trying to improve the documentation on each of the expressions available in the OpenWFE[ru] process definition language.

Written by John Mettraux

March 23, 2007 at 9:03 am

workflow instance id

Each time the OpenWFE engine interprets a process definition and launches a process instance (workflow instance), it attributes a brand new and unique (locally) workflow instance id (to make it unique in space, other info are included beyond this workflow instance id, such as the engine id and the process definition name and revision).

Up until now, OpenWFE and OpenWFEru were both relying on a simple clock based mechanism for generating integer ids, vulnerable to ‘clock back’ issues.

In the past, I’ve had to deal with broken processes where we had to roam through a large number of processes all designated by their integer (long) workflow instance id. As I wanted to make it easier to grasp instance ids, I implemented Kotoba.

The KotobaWfidGenerator which uses the Kotoba library is now the default OpenWFEru wfid generator. It produces ids like 20070322-bobupogigu, 20070322-bodahegowa or 20070322-bodatewari.

If you don’t like it, you can override this ‘default’, the old integer wfid style is still available and I have added a UUID based wfid generator for the purists.

require 'openwfe/engine/file_persisted_engine'

class MyEngine < OpenWFE::FilePersistedEngine
    def build_wfid_generator
        init_service(S_WFID_GENERATOR, UuidWfidGenerator)

engine =


This current UuidWfidGenerator uses any underlying “uuidgen” unix command and tries to enforce time-based UUIDs and not random-based ones. I’ll certainly soon add a workflow instance id generator based on a pure Ruby generator. My favourite for now is the one found within the reliable messaging project.

This new generator system will be available in the 0.9.7 OpenWFEru release. The generators in this system have been tightened against “back clock” issues.

Written by John Mettraux

March 22, 2007 at 2:25 am