Yii2 Workflow
Library to dynamically handle workflows in a database with ROA support., (*1)
, (*2)
Travis , (*3)
Getting Started
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., (*4)
Prerequisites
The rest of the requirements are checked by composer when installing the
repository on the next step., (*5)
### Installation
You can use composer to install the library tecnocen/yii2-workflow
by running
the command;, (*6)
composer require tecnocen/yii2-workflow
, (*7)
or edit the composer.json
file, (*8)
require: {
"tecnocen/yii2-workflow": "*",
}
Deployment
Then run the required migrations, (*9)
php yii migrate/up -p=@tecnocen/workflow/migrations
, (*10)
Which will install the following table structure, (*11)
, (*12)
#### ROA Backend Usage
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., (*13)
class Api extends \tecnocen\roa\modules\ApiContainer
{
public $versions = [
// other versions
'w1' => ['class' => 'tecnocen\workflow\roa\modules\Version'],
];
}
You can then access the module to check the available resources., (*14)
Which will implement CRUD functionalities for a workflow., (*15)
#### Process and Worklog
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., (*16)
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., (*17)
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';
}
}
After running the migrations its necessary to create Active Record models., (*18)
class Credit extends \tecnocen\workflow\models\Process
{
protected function workflowClass()
{
return CreditWorklog::class;
}
public function getWorkflowId()
{
return $this->workflow_id;
}
public function rules()
{
return \yii\helpers\ArrayHelper::merge(parent::rules(), [
// other rules here
]);
}
}
class CreditWorkLog extends \tecnocen\workflow\models\WorkLog
{
public static function processClass()
{
return Credit::class;
}
}
#### Worklog Resource
Each process gets a worklog about the flow of stages it goes through., (*19)
On ROA you can declare each worklog as a child resource for the process resource, (*20)
public $resources = [
'credit',
'credit/<credit_id:\d+>/worklog' => [
'class' => WorklogResource::class,
'modelClass' => CreditWorklog::class,
]
];
Running the tests
This library contains tools to set up a testing environment using composer scripts, for more information see Testing Environment section., (*21)
Break down into end to end tests
Once testing environment is setup, run the following commands., (*22)
composer deploy-tests
Run tests., (*23)
composer run-tests
Run tests with coverage., (*24)
composer run-coverage
Live Demo
You can run a live demo on a freshly installed project to help you run testing
or understand the responses returned by the server. The live demo is initialized
with the command., (*25)
php -S localhost:8000 -t tests/_app
Where :8000
is the port number which can be changed. This allows you call ROA
services on a browser or REST client., (*26)
Use Cases
TO DO, (*27)
Built With
Code of Conduct
Please read CODE_OF_CONDUCT.md for details on our code of conduct., (*28)
Contributing
Please read CONTRIBUTING.md for details on the process for submitting pull requests to us., (*29)
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository., (*30)
Considering SemVer for versioning rules 9, 10 and 11 talk about pre-releases, they will not be used within the Tecnocen-com., (*31)
Authors
See also the list of contributors who participated in this project., (*32)
License
This project is licensed under the MIT License - see the LICENSE.md file for details, (*33)
Acknowledgments
- TO DO - Hat tip to anyone who's code was used
- TO DO - Inspiration
- TO DO - etc
, (*34)