| eZ Components - WorkflowDatabaseTiein |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| .. contents:: Table of Contents |
| |
| |
| Introduction |
| ============ |
| |
| The WorkflowDatabaseTiein component allows you to store workflows in a |
| relational database. It also provides a workflow execution environment that |
| makes workflow execution states persistent. |
| The persistence allows you to resume workflows between different PHP requests. |
| |
| |
| Class overview |
| ============== |
| |
| ezcWorkflowDatabaseExecution |
| |
| Workflow executer that suspends and resumes workflow execution states |
| to and from a database. |
| |
| ezcWorkflowDatabaseDefinitionStorage |
| Workflow definition storage handler that saves and loads workflow |
| definitions to and from a database. |
| |
| |
| Database tables |
| =============== |
| |
| This component requires a specific set of tables to exist in your |
| database. As a reference of the tables and fields required we have provided a |
| schema for MySQL. To ease the installation process we also provide the database |
| independent .dba file. |
| |
| Mysql schema |
| ------------ |
| |
| This is the reference schema for MySQL 5. |
| |
| .. include:: ../design/schema_mysql.sql |
| :literal: |
| |
| |
| Database independent schema |
| --------------------------- |
| |
| To load the .dba definition into your database you must have the DatabaseSchema |
| component installed. Save the file to your harddrive and use the following code |
| to load it: |
| |
| .. include:: load_dba.php |
| :literal: |
| |
| You may need to extend 'workflow.dba' to contain the proper path to the file. |
| |
| |
| Usage |
| ===== |
| |
| Storing a workflow to database |
| ------------------------------ |
| |
| This example shows how to store a workflow to database. The example assumes |
| that the workflow is available in the $workflow variable. |
| |
| .. include:: example_save_to_database.php |
| :literal: |
| |
| Loading a workflow from the database |
| ------------------------------------ |
| |
| This example loads the workflow named 'test' into the variable $workflow. |
| |
| .. include:: example_load_from_database.php |
| :literal: |
| |
| Executing a workflow |
| -------------------- |
| |
| Executing a workflow is done by calling the method start on the execution |
| object. This example shows how to execute the workflow test that is stored in |
| the database. The id that is returned by the execute method identifies this |
| execution thread and can be used later if the workflow must be resumed. |
| |
| Executing a workflow using the ezcWorkflowDatabaseExecution executer requires |
| the definition of the workflow (and all of its sub-workflows) to be stored in |
| the database. |
| |
| .. include:: example_execute.php |
| :literal: |
| |
| |
| Resuming a workflow execution |
| ----------------------------- |
| |
| If a workflow execution is suspended and needs to be resumed the method resume |
| should be used. This example shows how to resume a suspended workflow and |
| provide the input data 'choice'. The id is the one provided by the original call |
| to execute. |
| |
| .. include:: example_resume.php |
| :literal: |
| |
| Cancelling a workflow execution |
| ------------------------------- |
| |
| If a workflow execution is suspended it can be cancelled by calling the cancel() |
| method on the executer object. |
| |
| .. include:: example_cancel.php |
| :literal: |
| |
| This method is also automatically called when the workflow execution reaches a |
| ezcWorkflowNodeCancel node. |
| |
| When the execution of a workflow is cancelled all nodes that are currently |
| activated will be deactivated and the optional sequence of final activities |
| that starts in $workflow->finallyNode is activated. |
| |
| .. |
| Local Variables: |
| mode: rst |
| fill-column: 79 |
| End: |
| vim: et syn=rst tw=79 |