Your SlideShare is downloading. ×

Ruote

8,640
views

Published on

Overview of leveraging ruote for your business processes

Overview of leveraging ruote for your business processes

Published in: Technology

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,640
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
66
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!

    ×