ruote - open source ruby workflow and bpm engine Developed by John Mettraux jmettraux.wordpress.com Presented by Kenneth Kalmer in 20 minutes opensourcery.co.za
Workflows? BPM? “Improved state machine”
Long running processes, long-lived process interpreter
Diverse participants
Complex rules & decisions
Implement clearly defined business processes
Joe's Mortgages Applies on your behalf at seven different institutions
Selects the best deal for you
Handles application for you
You sign
You buy
You pay
State Machine :requested
:evaluation
:acquired
:accepted
:applied
:approved Where?
When?
Rate?
Comparison?
Who?
Rule: Notify Client when 4 quotes are received aasm_state :pending_four_left aasm_state :pending_three_left aasm_state :pending_two_left aasm_state :pending_one_left aasm_state :pending_but_notified_client ... aasm_state :is_this_ridiculous_or_what?
Rule: Wait up to 7 days for quotes aasm_state :pending_four_remaining_timeout aasm_state :pending_three_remaining_timout aasm_state :pending_two_remaining_timout aasm_state :pending_one_remaining_timout … aasm_state :call_recruiter_for_new_dev!
Recap State machines are only valuable when they have a few, well defined states
Tempted to setup hundreds of states, with complex transitions
State machines help manage the  results  of real life processes, not the  processes
Modified State Machine class Mortgage aasm_initial_state :pending aasm_state :pending aasm_state :quoted aasm_state :applied aasm_state :approved aasm_state :rejected end
Enter ruote Clearly defined DSL for workflow
Clearly defined processes Expressions
Participants Concurrent tasks
Timeouts
Easy decision making
Expressions Utility statements that give structure to your processes
Conditional statements that facilitate branching and merging patterns

Ruote in 20 Minutes