SlideShare a Scribd company logo
1 of 56
Download to read offline
ruote 2.0




            2009/10/07
warning :

these slides pre-suppose you
    have some familiarity
      with ruote (0.9.x)
‣   recap : ruote
    ‣ is a ruby workflow engine
    ‣ ruby makes it easy to tinker and try
    ‣ workflows should be easy to tinker
      and try
    ‣ with some discipline, you might
      even end up doing BPM with it
agenda
agenda
ruote 2.0 engine
‣   ruote engine : historically
    ‣ middleware/backend-ish
    ‣ not for your big front web 2.0 app
    ‣ cheap workflow engine
    ‣ 1 engine per business unit
‣   ruote engine : core requirements
    ‣ has to run multiple processes
      ‣ with multiple branches
      ‣ and/or subprocesses
    ‣ can be stopped / restarted
      (if running with persistent storage)
    ‣ can run multiple versions of any
      process
    ‣ has to allow in-flight modifications
      to processes
‣   ruote 2.0 engine
    ‣ multi ruby process resilient :(
    ‣ complete rewrite
      with a cleaner interface
‣   multi-process
    ‣ the average user wants to put ruote
      in his rails app
    ‣ the rails app is
      in a ‘multi-process’ ruby web server
    ‣ ruote 0.9 is
      in trouble...
‣   multi-process resilience
    ‣ ruote 2.0 knows it could run in a
      multi-process env
    ‣ it has defense mechanisms
      things like ‘tickets’ and ‘locks’
    ‣ they have a cost :-(
‣   suggestions
    ‣ avoid mp envs for ruote
      (the engine is idle most of the time)
    ‣ run ruote as a webservice
      in a 1p env
    ‣ (ruote in 1p can use “caching”
      and be faster)
‣   our favourite env these days
    ‣ ruote-{kit|http}
      workflow as an http service
    ‣ ruote-amqp
    ‣ remote participants
      as amqp (daemons)
        http://github.com/kennethkalmer/daemon-kit
    ‣   load on ruote itself is low
‣   anyway...
    ‣ 1 engine that scale
      for everything ?
    ‣ why not 1 engine
      per domain / unit ?
    ‣ why not a separation between
      tactical and technical engines ?
    ‣ why not engines that talk to each
      other ?
    ‣ scale the business
      or scale the tools ?
‣   engine workqueue
    ‣ where each operation is performed
    ‣ only 1 op at a time
    ‣ by default, uses Thread/Queue
    ‣ uses EventMachine if present
    ‣ future work :
      ‣ fibers ?
      ‣ it’s an implementation away
    ‣ anyway, engine is idle most of the
      time (usually waiting for those slow
      humans)
cleaner interface
cleaner interface
ruote 2.0 process definitions
‣   AST is JSON friendly
‣   attributes common to all expressions
    ‣ :if / :unless
    ‣ :timeout, :on_timeout
    ‣ :on_cancel / :on_error
    ‣ :forget
‣   directed commands
    ‣ break :ref => ‘tag’
‣   jump :to => ‘tag’
‣   concurrent_iterator enhancements
‣   subprocesses and apply
‣   ...
AST is JSON friendly
XML is still here
‣   common attributes
    ‣ can be given to any expression
:if / :unless
:timeout
:on_timeout
‣   :on_error
    ‣ much like begin / rescue...
    ‣ occurs when error is triggered
    ‣ error is thus not logged in
      error_journal
:on_error
:on_error
‣   :on_cancel
    ‣ subprocess or participant
      triggered
      when expression gets cancelled
    ‣ unlike :on_error
      trigger happens when cancel is
      complete
:on_cancel
:forget
‣   cursor / jump
    ‣ can now jump to
      a tag,
      a participant name or
      a subprocess name
    ‣ almost that
      ‘cursors as state machines’
      feeling
    ‣ works with repeat (loop)
      as well
cursor / jump
‣   directed commands
    ‣ cursor/repeat has
      jump/rewind/break/... commands
    ‣ until now these commands were
      only meant for the enclosing cursor/
      repeat
    ‣ now with :tag and :ref,
      more precision is possible
    ‣ works with the iterator expression
      as well
rewind :ref => ‘tag’
skip :ref => ‘tag’
‣   concurrent_iterator
    ‣ :times / :branches
    ‣ add_branches partner expression
concurrent_iterator
concurrent_iterator
‣   ruote 0.9.x had the ‘eval’ expression
    ‣ evaluating segments of process
‣   ruote 2.0 has ‘apply’
    ‣ same mission
    ‣ and more (yield)
vanilla apply
yield like apply
set ‘v:x’ => ‘y’
‣   engine variables
    ‣ can be read from processes
    ‣ cannot be set from processes
    ‣ are thus on the same foot as
      participants
      (which are registered at the engine
      level)
engine vars
engine vars
‣   more about
    process definitions and
    expressions
    http://ruote.rubyforge.org/expressions.html

    http://ruote.rubyforge.org/patterns.html
2.0 projects
‣   ruote-dm
    datamapper persistence
    http://github.com/jmettraux/ruote-dm
‣   ruote-ar
    activerecord persistence
    http://github.com/kennethkalmer/ruote-activerecord
‣   ruote-couch (coming soon)
    couchdb persistence
    http://github.com/kennethkalmer/ruote-couch
‣   ruote-kit
    full blown ruote-rest evolution
    http://github.com/kennethkalmer/ruote-kit
‣   ruote-http
    tiny sinatra ruote webservice
    http://github.com/jmettraux/ruote-http
‣   ruote-amqp
    amqp participants and listeners
    http://github.com/kennethkalmer/ruote-amqp
‣   ruote-fluo
    still in the run
    http://github.com/jmettraux/ruote-fluo
‣   ruote [2.0] website
    http://ruote.rubyforge.org
‣   ruote mailing list
    http://groups.google.com/group/openwferu-users
‣   freenode.net IRC
    #ruote
many thanks
to everyone in the community
especially to the “ruedas y cervezas”
participants ;-)

More Related Content

Similar to towards ruote 2.0

Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemApache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemJim Jagielski
 
Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment ColdFusionConference
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Gavin Pickin
 
Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Yuji Takayama
 
Owasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsOwasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsBjörn Kimminich
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsJim Jeffers
 
LCU14 201- Binary Analysis Tools
LCU14 201- Binary Analysis ToolsLCU14 201- Binary Analysis Tools
LCU14 201- Binary Analysis ToolsLinaro
 
Client Side Measurement & Performance With Rails
Client Side Measurement & Performance With RailsClient Side Measurement & Performance With Rails
Client Side Measurement & Performance With RailsEric Falcao
 
php & performance
 php & performance php & performance
php & performancesimon8410
 
AMIMOTO: WordPress + Amazon Web Services Hands-on PARIS
AMIMOTO: WordPress + Amazon Web Services Hands-on PARISAMIMOTO: WordPress + Amazon Web Services Hands-on PARIS
AMIMOTO: WordPress + Amazon Web Services Hands-on PARISKel
 
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)Pixie Labs
 
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)Zain Asgar
 
What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24Jim Jagielski
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Peter Bittner
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Prometheus and Docker (Docker Galway, November 2015)
Prometheus and Docker (Docker Galway, November 2015)Prometheus and Docker (Docker Galway, November 2015)
Prometheus and Docker (Docker Galway, November 2015)Brian Brazil
 

Similar to towards ruote 2.0 (20)

Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemApache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
 
Taskflow
TaskflowTaskflow
Taskflow
 
Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
 
Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012
 
Owasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsOwasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projects
 
NodeJS
NodeJSNodeJS
NodeJS
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
LCU14 201- Binary Analysis Tools
LCU14 201- Binary Analysis ToolsLCU14 201- Binary Analysis Tools
LCU14 201- Binary Analysis Tools
 
Client Side Measurement & Performance With Rails
Client Side Measurement & Performance With RailsClient Side Measurement & Performance With Rails
Client Side Measurement & Performance With Rails
 
Introduction to Apache Apex
Introduction to Apache ApexIntroduction to Apache Apex
Introduction to Apache Apex
 
php & performance
 php & performance php & performance
php & performance
 
groovy & grails - lecture 9
groovy & grails - lecture 9groovy & grails - lecture 9
groovy & grails - lecture 9
 
AMIMOTO: WordPress + Amazon Web Services Hands-on PARIS
AMIMOTO: WordPress + Amazon Web Services Hands-on PARISAMIMOTO: WordPress + Amazon Web Services Hands-on PARIS
AMIMOTO: WordPress + Amazon Web Services Hands-on PARIS
 
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
 
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
No instrumentation Golang Logging with eBPF (GoSF talk 11/11/20)
 
What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
 
Prometheus and Docker (Docker Galway, November 2015)
Prometheus and Docker (Docker Galway, November 2015)Prometheus and Docker (Docker Galway, November 2015)
Prometheus and Docker (Docker Galway, November 2015)
 

Recently uploaded

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

towards ruote 2.0

  • 1. ruote 2.0 2009/10/07
  • 2. warning : these slides pre-suppose you have some familiarity with ruote (0.9.x)
  • 3. recap : ruote ‣ is a ruby workflow engine ‣ ruby makes it easy to tinker and try ‣ workflows should be easy to tinker and try ‣ with some discipline, you might even end up doing BPM with it
  • 6.
  • 8. ruote engine : historically ‣ middleware/backend-ish ‣ not for your big front web 2.0 app ‣ cheap workflow engine ‣ 1 engine per business unit
  • 9. ruote engine : core requirements ‣ has to run multiple processes ‣ with multiple branches ‣ and/or subprocesses ‣ can be stopped / restarted (if running with persistent storage) ‣ can run multiple versions of any process ‣ has to allow in-flight modifications to processes
  • 10. ruote 2.0 engine ‣ multi ruby process resilient :( ‣ complete rewrite with a cleaner interface
  • 11. multi-process ‣ the average user wants to put ruote in his rails app ‣ the rails app is in a ‘multi-process’ ruby web server ‣ ruote 0.9 is in trouble...
  • 12. multi-process resilience ‣ ruote 2.0 knows it could run in a multi-process env ‣ it has defense mechanisms things like ‘tickets’ and ‘locks’ ‣ they have a cost :-( ‣ suggestions ‣ avoid mp envs for ruote (the engine is idle most of the time) ‣ run ruote as a webservice in a 1p env ‣ (ruote in 1p can use “caching” and be faster)
  • 13. our favourite env these days ‣ ruote-{kit|http} workflow as an http service ‣ ruote-amqp ‣ remote participants as amqp (daemons) http://github.com/kennethkalmer/daemon-kit ‣ load on ruote itself is low
  • 14. anyway... ‣ 1 engine that scale for everything ? ‣ why not 1 engine per domain / unit ? ‣ why not a separation between tactical and technical engines ? ‣ why not engines that talk to each other ? ‣ scale the business or scale the tools ?
  • 15. engine workqueue ‣ where each operation is performed ‣ only 1 op at a time ‣ by default, uses Thread/Queue ‣ uses EventMachine if present ‣ future work : ‣ fibers ? ‣ it’s an implementation away ‣ anyway, engine is idle most of the time (usually waiting for those slow humans)
  • 18.
  • 19. ruote 2.0 process definitions
  • 20. AST is JSON friendly ‣ attributes common to all expressions ‣ :if / :unless ‣ :timeout, :on_timeout ‣ :on_cancel / :on_error ‣ :forget ‣ directed commands ‣ break :ref => ‘tag’ ‣ jump :to => ‘tag’ ‣ concurrent_iterator enhancements ‣ subprocesses and apply ‣ ...
  • 21. AST is JSON friendly
  • 22. XML is still here
  • 23. common attributes ‣ can be given to any expression
  • 27. :on_error ‣ much like begin / rescue... ‣ occurs when error is triggered ‣ error is thus not logged in error_journal
  • 30. :on_cancel ‣ subprocess or participant triggered when expression gets cancelled ‣ unlike :on_error trigger happens when cancel is complete
  • 33. cursor / jump ‣ can now jump to a tag, a participant name or a subprocess name ‣ almost that ‘cursors as state machines’ feeling ‣ works with repeat (loop) as well
  • 35. directed commands ‣ cursor/repeat has jump/rewind/break/... commands ‣ until now these commands were only meant for the enclosing cursor/ repeat ‣ now with :tag and :ref, more precision is possible ‣ works with the iterator expression as well
  • 36. rewind :ref => ‘tag’
  • 37. skip :ref => ‘tag’
  • 38. concurrent_iterator ‣ :times / :branches ‣ add_branches partner expression
  • 41. ruote 0.9.x had the ‘eval’ expression ‣ evaluating segments of process ‣ ruote 2.0 has ‘apply’ ‣ same mission ‣ and more (yield)
  • 44. set ‘v:x’ => ‘y’
  • 45. engine variables ‣ can be read from processes ‣ cannot be set from processes ‣ are thus on the same foot as participants (which are registered at the engine level)
  • 48. more about process definitions and expressions http://ruote.rubyforge.org/expressions.html http://ruote.rubyforge.org/patterns.html
  • 49.
  • 51. ruote-dm datamapper persistence http://github.com/jmettraux/ruote-dm ‣ ruote-ar activerecord persistence http://github.com/kennethkalmer/ruote-activerecord ‣ ruote-couch (coming soon) couchdb persistence http://github.com/kennethkalmer/ruote-couch
  • 52. ruote-kit full blown ruote-rest evolution http://github.com/kennethkalmer/ruote-kit ‣ ruote-http tiny sinatra ruote webservice http://github.com/jmettraux/ruote-http
  • 53. ruote-amqp amqp participants and listeners http://github.com/kennethkalmer/ruote-amqp ‣ ruote-fluo still in the run http://github.com/jmettraux/ruote-fluo
  • 54.
  • 55. ruote [2.0] website http://ruote.rubyforge.org ‣ ruote mailing list http://groups.google.com/group/openwferu-users ‣ freenode.net IRC #ruote
  • 56. many thanks to everyone in the community especially to the “ruedas y cervezas” participants ;-)