Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ruote @ Rubyfuza

ruote @ Rubyfuza

Overview of leveraging ruote for your business processes

Kenneth Kalmer

February 03, 2011
Tweet

More Decks by Kenneth Kalmer

Other Decks in Technology

Transcript

  1. Engine Workers Human participants Autonomous participants All work to towards

    achieving a goal, defined in a process definition (aka participating in a workflow) Players
  2. Process instances Processes run in isolation The AST is stored

    in the engine Original code used to launch the process can be altered without affecting running processes Processes can be versioned
  3. Workitems Set the initial “payload” when launching a process Workitems

    are passed between participants Participants can update workitems, or just read Process flow can be altered by workitem values
  4. Workitems and flows Ruote.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' end end
  5. Human participants Persist the workitem Load it from another application

    to present to a “human”, which should take action ruote-couch ruote-dm ruote-redis and more...
  6. Autonomous participants Local participants Instantiated classes that respond to #consume()

    Remote participants ruote-amqp & daemon-kit Scatter your participants over different systems
  7. Notes on participants They are abstractions They are stateless Once

    the engine hands over a workitem to a participant, it will wait indefinitely for a response (unless a timeout is specified) They rely on the workitem to know what is expected of them
  8. Process administration Often overlooked! Canceling processes, or just part of

    a process (expression) Re-applying segments of processes Graceful error handling “Callbacks” for process lifecycle
  9. ruote-kit RESTful wrapper around ruote Rich environment for exploring, perfectly

    capable of production use Can be used as rack middleware (preferably not) github.com/tosch/ruote-kit
  10. In the wild Internet Exchange / ISP in a Box

    Huge number of processes running daily Mostly autonomous, humans handle exceptions Provisions dozens of services Some processes involve a dozen participants, running all over the globe and complete within 5 seconds :)
  11. In the wild Meego BOSS Used to orchestrate the CI

    ecosystem for the OS http://wiki.meego.com/BOSS
  12. In the wild Fermilab Rackspace Universidad Politécnica de Madrid Geographic

    Institute of the University of Zuerich and plenty more