51
Stockholm University - 2008/10/08

ruote stockholm 2008

Embed Size (px)

DESCRIPTION

 

Citation preview

Stockholm University - 2008/10/08

ruote

ruote

• open source project

• “ruote” is a nickname

• formal name is “openwferu”http://openwferu.rubyforge.org

ja to ru

• OpenWFE project started in late 2001

• became OpenWFEru late 2006

• java to python ruby

• nicknamed Ruote (keep the ru)

sub-projects

• ruote

• ruote-fluo

• ruote-web & ruote-rest

sub-projects

• ruote : as a ruby project

• ruote-fluo : how ruote sees processes

• ruote-web & ruote-rest : ruote + web

ruote

ruote

• open source

• ruby

• workflow engine

ruby

• ruby is slow

• yes, but development time is shorter

• yes, but hardware gets faster

• yes, but interpreters get stronger and faster

workflow

• ruote is a workflow engine

• incidentally BPM, BPM the discipline

• do you have the discipline to integrate such a tool ? (usage cost)

• do you have the discipline to avoidsuch a tool ? (non-usage cost)

ruby and workflow

• ruby is well-known, because of Ruby on Rails

• rails people are able to build web application very quickly

• “workflow” for them is spelled “act_as_state_machine”

act_as_a_state_machine• ruby on rails plugin

• attach states (and transitions) to rails entities

• virtual entities representingbusiness processes

• still 1 web application

• ruote : target is ruby, not just rails

ruby and workflow

my endeavour :

• bring a workflow engine to ruby

or

• leverage ruby to write a better workflow engine

?

ruby

• ruby is one of the fastest language (shortest development time)

• less code to write

• less code to maintain

ruby people

• lots of ex-{PHP|Perl|Java} people

• different perspective(enterprise wide vs web wide)

• true community (not big guns driven)

• ruby people seem to be going in the right direction (trust)

workflow engine

• process definition interpreter

• process definition language ?

• many grails

many grails

• visual grail

• “no code” / no programming grail

• standard grail

• (formal grail)

visual and standard

• in 2001-2002, there were XPDL and BPML

• visual is hard, lots of noise info

• trying to come up with a language

“no code” grail

• defining a process is not programming

• redacting a mission statement is not programming

• specifying a series of task to be executed by a machine is notprogramming

programming

• I firmly believe that defining a process is programming (modeling)

• I firmly believe that issues raised by process execution are better solved by people with an understanding of programming and systems (managing)

• no coder and no admin ?

programming business processes

• building abstractions / raising the abstraction level

• provide a language

• a process definition language

language• a language and its interpreter

• 4 main constructs

• process-definition

• participant

• sequence

• concurrence

language

• conciseness(process def vs context)

• no “box and arrow position” noise

• graphical representation can be derived from such a language

• XML parsers were/are available

requirements

• the workflow control patterns

• directly and indirectly

• community

• feedback and requests

participants• workflow resource patterns

• orchestrating :

• BPEL and web services

• ruote and ‘participants’

• participants usually change less often than processes

• users, roles, systems, services, ...

workitems

• issuing workitems to participants

• serializable as JSON / XML / YAML

• payload : reference is better than raw content

• apply / reply workitems as well

ruote-fluo

ruote-fluo

• is a javascript library

• fluo-can :renders process definitions graphically

• fluo-tred :online process definition edition

fluo-can

fluo-tred

formats

• so you have XML, Ruby and this online tool

• it’s manipulating ASTs

• exp := [ exp_name, { attribute* },[ child_exp* ]]

languages, trees• a tree at the heart

• direct interpretation, no compilation (not so low level interpretation)

• (-) slower

• (+) graspable, directly modifiable (in-flight)

• (+) easy to add new expressions

expressions• ruote is a very patient (long running)

interpreter

• interprets trees of expressions

• expressions come in two flavour : raw / applied

• they reply to 3 messages : apply / reply / cancel

process-

definition

0

sequence

0.0 participant

0.0.0

alpha

participant

0.0.1

bravo

a

b

c

d

e

f

g

apply

reply

"alpha"

"bravo"

ruote

• simplistic / naive

• that’s a strength when things go wrong (it should not play tricks on you)

• ...

ruote & web

ruote & web

• a process definition is a document

• a document, a URI

ruote & web

• workflow things as web resources

• processes / errors / workitems

• launch : POST /processes

• cancel : DELETE /processes/3425ba2

ruote-rest

• trying to be RESTful

• trying to stick to web standards

• trying hard for connectedness

web standards

• HTTP

• XML, JSON

• Atom, RSS

• AtomPub (content oriented maybe)

• iCal, ...

ruote-rest

• process server

• embedded vs external

• state machine vs process server

next spins

next

• better ruote-web2 (2008/11)

• more in-flight edition

• better migrations / batch migrations

• more documentation

• more...