about processes and engines

Archive for the ‘opensource’ Category

ruote 2.1.11 released

ruote is an open source workflow engine implemented in Ruby.

It takes as input process definitions and interprets them. It routes work among participants according to the flow described in those process definitions. It can orchestrate ping pong matches as well.

The main motivation behind this release is Torsten being tired of advising people to use ruote edge (thanks Bundler) for their ruote-kit installs, ruote was more than ripe for a new release. This version includes the result of the feedback of numerous people, as the changelog can attest.

I’ll address here two aspects, one in ruote itself, and one on its periphery.

participant in a workflow

Up until now, participants were registered one by one (order of registration matters).

engine.register_participant 'reception', Acme::ReceptionParticipant
engine.register_participant 'support', Acme::SupportParticipant
engine.register_participant '.+', Ruote::StorageParticipant

Torsten came up with an idiomatic solution in ruote-kit, that was soon promoted to ruote itself :

engine.register do
  reception Acme::ReceptionParticipant
  support Acme::SupportParticipant

All is well in a vanilla world were participants are all known at system startup. People were asking about adding participants on-the-fly. Ruote has always been able to do that :

engine.register_participant 'reception2', Acme::ReceptionParticipant, :site => 'two'

but our reception2 gets registered after the catchall participant, and thus might never receive any workitems. A solution would be to place the participant as second to last :

  'reception2', Acme::ReceptionParticipant, :site => 'two', :position => -2)

But blindly inserting participants isn’t good. Ruote 2.1.11 has a new method for setting the participant list in a single batch :

engine.participant_list = [
  [ '^reception$', 'Acme::ReceptionParticipant', {} ],
  [ '^reception2$', 'Acme::ReceptionParticipant', { 'site' => 'two' } ],
  [ '^support$', 'Acme::SupportParticipant', {} ],
  [ '^.+$', 'Ruote::StorageParticipant', {} ]

Very rough, but full control.

ruote in kit

ruote-kit was kind of left behind at version 2.1.8. Torsten and I resumed its development and brought it to 2.1.11.

Ruote-kit is a web administration console for ruote. Kenneth Kalmer’s genius idea was to make it a rack middleware (component), so that it works standalone or fits nicely in a rails application, under /_ruote/

list of processesview on a process errorlist of participantsview on a workitem

Ruote-kit is more than a web administration console, it’s also an HTTP/JSON based interface to ruote, for example : The entry point of the interface is /_ruote/ all the resources are linked to from this “root”. The links are annotated with “rel” attributes that indicate to clients what stands behind the link.

There is more to it, we’re working on conveying the capabilities of both interfaces HTML / JSON from the HTML (the one that is easily navigated by a human and his browser).

storages got updates

ruote-dm, ruote-redis, ruote-couch have been upgraded to 2.1.11.

Note that there is a piece of documentation on how to implement storages that is in the works as it was requested by people who want to have a MongoDB backend.

next steps

Still have to release an updated ruote-amqp, and bring ruote-beanstalk to 2.1.11. Then it will be time to think about 2.1.12. As said, there is still work to do on ruote-kit, and since it’s used by many ruote people, it deserves full attention.

Many thanks to Eric Platon, Nathan Stults, Asier, Hartog de Mik, Brett Anthoine, Eric Smith, Kaspar Schiess, David Greaves, Rich Meyers, Kenneth Kalmer, Don French and David Goodlad (and many others) for their contributions !

source :
mailing list :
doc :
irc : #ruote on


Written by John Mettraux

October 5, 2010 at 6:07 am

ruote demos and examples

Recently, contributions to ruote have been on the rise.

I’ve listed them on the ruote source page, but here is a small recap :

Torsten is maintaining ruote-on-rails : “A simple example Rails app for demonstrating the usage of ruote in Rails using RuoteKit”.

Eric Dennis has gone a step further with ruote-rails-example, he extended Torsten’s work to add ruote-amqp participants.

David Greaves, in the context of his BOSS project has announced a minimal-ish ruote ruote-amqp setup.

Special kudos as well to David for his ruote overview page in the wiki.

Two other “in the wild” examples of ruote : David Austin‘s qips-wfmgr and Chris Beer‘s fedora-workflow.

Many thanks to all of these people, they are making ruote better.

Written by John Mettraux

June 21, 2010 at 1:43 am

Posted in opensource, ruby, ruote, workflow

workflow patterns and open source wfms

Petia Wohed just announced the latest version of Patterns-based Evaluation of Open Source BPM Systems.

Quoting Petia :

This document is a revision and extension of the BPM center report. For those of you, familiar with the earlier report, the technical evaluations has not changed. In the latest version we
have extended the outlook and improved the presentation.

I particularly like the final part of the new document where considerations for users and developers of open source workflow tools are offered.

Congrats to Petia and all the authors, it’s a huge amount of work.

(reminder : Petia just created a Google group about the Workflow Patterns)

Written by John Mettraux

August 8, 2008 at 12:52 pm

rufus-scheduler 1.0.9 released

just released the “rufus-scheduler” 1.0.9 [gem].

It fixes a few bugs, mainly making jobs visible via get_job(job_id) even when they are right in the middle of execution.

It also introduces 4 new shorter aliases : “at”, “in”, “every” and “cron” (to “schedule_at”, “schedule_in”, “schedule_every” and “schedule” respectively) :

require 'rubygems'
require 'rufus/scheduler' # gem 'rufus-scheduler'

scheduler = Rufus::Scheduler.start_new"3d") do
  # will call the regenerate_monthly_report method
  # in 3 days from now

scheduler.every "10m10s" do
  # every 10 minutes and 10 seconds

scheduler.cron "0 22 * * 1-5" do "activating security system..."
end "Sun Oct 07 14:24:01 +0900 2009" do

Changelog :

– bug #21262 : brought back (proxy) duration_to_f to Rufus::Scheduler
– todo #21251 : added ‘at’, ‘cron’, ‘in’ and ‘every’ shortcut methods
– todo #21203 : keeping track of At and EveryJob until last trigger is over
– todo #20823 : now raising exception in case of bad ‘at’ parameter
– todo #21194 : added trigger_thread to Job class
– todo #21193 : spinned CronLine out to rufus/cronline.rb
– bug #20893 : sometimes unschedule(every_job) not working when job was active (performing). Fixed.

Links :

Thanks to Sean Liu, Adam and Rael for their help.

Written by John Mettraux

July 18, 2008 at 4:52 am

Fujikawa-san on JRuby at Ninjava

I attended a talk by Kouichi Fujikawa at the June Ninjava meeting.

Was an excellent warm-up before the RubyKaigi 2008.

Sorry for the hashed post, “live blogging” before the post-talk beers.

– Fujikawa-san is working for a company developing finance derivatives trading systems
– had the chance to work with ThoughtWorks China
– went to JavaOne 2008
– met Thomas E Enebo, Charles Oliver Nutter, Nick Sieger, Ola Bini

– JRuby supported by Sun Microsystems (especially Tim Bray) and ThoughtWorks
– JRuby is ‘performant’
– good way to get Ruby into the enterprise

– small demo… (classical JFrame demo)

– leveraging JDBC for database support (many drivers, drivers with connection pooling)
– integration of Java libraries (new systems and legacy services)
– at JavaOne08, Ola Bini presented a SpellCheck java library used in a JRuby on Rails application
– Warbler : turns a Rails app into a Java .war
– JRuby Rack (included in Warbler) integration of the Rack Ruby (low level) web framework

– next some slides courtesy of Nick Sieger
— may JRuby interpreters in 1 JVM
— Glassfish [web] app server
— servlet context initialization creates JRuby runtimes and pool them (acquire/dispatch/release)

– more information :
— book by Ola Bini “Practical JRuby on Rails (japanese, about JRuby and Haskell)

– then questions from the audience :
— Zev asking if threads do really magically make things better (more scalable), answer by Lars was mainly about JRuby being able to leverage ‘native’ threads thus multicore
— questions about JRuby and ObjectSpace (various tries between jirb and irb do follow)

The talk by Fujikawa-san was followed by a presentation of iKnow! by Zev Blut :

– “developing and scaling iKnow!”
– (stopping here as he will present this talk on Sunday at the RubyKaigi)

Written by John Mettraux

June 19, 2008 at 12:00 pm

Posted in java, jruby, ninjava, opensource, ruby

eclipses thanks to Sun

Tom Copeland just announced :

We’re migrating RubyForge to a new server this evening. This will mean
a spot of downtime for various things, but hopefully not too much.
Thanks to Tim Bray for getting us a nice new server!

Can’t see my project right now, but waiting.

Thanks to Tom for RubyForge and to Tim and Sun for supporting it.
Tom Tim Sun. Dim sum ?

Written by John Mettraux

October 10, 2007 at 1:34 am

Posted in opensource, openwferu, ruby

sun day link

Maybe I’ll start to believe when they start promoting Ruby on Rails at JavaOne, as opposed to promoting JRuby on Rails at RailsConf.

Sun’s Ruby strategy – Engage and Contain?

Counter-insurrectional operations led by Sun ? More information soon.

Written by John Mettraux

September 23, 2007 at 5:46 am

Posted in java, opensource, ruby

enterprise open source directory

My friends at Optaros have started an enterprise open source directory.

Last year, they had released an open source catalog, as a PDF document, this year, they went far below and are delivering this online directory.

One interesting feature is the request for advice forum, could be good for requesting “meta” help about enterprise-oriented open source software. Not much messages for now, but it seems Optaros has enough experienced staff to handle a heavy question load.

There are already other open source software directories (for example, freshmeat), the EOS Directory brings in study cases and reviews, they try to bring meat around the bones.

I have to say that my current favourite is Ohloh ; a mix between Ohloh and the EOS directory could be good.

Ohloh is more about project metrics and is less enterprisey, whereas the EOS attempts to blend Optaros’ reviews with user generated ones. Ohloh seems to be a company on its own, while for Optaros, their directory is just a tool for showcasing their consultancy work.

I wish them success (please take inspiration or ally with Ohloh).

Once the openwferu on rails is ready (beta), I’ll ask for inclusion in the EOS directory.

Written by John Mettraux

September 3, 2007 at 2:21 pm

Posted in opensource

and other small coders

IBM announces an interesting initiative today that will make it easier for open source programmers and other small coders to put together a range of software, including Web Services.

From Andy Oram at OnJava. No link to the actual IBM announce.

“other small coders” is quite insulting, I guess it comes from IBM. “patent protection” as always, sounds very ‘cosa nostra’.

Written by John Mettraux

July 11, 2007 at 11:33 pm

Posted in blahblah, coding, opensource


Very interesting announce by MenTaLguY on Ruby-Talk :

With all the recent interest in Erlang, I’ve decided to bump up the release schedule of my Omnibus Concurrency Library. It provides a Ruby-esque implementation of actors, as well as a few other concurrency approaches (data-parallel programming and futures, to begin with).

Written by John Mettraux

May 25, 2007 at 4:49 am

Posted in opensource, ruby