ahmedebead/workflow-manager

dev-main 2024-08-07 13:36 UTC

This package is auto-updated.

Last update: 2024-09-07 13:46:51 UTC


README

Workflow Manager Logo

工作流管理文档

简介

工作流管理器 是一个强大的 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

提示

  • 输入工作流名称。

详细信息

  1. 生成 DOT 文件
    该命令生成表示工作流条件和动作的 DOT 文件。DOT 文件创建在 app/Workflows/{workflowName}/{workflowName}.dot
  2. 将 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 命令创建和管理工作流、条件和动作。
  • 自定义条件和动作:为条件和动作实现自定义逻辑。
  • 可队列的动作:支持可队列的动作,具有高级功能,如批量处理、失败时回滚和事务管理。
  • 自动化处理:根据工作流自动处理模型。
  • 配置管理:通过配置文件轻松更新和管理工作流。

贡献

欢迎对工作流管理器做出贡献!要做出贡献

  1. 分支仓库。
  2. 创建一个新分支以进行更改。
  3. 提交您的更改并将其推送到您的分支。
  4. 提交一个拉取请求,描述您的更改。

有关详细的贡献指南,请参阅CONTRIBUTING.md文件。

变更日志

有关更改和更新的列表,请参阅CHANGELOG.md文件。

许可

工作流管理器采用MIT许可证。有关更多信息,请参阅LICENSE文件。

联系

如有疑问或需要支持,请联系ahmed3bead或在GitHub上提交一个问题。