README.rdoc

Path: README.rdoc
Last Update: Sat Aug 31 14:29:14 +0000 2013

ruote

Ruote is a Ruby workflow engine. It‘s thus a workflow definition interpreter. If you‘re enterprisey, you might say business process definition.

Instances of these definitions are meant to run for a long time, so Ruote is oriented towards persistency / modifiability instead of transience / performance like a regular interpreter is. A Ruote engine may run multiple instances of workflow definitions.

Persistent mostly means that you can stop Ruote and later restart it without losing processes. Modifiability means that you can modify a workflow instance on the fly.

Process definitions are mainly describing how workitems are routed to participants. These participants may represent worklists for users or group of users, pieces of code, …

usage

grab ruote

  gem install ruote
  gem install yajl-ruby

Note : the json gem has a serious bug :

  http://github.com/flori/json/issues#issue/21

So yajl-ruby is seriously recommended.

Then

  require 'rubygems'
  require 'ruote'
  require 'ruote/storage/fs_storage'

  # preparing the engine

  engine = Ruote::Engine.new(
    Ruote::Worker.new(
      Ruote::FsStorage.new('ruote_work')))

  # registering participants

  engine.register_participant :alpha do |workitem|
    workitem.fields['message'] = { 'text' => 'hello !', 'author' => 'Alice' }
  end

  engine.register_participant :bravo do |workitem|
    puts "I received a message from #{workitem.fields['message']['author']}"
  end

  # defining a process

  pdef = Ruote.process_definition :name => 'test' do
    sequence do
      participant :alpha
      participant :bravo
    end
  end

  # launching, creating a process instance

  wfid = engine.launch(pdef)

  engine.wait_for(wfid)
    # blocks current thread until our process instance terminates

  # => 'I received a message from Alice'

test suite

see github.com/jmettraux/ruote/tree/ruote2.1/test

license

MIT

Links

ruote.rubyforge.org github.com/jmettraux/ruote

jmettraux.wordpress.com (blog)

feedback

mailing list : groups.google.com/group/openwferu-users irc : irc.freenode.net ruote

[Validate]