Sha256: fb63908524cfb9141d76d876ab5cfdf03f71950077cc718d378e26bd0a6020e1

Contents?: true

Size: 1.9 KB

Versions: 10

Compression:

Stored size: 1.9 KB

Contents

= 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'
  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 http://github.com/jmettraux/ruote/tree/ruote2.1/test


== license

MIT


== Links

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

http://jmettraux.wordpress.com (blog)


== feedback

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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ruote-2.1.10 README.rdoc
ruote-2.1.9 README.rdoc
ruote-2.1.8 README.rdoc
ruote-2.1.7 README.rdoc
ruote-2.1.6 README.rdoc
ruote-2.1.5 README.rdoc
ruote-2.1.4 README.rdoc
ruote-2.1.3 README.rdoc
ruote-2.1.2 README.rdoc
ruote-2.1.1 README.rdoc