simpleworkflow A simple workflow engine for active records

  1. Documentation
  2. Change Log


The simpleWorkflow extension is a set of Yii components that is dedicated to provide an easy way to manage the life cycle of CActiveRecord objects inside a workflow. It provides features to control the behavior of the active record in its associated workflow : transition tasks, status constraints, event model.

Workflows are defined as associative arrays or as classes. They can be created manually, but for your convenience, since version 1.1, a Gii command is provided to automatically convert any workflow created by the yEd Graphical Editor into a simpleWorkflow : check out the video to learn more about it.

Please note that the simpleWorkflow command for Gii is still experimental



  • Yii 1.1.4 or above
  • the Gii command requires domxml PHP extension and since version, the DOM extension is also supported
  • Extract the release file under protected/extensions
  • add the SWPhpWorkflowSource component to your configuration
	// adding the simple Workflow source component
	'swSource'=> array(
	), ...
  • add simpleWorkflow extension base folder to your imports
        // Import simpleWorkflow components : validator, helper ...      

For more information on how to use the simpleWorkflow extension, please refer to the documentation


Once installed and correctly configured, the simpleWorkflow extension will handle the workflow for any model. This happens automatically when the model is read/saved from/to database, or programatically by the developer. For instance :

if( $m->swHasStatus() ){
     echo 'status : '.$m->swGetStatus()->toString();		
}else {

Change Log

May 26, 2013
  • version
    • gii command : add SWyEdConverterDOM that uses DOM extension. If domxml extension is available, use it in priority otherwise use DOM
    • add swSetStatus() to replace swNextStatus() which is still supported, but deprecated
September 19, 2012
  • version 1.1
    • change swNextStatus() : it is not permitted anymore to call 'swNextStatus()' with no argument. To insert a model into a workflow, swNextStatus() must be replaced by a call to 'swInsertToWorkflow()'.
    • enh : add method 'swRemoveFromWorkflow()'. This method is only successful when the owner model is in a final status (i.e a status with no outgoing transition).
    • enh : add swGetWorkflowSource() as public method to return the workflow source component used by the behavior
    • Gii command to convert yEd Graph Editor workflows into sW workflows (experimental)
    • enh : when loading a workflow, raise exception on duplicate node id
August 15, 2012
  • Version 1.0
    • fix : autoinsert into workflow (jmariani)
    • enh : replace function is_a() by instanceof (kjharni)
    • enh : metadata. It is now possible to add any value to node definition by using the metadata attribute.
    • enh : workflow class definition. A workflow can be defined as a class that must implement method getDefinition() which returns the workflow definition in its array format.
    • enh : add 'leaveWorkflow' event. This event is fired whenever a component in a workflow reset its status. This must be done from a final status only.
November 27, 2010
  • (RC2)
    • fix : replace 'split' with 'explode' (got 2 doodle)
    • enh : SWActiveRecordBehavior->swValidate now returns boolean
    • enh : Workflow Driven Model Validation. It is now possible to define validators which are only executed upon specific transitions (this is done by defining specific scenario names).
October 3, 2010
  • Initial release (RC1).
24 0
5 035 downloads
Yii Version: 1.1
License: BSD-2-Clause
Category: Others
Developed by: Raoul
Created on: Oct 3, 2010
Last updated: 6 years ago


show all

Related Extensions