karamvirs/here-trigger

:package_description

dev-master 2021-10-04 08:10 UTC

This package is auto-updated.

Last update: 2024-09-04 14:11:34 UTC


README

Latest Version on Packagist Total Downloads Build Status StyleCI

该软件包提供了一种方便的方法来定义复杂的规则,以有条件地处理从 Laravel 应用程序的任何部分触发的某些操作。

示例

  • 例如,在电子商务网站上处理订单时,评估某些规则,如果为真,则发送促销电子邮件、优惠券等。
  • 当信用管理服务上有新的信用报告可用时,评估是否应将客户移动到不同的组。

安装

通过 Composer

$ composer require karamvirs/here-trigger

$ php artisan vendor:publish --provider="Karamvirs\HereTrigger\HereTriggerServiceProvider"

概述

在应用程序的任何位置,您都可以通过触发名称和数据数组来调度 HereTriggerProcessor 任务。

...
...
use App\Jobs\HereTriggerProcessor;
...
...
HereTriggerProcessor::disptach('new_order', ['user' => <User Object>, 'order' => <Order Object>])
...
...

注意:数据数组必须包含将在配置中定义的筛选器中使用的所有数据对象。键名必须与 here-trigger 配置中筛选器部分下定义的键名相匹配

当作业处理时,代码会查看配置文件(here-trigger.php),并检索此触发器的操作。在我们的示例配置中,它们是:['high_value_customer', 'young_international_customer']

评估每个操作(在配置中的 'actions' 键下)的规则表达式,如果为真,则调度在处理器下指定的作业。

工作原理

当您运行 vendor:publish 命令时,以下 3 个文件将被发布

  • config/here-trigger.php
  • app/Helpers/HereTriggerHelper.php
  • app/Jobs/HereTriggerProcessor.php

让我们逐一讨论它们。

config/here-trigger.php

helper_class

设置定义所有筛选值函数的辅助类的路径。如果您想将 HereTriggerHelper 文件移动到其他位置,可以自由更改它。

filters

包含将评估其属性以定义操作规则下的条件的实体或数据对象。在默认示例中,您将在筛选器下看到 3 个条目:user、order、wishlist

在筛选器下的每个实体都有一个筛选器名称、实际的筛选器和用于评估该筛选器值的函数名称。

'total_spent_till_date_more_than_1500' => ['filter' => ['total_spent_till_date', operators::GREATER_THAN, 1500], 'value_function' => 'userTotalSpendTillDate'],

total_spent_till_date_more_than_1500 - 是在操作下的规则表达式中引用的筛选器名称。

'filter' => ['total_spent_till_date', operators::GREATER_THAN, 1500] - 定义实际的筛选器。这里说的是,用户花费的总金额应超过 1500。

'value_function' => 'userTotalSpendTillDate' - 告诉函数名称,您将在辅助文件(HereTriggerHelper.php)中定义,并将用于计算该属性(在这种情况下是 total_spent_till_date)的值。如果没有指定值函数,则假定该属性可直接在传递的对象上访问。

actions

操作包含一个规则和一个处理器数组

规则是一个必须评估为真的表达式,处理器才能运行。表达式可以有括号,但不能嵌套相同类型的括号。这意味着您可以使用:[ xyz && { abc OR (mno && pqr)}] 但不能使用:{xyz {abc }}

表达式中的术语是定义在筛选器部分中的实际筛选器名称。

'processors' 是一个包含您将定义的作业的数组,当规则评估为真时,将执行这些作业的代码。

示例配置提到了 2 个这样的作业,但没有实现它们:App\Jobs\Send15PercentDiscount App\Jobs\HighValueNotification

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

请参阅contributing.md以获取详细信息和工作清单。

安全性

如果您发现任何与安全相关的问题,请发送电子邮件至author@email.com,而不是使用问题跟踪器。

许可证

MIT。有关更多信息,请参阅许可证文件