evheniy / simple-task-fsm-bundle
SimpleTaskFSMBundle 允许在您的应用程序中使用 FSM 任务运行器。
1.0.0
2015-06-03 16:41 UTC
Requires
- php: >=5.3.0
- symfony/symfony: >=2.3
This package is not auto-updated.
Last update: 2024-09-28 18:00:00 UTC
README
本插件提供了在应用程序中使用 FSM 任务运行器的功能。
安装
$ composer require evheniy/simple-task-fsm-bundle "1.*"
或者添加到 composer.json 文件中
"evheniy/simple-task-fsm-bundle": "1.*"
AppKernel
public function registerBundles()
{
$bundles = array(
...
new Evheniy\SimpleTaskFSMBundle\SimpleTaskFSMBundle(),
);
...
文档
要使用 SimpleTaskFSMBundle,您需要创建状态类。
例如 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...
}
}
然后使用这些状态类创建 FSM 管理器(例如在 Command 中)
use Evheniy\SimpleTaskFSMBundle\FSM;
并且
$fsm = new FSM(array(new StateInit()));
foreach($fsm as $state) {
$state->run();
}
或者
$fsm = new FSM(array(new StateInit()));
$fsm->rewind();
while($fsm->valid()) {
$fsm->current()->run();
$fsm->next();
}
如果您遇到异常(您可以使用 Evheniy\SimpleTaskFSMBundle\Exception\StateException)并且需要重新启动步骤
$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
}
}
您可以使用许多状态,并且它们将依次运行。
$fsm = new FSM(array(new StateInit(), new StateMainTask(), new StateFinish()));
许可证
本插件遵循 MIT 许可协议。