evheniy / simple-task-fsm-bundle
The SimpleTaskFSMBundle adds the ability to use FSM tasks runner in your application.
Installs: 10 931
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.0
- symfony/symfony: >=2.3
This package is not auto-updated.
Last update: 2024-11-09 18:38:01 UTC
README
This bundle provides the ability to use FSM tasks runner in your application.
Installation
$ composer require evheniy/simple-task-fsm-bundle "1.*"
Or add to composer.json
"evheniy/simple-task-fsm-bundle": "1.*"
AppKernel:
public function registerBundles()
{
$bundles = array(
...
new Evheniy\SimpleTaskFSMBundle\SimpleTaskFSMBundle(),
);
...
Documentation
For using SimpleTaskFSMBundle you need to create state classes.
For example AppBundle/FSM/StateInit:
<?php
namespace AppBundle/FSM;
use Evheniy\SimpleTaskFSMBundle\StateAbstract;
class StateInit extends StateAbstract
{
/**
* @throw \Evheniy\SimpleTaskFSMBundle\Exception\StateException
*/
public function run()
{
//do something...
}
}
Then create FSM manager with this state classes (for example in Command):
use Evheniy\SimpleTaskFSMBundle\FSM;
And
$fsm = new FSM(array(new StateInit()));
foreach($fsm as $state) {
$state->run();
}
OR
$fsm = new FSM(array(new StateInit()));
$fsm->rewind();
while($fsm->valid()) {
$fsm->current()->run();
$fsm->next();
}
If you have exception (You can use Evheniy\SimpleTaskFSMBundle\Exception\StateException) and You need to restart step:
$fsm = new FSM(array(new StateWithError()));
$fsm->rewind();
while($fsm->valid()) {
try {
$fsm->current()->run();// function run() throws StateException
$fsm->next();
} catch (StateException $e) {
//do something
}
}
You can use a lot of states and they will run one by one.
$fsm = new FSM(array(new StateInit(), new StateMainTask(), new StateFinish()));
License
This bundle is under the MIT license.