samsin33 / laravel-decision-engine
本包为Laravel中的决策引擎提供支持。
Requires
- php: ^8.0
- ext-json: *
- guzzlehttp/guzzle: ^7.2
- illuminate/console: ^9.0
- illuminate/container: ^9.0
- illuminate/contracts: ^9.0
- illuminate/cookie: ^9.0
- illuminate/database: ^9.0
- illuminate/encryption: ^9.0
- illuminate/http: ^9.0
- illuminate/log: ^9.0
- illuminate/notifications: ^9.0
- illuminate/routing: ^9.0
- illuminate/support: ^9.0
- illuminate/view: ^9.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-18 23:12:25 UTC
README
为Laravel提供的决策引擎包。本包为Laravel版本9提供决策引擎的支持。
安装
使用composer安装samsin33/laravel-decision-engine包。
$ composer require samsin33/laravel-decision-engine
数据库迁移
决策引擎服务提供者注册了其自己的数据库迁移目录,因此请记住在安装包后迁移您的数据库。迁移将向您的数据库添加3个表。
$ php artisan migrate
如果您需要覆盖本包提供的迁移,可以使用vendor:publish Artisan命令发布它们。
$ php artisan vendor:publish --tag="decision-engine-migrations"
如果您想完全防止决策引擎的迁移运行,可以使用DecisionEngine提供的ignoreMigrations方法。通常,此方法应在AppServiceProvider的register方法中调用。
use Samsin33\DecisionEngine\DecisionEngine; /** * Register any application services. * * @return void */ public function register() { DecisionEngine::ignoreMigrations(); }
发布配置
如果您需要覆盖本包提供的配置文件,可以使用vendor:publish Artisan命令发布它们。
$ php artisan vendor:publish --tag="decision-engine-config"
环境配置
您可以更改模型的数据库连接,默认为DB_CONNECTION,否则为mysql。如果您想更改此连接,可以在.env文件中指定不同的连接。
DECISION_ENGINE_CONNECTION=mysql
您可以更改模型的数据库主键类型,默认为bigInt。如果您想将其更改为uuid,可以在.env文件中指定。
目前仅支持位整数和uuid。
DECISION_ENGINE_PRIMARY_KEY_TYPE=uuid
发布视图
您需要覆盖本包提供的视图文件并根据您的设计进行更改,可以使用vendor:publish Artisan命令发布它们。
$ php artisan vendor:publish --tag="decision-engine-views"
显示和创建规则引擎
要访问索引页和创建页的规则引擎,请转到路由。
/decision-engine/rule-engines /decision-engine/rule-engines/create
您可以将这些路由添加到菜单中以便访问。所有必需的路由都已注册。
规则引擎类型
目前本包仅支持两种类型的规则引擎。
- 代码 - 将执行一组代码,这些代码将根据您提供的输入放置在业务规则列中。
- 命令 - 将执行一个命令,这些命令将根据您提供的输入放置在业务规则列中。
路由守卫
您的Web路由包含在web_guards中。您的API路由包含在api_guards中。您可以在配置文件中更改它们。
示例 - 制作计算器
作为一个例子,让我们制作一个计算器。
创建规则引擎
名称 - 计算器
类型 - 代码
验证 - 这应该是一个包含您的输入验证规则的数组。例如:[]。您也可以创建自己的验证并使用它们。
状态 - 它应该为活动状态以便执行规则。
您的业务规则应始终返回一个值以显示输出。
对于命令示例。使用以下内容创建命令Calculator:
签名 - 计算 {num1} {num2} {process}
并且在“业务规则”字段应该是
业务规则 - 计算 $num1 $num2 $process
命令类型的输出有2个属性:result 和 info
result - 返回命令的整数。
info - 保存命令的输出,即任何打印在行、信息、注释、问题、警告和错误方法中的内容。
在输入上执行业务规则
要执行业务规则,您需要调用API。
URL: /decision-engine/rule-executions Headers: { "accept": "application/json", "content-type": "application/json" } # Other headers attributes depends on your api guards. Request: { "rule_execution": { "rule_engine_id": 1, "input": { "num1": 45, "num2": 6, "process": "add" } } } Response: { "output": { "status": "Code Success", "output": { "add": 51 } }, "rule_execution": { "rule_engine_id": 1, "input": { "num1": 45, "num2": 6, "process": "add" }, "id": 1, "status": "Code Success", "updated_at": "2022-11-20T16:10:59.000000Z", "created_at": "2022-11-20T16:10:58.000000Z", "output": "{\"add\":51}" } }
注意
- 输入应该是关联数组。
- 您的输入键将被转换为业务规则值中的变量。