Basics of Workflows
A Workflow is an object of a particular type (even if no code exists)
Workflows consist of states, all custom except one 'INITIAL' which is the state of the workflow when it's first created.
The Workflow is responsible for declaring state transitions upon successful execution of certain actions.
The application that creates or fetches a Workflow fills it (or its associated context) with objects required by Actions, Validators and Conditions
A Workflow uses Condition objects to determine whether an action is accessible
Every workflow state has zero or more accessible actions. When the action is called it has access to the workflow and its associated context so it can work with the environment. (For example, create a ticket associate the current user with it.)
Actions do not change workflow state. They just respond to state changes by the workflow and complete some operations outside of it.
The Workflow is observable and fires events on state changes.
Action declaration: workflow_action.xml
Validator declaration: workflow_action_validator.xml
The workflow declaration binds the actions together and declares states and their transitions.
Workflow declaration: customer_foo_workflow.xml
Conditions are objects just like everything else, and like everything else they have access to the same universe of objects as the Actions and Workflow. (Although the workflow isn't directly coded...)
Condition declaration: workflow_condition.xml
AUTHORS
Please see Workflow.