机翻:使用此 Laravel 工作流程包创建操作和工作流程

原文链接:Create Actions and Workflows with this Laravel Workflows Package - Laravel News

Khalil BouzidiSafemood/laravel-workflow包通过清晰的操作定义和事件跟踪简化了 Laravel 中的工作流程。使用此包,您可以定义复杂的工作流程,将其分解为操作,并定义事件。

在较高层次上,该包定义了Workflow类,它由一个或多个Action类组成。您可以使用包提供的命令创建操作和工作流程:

php artisan make:workflow PaymentWorkflow
php artisan make:action ValidateCartItems

该项目的自述文件包含以下ValidateCartItems操作的示例:

namespace App\Actions;

use Safemood\Workflow\Action;

class ValidateCartItems extends Action
{
    public function handle(array &$context)
    {
        // Simulate extra validation logic
        if (empty($context['cart'])) {
            throw new \Exception('Cart is empty');
        }

       // you can pass data to the next action if you want
      $context['validated'] = true;

    }
}

在工作流的handle()方法中,您可以定义之前、主要和“之后”操作并跟踪事件。以下是包自述文件中的 PaymentWorkflow handle方法示例:

public function handle()
{
    // Actions to be executed before the main action
    $this->addBeforeActions([
        new ValidateCartItems(),
        new CalculateTotal()
    ]);

    // The main action of the workflow
    $this->addMainAction(new MakePayment());

    // Actions to be executed after the main action
    $this->addAfterAction(new SendEmails()); // Normal laravel Job in this example

    // Observers to register for specific entities
    $this->registerObservers([
        Order::class => OrderObserver::class,
    ]);

   $this->trackEvents([
        PaymentProcessed::class
    ]);
}

最后,您可以运行工作流程并断言工作流程的结果:

$context = [
    'cart' => [
        ['id' => 1, 'name' => 'Product A', 'price' => 100, 'quantity' => 2],
        ['id' => 2, 'name' => 'Product B', 'price' => 50, 'quantity' => 1]
    ],
    'user_id' => 123
];

// Execute the PaymentWorkflow with the provided context
$paymentWorkflow = (new PaymentWorkflow)->run($context);

// Check if the workflow execution was successful
$success = $paymentWorkflow->passes();

// Check if the workflow execution failed
$failure = $paymentWorkflow->failed();

您可以了解有关此软件包的更多信息、获取完整的安装说明并在 GitHub 上查看源代码。您可以使用以下命令通过 Laravel v10 和 v11 的 Composer 安装此软件包:

composer require safemood/laravel-workflow
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

在什么场景使用

6个月前 评论
sanders

这文章太水了(我指的原文),基本上是把 github.com/safemood/laravel-workfl... 文档用自己的话又说了一遍,还没说全。

要说使用场景的话,就是适合所有使用场景,人家举得例子就是个基本的控制器方法。如果说和散着写代码有什么不同的话,就是人家将业务逻辑抽象为 “可复用的” 流程和动作。前面的引号取决于你的业务中是否真的存在流程或动作复用情况。

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!