Ruote

  • 8,565 views
Uploaded on

Overview of leveraging ruote for your business processes

Overview of leveraging ruote for your business processes

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
8,565
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
65
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \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

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!