-
Arnaud Fontaine authored
This also moves all Configurator Workflows in workflow_module to portal_workflow (workflow_module was an implementation of Workflows based on ERP5 objects and not using DCWorkflow code). * Workflows are now defined on on portal_workflow._chains_by_type anymore but, as everything else, on the Portal Type itself. * portal_workflow can contain and work at the same time with legacy and new Workflows (ERP5Type/patches/DCWorkflow.py monkey-patching DCWorkflow classes to provide the same API). * Existing Workflow Scripts should work as they are and the code can be updated later on to take advantage of the new API: + With legacy implementation Workflow {Scripts,Transitions,Worklists,States} were in a Folder ({scripts,transitions,worklists,states} attribute) but all of these are now in the Workflow itself and their IDs are prefixed (PropertySheet-style), for example `script_`. Legacy attributes are provided in new implementation to call the new API. + When calling a Workflow Script, `container` was bound to its parent, namely WF.scripts (Folder) and a Workflow Script could call another. Now `container` is bound to the WF itself and Workflow Scripts are in a Workflow directly. New implementation `scripts` attribute handle such use case. + Override portal_workflow.__getattr__ so that a Workflow Script can call another one without prefix. * Worklist are Predicate: Worklist filter objects based on given criterions and thus it makes more sense for a Worklist to be a Predicate (albeit a Predicate with only Identity Criterion and nothing else). + Criterion Properties: * state_variable. * local_roles (SECURITY_PARAMETER_ID). * Any Workflow Variables with for_catalog == 1. erp5_performance_test:testWorkflowPerformance were ran to compare DCWorkflow and ERP5Workflow implementations and it seems to be about 4% slower with the new implementation (legacy: 7.547, 7.593, 7.618, 7.59, 7.514 and new: 7.842, 7.723, 7.902, 7.837, 7.875). Work done by Wenjie Zheng, Isabelle Vallet, Sebastien Robin and myself.
df85ef46