Hello everyone,

i want to propose the development of a CouchDB Storage Tiein for the
Workflow Engine. It would be a considerable improvement over the
Database backend, for various reasons:

1. Several variables are saved as PHP serialize() output in LONGTEXT
fields in both the Workflow and Execution parts of the Engine. This is
rather problematic (and ugly). Workflow just has many "unrelational"
parts such as node configuration, execution state/variables and thread
information. CouchDB could just nest them as sub-objects in JSON.

2. Database backend uses serialized php data for Execution::$variables
and Execution::$waitingFor, both variables that are interesting for
querying the set of existing workflows. Views can be easily written
using any of the two as keys to select for.

3. Both a workflow and an execution could be saved in a single document
each.

Why a workflow? Workflows are never updated, only saved with a new ID.
Otherwise you could seriously destroy currently existing executions of a
changed workflow. Therefore no problems exists with read/write
contention or version conflicts.

Why an execution? It has to be resurrected from persistence completely
in any case, the nested data is never of any interest in an incomplete
context. You always need the whole data.

What do you think of the idea? Is there interest in this development?

greetings,
Benjamin

Reply via email to