Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ruote

9,305 views

Published on

Overview of leveraging ruote for your business processes

Published in: Technology
  • Be the first to comment

Ruote

  1. 1. ruotethe awesomeness that is a pure Ruby workflowengine from japan
  2. 2. Kenneth KalmerCTO - Internet Exchangeopensourcery.co.za@kennethkalmergithub.com/kennethkalmer
  3. 3. ruoteDeveloped by John Mettrauxruote.rubyforge.orggithub.com/jmettraux/ruote@jmettraux
  4. 4. ruote != state_machine
  5. 5. operating system forbusiness processes
  6. 6. PlayersEngineWorkersHuman participantsAutonomous participantsAll work to towards achieving a goal, defined in a processdefinition (aka participating in a workflow)
  7. 7. Process DSLRuote.process_definition
:name
=>
fuza
do

sequence
do



participant
:alpha



participant
:bravo

endend
  8. 8. Process definitionsExpressions are used to build a workflowWorkflows can be:LinearParallelNestedand more...
  9. 9. Process instancesProcesses run in isolationThe AST is stored in the engineOriginal code used to launch the process can be alteredwithout affecting running processesProcesses can be versioned
  10. 10. WorkitemsSet the initial “payload” when launching a processWorkitems are passed between participantsParticipants can update workitems, or just readProcess flow can be altered by workitem values
  11. 11. Workitems and flowsRuote.process_definition
:name
=>
loan_approval
do

cursor
do



participant
planning
team



concurrence
do





participant
ceo
:if
=>
${f:total}
>
100000
do





participant
cfo



end



rewind
:unless
=>
${f:approved}



participant
execution
team

endend
  12. 12. Human participantsPersist the workitemLoad it from another application to present to a “human”,which should take actionruote-couchruote-dmruote-redisand more...
  13. 13. Autonomous participantsLocal participants Instantiated classes that respond to #consume()Remote participants ruote-amqp & daemon-kit Scatter your participants over different systems
  14. 14. Notes on participantsThey are abstractionsThey are statelessOnce the engine hands over a workitem to a participant,it will wait indefinitely for a response (unless a timeout isspecified)They rely on the workitem to know what is expected ofthem
  15. 15. Process administrationOften overlooked!Canceling processes, or just part of a process(expression)Re-applying segments of processesGraceful error handling“Callbacks” for process lifecycle
  16. 16. ruote-kitRESTful wrapper around ruoteRich environment for exploring, perfectly capable ofproduction useCan be used as rack middleware (preferably not)github.com/tosch/ruote-kit
  17. 17. In the wildInternet Exchange / ISP in a BoxHuge number of processes running dailyMostly autonomous, humans handle exceptionsProvisions dozens of servicesSome processes involve a dozen participants, running allover the globe and complete within 5 seconds :)
  18. 18. In the wildMeego BOSSUsed to orchestrate the CI ecosystem for the OShttp://wiki.meego.com/BOSS
  19. 19. In the wildFermilabRackspaceUniversidad Politécnica de MadridGeographic Institute of the University of Zuerichand plenty more
  20. 20. ruote.rubyforge.org/quickstart.html
  21. 21. ThanksJohn MettrauxTorsten SchönebaumPlenty of other contributorsInternet Exchange / ISP in a Box
  22. 22. Thanks!

×