irc questions answered

3 views
Skip to first unread message

John Mettraux

unread,
Feb 27, 2010, 10:49:31 PM2/27/10
to openwferu-users, lancej...@gmail.com, bok...@gmail.com
Hi Lance,

found your saturday question on IRC :

http://ruote.rubyforge.org/irclogs/ruote_2010-02-27.txt

> 2010-02-27 01:44:56 utc viatropos: Hi there, I'm new to workflow engines and had a few questions to get started.
> 2010-02-27 01:45:21 utc viatropos: First, how does this compare to Stonepath? http://github.com/bokmann/stonepath

Stonepath descriptions : "Stateful workflow modeling for Rails"
(http://rubygems.org/gems/stonepath), "A collection of stateful
workflow concepts for Ruby/ActiveRecord"
(http://github.com/bokmann/stonepath).

Ruote's description : "ruby workflow engine".

There is more information about Stonepath in that article from its
author : http://www.pragprog.com/magazines/download/4.pdf (see the
"state secrets" article).

Ruote is a workflow engine, it takes process definitions and
interprets them as process instances. Process definitions describe how
a "business process" should be executed. Now that involves
participants to whom the workflow engine hands tasks. Human
participants and/or automated participants.

Automated participants can be report generators or decision points
(for example http://jmettraux.wordpress.com/2010/02/17/ruote-and-decision-tables/).

A workflow engine is nothing more than a program... process definition
interpreter. Those process instances may last quite long. They become,
with the tasks attached to them, things you can manipulate (modify,
cancel, pause, ...).

From what I've learnt about StonePath, it's more about task
management. Whereas ruote is about workflow control-flow patterns
(http://workflowpatterns.com/patterns/control/index.php), StonePath
seems to be about workflow resource patterns
(http://workflowpatterns.com/patterns/resource/index.php) with its
spawn WS-HumanTask
(http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-bpel4people/WS-HumanTask_v1.pdf).

Workflow engines usually hand task for humans to worklist / tasklist
manager. StonePath seems to be a task manager. Note that some
categories of business processes are too diverse too be digitized
(barely repeatable processes), that's a spot StonePath seems to be
targeting.

Not that ruote can't do barely repeatable processes :
http://jmettraux.wordpress.com/2010/01/29/barley/

I'm in the middle of the implementation of a rails + ruote
application. The process definitions are quite simple and linear, but
once a task is handed to a team, they are free to reserve, assign,
reject tasks, until one the users closes the task and it's handed back
to the workflow engine for the travel to the next tasks (or the end of
the process instance). I will write a blog piece about that
application soon.

If you're only interested in passing tasks among users in no
pre-defined way, using a state machine library and a methodology like
StonePath might be a good thing. (See my piece about state machine and
workflow engines at
http://jmettraux.wordpress.com/2009/07/03/state-machine-workflow-engine/).

... and like David Bock (the author of StonePath) says : 'you do not
need an expensive, monolithic, or resource-intensive “workflow
engine”'.


> 2010-02-27 01:45:58 utc viatropos: And last, where is this workflow information stored? If I have a rails app, is it stored in MySQL or whatever database I'm using?

It depends on the ruote persistence you chose. The persistence
backends available are : memory, file-based (out of the box),
DataMapper (http://github.com/jmettraux/ruote-dm) and CouchDB
(http://github.com/jmettraux/ruote-couch). There is no active-record
persistence implemented yet (for ruote 2.1). It would not be difficult
to infer one from ruote-dm.


Best regards,

--
John Mettraux - http://jmettraux.wordpress.com

Reply all
Reply to author
Forward
0 new messages