public
Description: a ruby workflow engine
Homepage: http://ruote.rubyforge.org
Clone URL: git://github.com/jmettraux/ruote.git
ruote /
name age message
file .gitignore Thu Aug 13 19:31:36 -0700 2009 ignoring .yardoc and ruote_rdoc [jmettraux]
file CHANGELOG.txt Tue Jun 09 19:24:52 -0700 2009 passing context to fexp at initialization time [jmettraux]
file CREDITS.txt Mon Nov 23 02:22:26 -0800 2009 credits++ [jmettraux]
file LICENSE.txt Wed Aug 05 06:53:57 -0700 2009 added license file and minor tweak in test/unit... [jmettraux]
file README.rdoc Tue Nov 10 17:36:09 -0800 2009 ruote2.0 moved to master, changing link [jmettraux]
file Rakefile Mon Dec 14 02:14:05 -0800 2009 Use correct rufus-scheduler [kennethkalmer]
file TODO.txt Tue Nov 03 06:16:54 -0800 2009 stopped the auto rewriting of 'define' nodes in... [jmettraux]
file deps.rip Wed Aug 05 20:59:25 -0700 2009 gem installation for ruby_parser and sexp_proce... [jmettraux]
directory doc/ Tue Aug 11 06:19:35 -0700 2009 rakefile and rdoc (yard) [jmettraux]
directory examples/ Thu Sep 24 21:48:20 -0700 2009 added the quickstart to examples/ [jmettraux]
directory lib/ Thu Dec 10 17:31:29 -0800 2009 apply? is easier to re-grasp than skip? [jmettraux]
file mruby.rb Thu Jun 04 23:56:48 -0700 2009 EM tests back in the green [jmettraux]
file ruote.gemspec Mon Dec 14 02:17:54 -0800 2009 Use correct rufus-scheduler [kennethkalmer]
directory test/ Thu Dec 10 17:31:29 -0800 2009 apply? is easier to re-grasp than skip? [jmettraux]
README.rdoc

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

  require 'rubygems'
  require 'ruote/engine'

  # preparing the engine

  engine = Ruote::FsPersistedEngine.new

  # 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

  pid = engine.launch(pdef)

  sleep 1

  # => 'I received a message from Alice'

test suite

see github.com/jmettraux/ruote/tree/master/test

license

MIT

Links

ruote.rubyforge.org rubyforge.org/projects/openwferu

jmettraux.wordpress.com (blog)

feedback

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