Ruote
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Ruote

on

  • 8,839 views

Overview of leveraging ruote for your business processes

Overview of leveraging ruote for your business processes

Statistics

Views

Total Views
8,839
Views on SlideShare
3,962
Embed Views
4,877

Actions

Likes
4
Downloads
65
Comments
0

12 Embeds 4,877

http://ruote.rubyforge.org 4338
http://openwferu.rubyforge.org 394
http://ruote.io 62
http://francescoagati.wordpress.com 31
http://ruote.lambda.io 29
http://lanyrd.com 9
http://translate.googleusercontent.com 6
http://localhost 3
http://localhost:3000 2
http://ruote.rubyforge.org. 1
http://www.linkedin.com 1
http://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • Started as a Java workflow, then came to the light :)\n
  • Probably the most important slide in this entire presentation\n
  • ruote is patient\nprocesses can run for years and years\n
  • All wrapped up in a “ready for distributed” package, scales out the box if configured correctly\n
  • Expressive DSL that results in an AST of sorts\nExpressions are “executed” by the engine\n
  • Opportunity for callbacks, loops, flow control, etc\n
  • Versioning is more of an attribute that admins use to determine what is going on\nJust like NoSQL schemas evolve, so do processes, and different versions can coexist\n
  • The means of communication between participants\nAkin to passing an ID of a row in a table between systems\nLoaded with rich meta-data that can be used by the participants (ruote-kit and timeouts)\n
  • Arrows show how the values of workitem fields can alter the process flow\n“rewind” expression show flow control\n“concurrence” shows parallel execution\n
  • The basic abstraction is that a “human participant” is a message in a inbox, somewhere\nUp to the application to read the workitem from storage and present it (and controls) to the users\n
  • Run in the same VM\nCan run in different VM’s on the same server\nCan be scattered throughout the globe\n
  • Only ever really a class\nDramatically simplified, think resque/dj\n
  • Each process runs in isolation, so if the file containing the definition changes, the process is unaffected...\n
  • I started it, Torsten picked it up and ran with it...\n
  • Some processes take months to finish\n
  • \n
  • \n
  • Get over there, and get going.\n
  • \n
  • \n

Ruote Presentation Transcript

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

sequence
do



participant
:alpha



participant
:bravo

endend
  • 8. Process definitionsExpressions are used to build a workflowWorkflows can be:LinearParallelNestedand more...
  • 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. 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. 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. Human participantsPersist the workitemLoad it from another application to present to a “human”,which should take actionruote-couchruote-dmruote-redisand more...
  • 13. Autonomous participantsLocal participants Instantiated classes that respond to #consume()Remote participants ruote-amqp & daemon-kit Scatter your participants over different systems
  • 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. Process administrationOften overlooked!Canceling processes, or just part of a process(expression)Re-applying segments of processesGraceful error handling“Callbacks” for process lifecycle
  • 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. 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. In the wildMeego BOSSUsed to orchestrate the CI ecosystem for the OShttp://wiki.meego.com/BOSS
  • 19. In the wildFermilabRackspaceUniversidad Politécnica de MadridGeographic Institute of the University of Zuerichand plenty more
  • 20. ruote.rubyforge.org/quickstart.html
  • 21. ThanksJohn MettrauxTorsten SchönebaumPlenty of other contributorsInternet Exchange / ISP in a Box
  • 22. Thanks!