做了一个 Laravel/PHP 轻量规则引擎,想听听大家对业务规则管理的看法
最近做了一个开源 PHP 包:RuleFlow PHP。
GitHub:
github.com/yl0711-coder/ruleflow-p...
它是一个面向 PHP / Laravel 项目的轻量 Decision List 规则引擎。
先说明一下,它不是 Drools 这类大型推理引擎,也不是工作流系统,更不是规则后台。它的定位比较小:解决 Laravel 企业项目里业务判断逻辑散落、难测试、难解释的问题。
我想解决的问题是这样的:
很多 Laravel 项目里,风控、审核、营销资格、订单复核这类业务判断,一开始通常就是几个 if/else。项目跑起来之后,规则会慢慢散落到 controller、service、job、validator、domain
service 里。
时间长了之后会出现几个问题:
上线前不好校验规则是否写错
线上命中某个决策后,很难解释为什么命中
测试覆盖困难
业务规则和业务流程代码混在一起
新人接手时很难看懂判断链路
RuleFlow 的思路是把这些判断变成结构化规则,按优先级确定性执行,并提供 trace() / explain() 输出,方便排查和审计。
Laravel 里目前支持:
Service Provider 自动发现
发布
config/ruleflow.phpLaravel Cache Store
php artisan ruleflow:validateLaravel 10 / 11 / 12 CI 测试
中英文文档
Laravel 风控示例
一个简单规则大概是这样:
```php
‘rules’ => [
[
‘name’ => ‘high_risk_order’,
‘priority’ => 100,
‘conditions’ => [
[‘field’ => ‘order.amount’, ‘operator’ => ‘>’, ‘value’ => 1000],
[‘field’ => ‘user.risk_score’, ‘operator’ => ‘<’, ‘value’ => 60],
],
‘action’ => ‘manual_review’,
‘reason’ => ‘High-risk order requires manual review.’,
],
],
执行后可以拿到结果,也可以看解释:
$result = app(\RuleFlow\RuleFlow::class)->evaluate($context);
$result->matched();
$result->action();
$result->explain();
项目地址:
github.com/yl0711-coder/ruleflow-p...
我现在主要想请教大家几个问题:
你们在 Laravel 项目里会遇到这类业务规则散落的问题吗?
这种轻量规则引擎有没有实际使用价值?
API 和文档是否足够清楚?
如果你不会用,主要顾虑是什么?
欢迎直接拍砖,我准备根据真实反馈继续优化。
关于 LearnKu
推荐文章: