ahmedebead / workflow-manager
Requires
- php: ^8.1
- convertapi/convertapi-php: ^2.0
- graphp/graph: ^1@dev
- graphp/graphviz: ^1@dev
- laravel/framework: ^10.0
Requires (Dev)
- squizlabs/php_codesniffer: ^3.10
This package is auto-updated.
Last update: 2024-09-07 13:46:51 UTC
README
工作流管理文档
简介
工作流管理器 是一个强大的 Laravel 扩展包,旨在简化并自动化 Laravel 应用程序中的工作流管理。无论您是管理复杂的业务流程还是简单的任务序列,此扩展包都提供了一种强大且灵活的解决方案。
使用 工作流管理器,您可以
- 定义工作流:轻松设置模拟应用程序流程的工作流,将各种条件和动作链接起来。
- 创建和管理条件:定义自定义条件,以控制何时执行动作,提供对工作流的精细控制。
- 定义和执行动作:实现由特定条件触发的动作,自动化重复性任务并确保流程顺利执行。
- 可队列的动作:可选地使动作可队列以提高性能和可靠性。
- 可视化工作流:将工作流导出为流程图,提供对流程的清晰、直观表示。
该扩展包与 Laravel 的现有功能无缝集成,让您能够利用其功能而无需向您的应用程序添加不必要的复杂性。通过使用 工作流管理器,您可以提高应用程序工作流的可维护性、可扩展性和效率。
通过简单的命令和直观的配置快速入门,并根据需要探索高级功能以适应您的特定用例。
安装
要安装工作流管理器,请使用 Composer
composer require ahmedebead/workflow-manager
配置
使用以下 Artisan 命令发布配置文件
php artisan vendor:publish --tag=config
这将创建一个 config/workflow.php
文件,您可以在其中定义工作流、条件和动作。
命令
创建工作流
生成新的工作流并更新配置文件,并在 app/Workflows 中创建工作流类的必要文件夹。
用法
php artisan workflow:create
示例
Enter the workflow name: OrderWorkflow
Enter the model class for this workflow (e.g., \App\Models\User): \App\Models\Order
Workflow 'OrderWorkflow' created successfully.
创建条件
为工作流创建新的条件类。
用法
php artisan workflow:condition
示例
Enter the workflow name: OrderWorkflow
Enter the condition name: IsPending
Condition 'IsPending' created successfully.
示例条件
<?php namespace App\Workflows\Users\Conditions; use AhmedEbead\WorkflowManager\Contracts\ConditionInterface; class UserActivatedCondition implements ConditionInterface { public function check($model) { // Your Condition logic here // return $model->status == 'active'; } }
创建动作
为条件创建新的动作类。您可以选择使动作可队列或不。
用法
php artisan workflow:action
示例
Enter the workflow name: OrderWorkflow
Enter the condition name this action is associated with: IsPending
Enter the action name: SendEmail
Should this action be queueable? (yes/no): yes
Action 'SendEmail' created successfully with queueable support.
示例可队列动作
<?php namespace App\Workflows\Order\Actions; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; use Throwable; class ReserveStockAction implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $model; public function __construct($model) { $this->model = $model; } public function handle() { try { Log::info("Executing ReserveStockAction for model: " . get_class($this->model)); // Your action logic here } catch (Throwable $e) { Log::error('ReserveStockAction failed.', ['exception' => $e, 'model' => get_class($this->model)]); if ($this->attempts() < config('workflow.retry.attempts')) { $this->release(config('workflow.retry.delay')); } else { $this->fail($e); } } } }
示例常规动作
<?php namespace App\Workflows\Users\Actions; use AhmedEbead\WorkflowManager\Contracts\ActionInterface; class ReserveStockAction implements ActionInterface { public function execute($model) { // Your action logic here } }
导出工作流
将工作流及其条件和动作导出为流程图
php artisan workflow:export
提示
- 输入工作流名称。
详细信息
- 生成 DOT 文件
该命令生成表示工作流条件和动作的 DOT 文件。DOT 文件创建在app/Workflows/{workflowName}/{workflowName}.dot
。 - 将 DOT 转换为 PNG(可选)
如果您的系统已安装 Graphviz,则将 DOT 文件转换为 PNG 图像以方便可视化。PNG 文件与 DOT 文件保存在同一目录中。
重要:要将 DOT 文件转换为 PNG 图像,您必须安装 Graphviz。如果没有安装 Graphviz 或转换失败,您将看到警告消息。
安装 Graphviz
按照以下说明安装 Graphviz
-
Ubuntu/Debian
sudo apt-get install graphviz
-
macOS
brew install graphviz
-
Windows
Download and install Graphviz from the Graphviz website.
功能
- 动态工作流管理:通过 Artisan 命令创建和管理工作流、条件和动作。
- 自定义条件和动作:为条件和动作实现自定义逻辑。
- 可队列的动作:支持可队列的动作,具有高级功能,如批量处理、失败时回滚和事务管理。
- 自动化处理:根据工作流自动处理模型。
- 配置管理:通过配置文件轻松更新和管理工作流。
贡献
欢迎对工作流管理器做出贡献!要做出贡献
- 分支仓库。
- 创建一个新分支以进行更改。
- 提交您的更改并将其推送到您的分支。
- 提交一个拉取请求,描述您的更改。
有关详细的贡献指南,请参阅CONTRIBUTING.md文件。
变更日志
有关更改和更新的列表,请参阅CHANGELOG.md文件。
许可
工作流管理器采用MIT许可证。有关更多信息,请参阅LICENSE文件。
联系
如有疑问或需要支持,请联系ahmed3bead或在GitHub上提交一个问题。