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
