Your SlideShare is downloading. ×
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Ruote
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ruote

8,653

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,653
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!

    ×