Skip to content

tosch/ruote

This branch is 715 commits behind jmettraux/ruote:master.

Folders and files

NameName
Last commit message
Last commit date
Aug 1, 2011
Aug 8, 2011
Nov 24, 2010
Aug 8, 2011
Oct 16, 2010
Aug 8, 2011
Aug 4, 2011
Dec 24, 2010
May 12, 2011
Apr 25, 2011
Aug 1, 2011
Dec 7, 2009
Aug 1, 2011

Repository files navigation

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/master/test

license

MIT

feedback

About

a ruby workflow engine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 99.9%
  • Shell 0.1%