php-utils / laravel-workflow
laravel 5.6, 5.7 的简单工作流
该包的官方仓库似乎已删除,因此该包已被冻结。
v2.1.1
2018-12-18 09:04 UTC
Requires
- php: ^7.1.3
- illuminate/bus: 5.6.* | 5.7.*
- illuminate/support: 5.6.* | 5.7.*
- php-utils/workflow: ^2.0
README
支持 5.6 , 5.7
安装
composer require php-utils/laravel-workflow
将以下内容添加到 config/app.php
'providers' => [
...
Workflow\Providers\WorkflowServiceProvider::class,
],
'aliases' => [
...
'Workflow' => Workflow\Facades\Workflow::class,
]
运行
php artisan vendor:publish
Select: Provider: Workflow\Providers\WorkflowServiceProvider
使用方法
- 根据示例创建您的主题配置
- 您的主题应该实现
Workflow\Contracts\Subject
- 为每个转换创建命令,它应实现
Workflow\Contracts\Command
或扩展Workflow\Commands\Command
。如果您想延迟处理耗时的命令,应从Workflow\Commands\QueuedCommand
扩展。 - 如果您不需要按角色分离转换,可以跳过实现
Workflow\Contracts\Who
- 如果您不需要将上下文传递给命令,可以跳过实现
Workflow\Contracts\Context
示例
安装后,您可以在 config/workflow.php 中查看示例。
完整示例: https://github.com/vadim-ostapenko/workflow/blob/master/README.md
配置示例
'lesson' => [
'states' => [
'started',
'paused',
'finished'
],
'transitions' => [
[
'name' => 'pause',
'routes' => [
[
'from' => 'started',
'to' => 'paused',
'who' => ['student']
]
]
],
[
'name' => 'finish',
'routes' => [
[
'from' => 'started',
'to' => 'finished',
'who' => ['teacher']
],
[
'from' => 'paused',
'to' => 'finished',
'who' => []
]
]
]
]
]
$lesson = new \WorkflowExample\Subject\Lesson();
$student = new \WorkflowExample\Who\Student();
$teacher = new \WorkflowExample\Who\Teacher();
$workflow = new \Workflow\BusWorkflow($lesson, \Workflow\Facades\Workflow::get('lesson'));
$workflow->can('answer', $teacher); //false
$workflow->make('pause', $student); //pause
$workflow->make('finish', $student); //finish