raoul2000/yii-simple-workflow

A simple workflow engine for Yii 1

1.0.9 2015-05-21 17:33 UTC

This package is not auto-updated.

Last update: 2024-12-11 08:50:46 UTC


README

simpleWorkflow

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.

Note that the simpleWorklfow extension, following Yii 1.1 life cycle, has also reached end of life. Please consider using yii2-workflow extension with Yii 2.x

Resources

Documentation

Requirements

  • Yii 1.1.4 or above

Installation

  • Extract the released files under protected/extensions.
  • add the SWPhpWorkflowSource component to your configuration
'components'=>array(	
	// adding the simple Workflow source component
	'swSource'=> array(
		'class'=>'application.extensions.simpleWorkflow.SWPhpWorkflowSource',
	), ...
  • add simpleWorkflow extension base folder to your imports
'import'=>array(
	...
	'application.extensions.simpleWorkflow.*',	// Import simpleWorkflow extension
), 

Usage

Once installed and correctly configured, the simpleWorkflow extension will handle the workflow for any model. To enable simpleWorkflow for a given model, you must attach the SWActiveRecordBehavior behavior to this model.

class MyModel extends CActiveRecord {
	public function behaviors()
	{
		return array(
			'swBehavior' => array(
				'class' => 'application.extensions.simpleWorkflow.SWActiveRecordBehavior'
			)
		);
	}
}

The model can then be inserted into a workflow, and evolve among statuses inside this workflow. For instance, the code below insert an existing record into a workflow, or if already done, displays its current status :

$m=MyModel::model()->findByPk('1');
if( $m->swHasStatus() ){
     echo 'status : '.$m->swGetStatus()->toString();		
}else {
     $m->swInsertToWorkflow();
     $m->save();
}

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

Gii Command

Creating a workflow 'by hand' can become an error-prone task when several nodes and edges are required. One good option is to create the workflow using a visual tools, and after some searches it seems that one of the best application to do it is yEd Graph Editor. Of course, it is free to use !

Want to know more ? Read how to use the GII command to create your workflow...