Library to dynamically handle workflows in a database with ROA support.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
TO DO - What things you need to install the software and how to install them
TO DO - Give examples
You can use composer to install the library tecnocen/yii2-workflow
by running
the command;
composer require tecnocen/yii2-workflow
or edit the composer.json
file
require: {
"tecnocen/yii2-workflow": "*",
}
Then run the required migrations
php yii migrate/up -p=@tecnocen/workflow/migrations
Which will install the following table structure
The ROA support is very simple and can be done by just adding a module version to the api container which will be used to hold the resources.
class Api extends \tecnocen\roa\modules\ApiContainer
{
$versions = [
// other versions
'w1' => ['class' => 'tecnocen\workflow\roa\modules\Version'],
];
}
You can then access the module to check the available resources.
- workflow
- workflow/<workflow_id:\d+>/stage
- workflow/<workflow_id:\d+>/stage/<stage_id:\d+>/transition
- workflow/<workflow_id:\d+>/stage/<stage_id:\d+>/transition/<target_id:\d+>/permission
Which will implement CRUD functionalities for a workflow.
A process
is an entity which changes from stage depending on a workflow. Each
stage change is registered on a worklog
for each process
record.
To create a process
its required to create a migrations for the process and
the worklog then the models to handle them, its adviced to use the provided
migration templates.
class m170101_010101_credit extends EntityTable
{
public function getTableName()
{
return 'credit';
}
public function columns()
{
return [
'id' => $this->primaryKey(),
'workflow_id' => $this->normalKey(),
// other columns
];
}
public function foreignKeys()
{
return [
'workflow_id' => ['table' => 'tecnocen_workflow'];
];
}
}
class m170101_010102_credit_worklog extends \tecnocen\workflow\migrations\WorkLog
{
public function getProcessTableName()
{
return 'credit';
}
}
class CreditWorkLog extends \tecnocen\workflow\models\WorkLog
{
public static function processClass()
{
return Credit::class;
}
}
Each process gets a worklog about the flow of stages it goes through.
On ROA you can declare each worklog as a child resource for the process resource
public $resources = [
'credit',
'credit/<credit_id:\d+>/worklog' => [
'class' => WorklogResource::class,
'modelClass' => CreditWorklog::class,
]
];
This library contains tools to set up a testing environment using composer scripts, for more information see Testing Environment section.
Once testing environment is setup, run the following commands.
composer deploy-tests
Run tests.
composer run-tests
Run tests with coverage.
composer run-coverage
TO DO
TO DO - Add additional notes about how to deploy this on a live system
- Yii 2: The Fast, Secure and Professional PHP Framework http://www.yiiframework.com
Please read CODE_OF_CONDUCT.md for details on our code of conduct.
Please read CONTRIBUTING.md for details on the process for submitting pull requests to us.
We use SemVer for versioning. For the versions available, see the tags on this repository.
Considering SemVer for versioning rules 9, 10 and 11 talk about pre-releases, they will not be used within the Tecnocen-com.
- Angel Guevara - Initial work - Tecnocen.com
- Carlos Llamosas - Initial work - Tecnocen.com
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details
- TO DO - Hat tip to anyone who's code was used
- TO DO - Inspiration
- TO DO - etc