规则引擎的基础知识

4 阅读5分钟
  • 规则引擎是什么
  • 规则的抽象模型
  • 三种主流架构
  • 如何支持可视化 + 高级条件 + 多规则组合
  • 如何执行(条件计算、优先级、冲突解决)
  • 实际代码示例(Node.js / Java 通用思想)
  • 适用于 AI Agent 的规则执行方式

🧩 1. 什么是规则引擎?

规则引擎(Rule Engine)是把 业务逻辑从代码中剥离,改为以“规则”驱动执行的系统。

比如:

IF 客户年龄 > 60 AND 账户余额 > 100000 THEN 标记为高净值用户
IF 订单金额 > 500 THEN 赠送优惠券
IF 用户行为 = 连续三天登录 THEN 启动成长任务

不再写死在代码里,而是配置化:

  • 可视化
  • 可修改
  • 支持热更新
  • 业务方可编辑

🎯 2. 规则引擎的核心抽象模型

无论你怎么做,规则引擎都可以抽象成:

Rule {
    id: string,
    priority: number,         // 执行优先级
    conditions: Condition[],  // AND / OR 条件集合
    actions: Action[]         // 满足条件后的动作
}

条件 Condition

Condition {
    fact: string,     // 数据源,例如 user.age
    operator: string, // >, <, ==, in, between ...
    value: any        // 值
}

动作 Action

Action {
    type: string,      // 比如 send_coupon / update_tag / reject_order
    params: object
}

你会发现:

规则引擎本质是:

一个解释规则 + 执行动作的引擎****


🔨 3. 三种规则引擎架构(根据复杂度)

① 简单规则引擎(适用于前端、Node、小型系统)

特点:

  • JSON 写规则

  • if/else 计算

  • 顺序执行

适合场景:

  • 表单校验

  • 营销活动

  • 简单风控

② AST + 解释器模式规则引擎(中型系统)

特点:

  • 条件会被转换为 AST(抽象语法树)

  • 支持复杂公式、嵌套计算

适合:

  • 折扣计算

  • 复杂筛选

  • 工作流条件

技术点:类似 Excel 公式的执行器。

③ Rete Algorithm(大型系统)

这是 Drools、Clara 等专业引擎使用的算法。

特点:

  • 超高速匹配大量规则

  • 规则之间共享部分条件,提高效率

  • 能处理 10 万条以上规则

适合:

  • 信贷评分模型

  • 反欺诈风控(高并发)

  • 大型推荐系统

你可能暂时用不到 Rete,但理解其思想即可。


🧠 4. 规则的执行流程(通用)

所有规则引擎都有类似执行流程:

输入事实 Facts → 条件匹配 → 执行动作 → 输出结果

流程细化:

  1. 载入规则集****

  2. 从上下文中取 Facts(数据)****

  3. 按优先级排序

  4. 对每条规则执行:

    • AND 条件全部满足?
    • OR 条件任意满足?
  5. 如果匹配成功 → 执行动作

  6. 输出执行日志 / 新 Fact

  7. 可根据 mode 决定停止或继续:

    • first-match
    • all-match
    • conflict-resolve

🧰 5. 条件模型设计(支持复杂表达式)

通常你要支持以下条件:

A > 10
A < 20
A between [1,5]
A in ["A","B","C"]
(A > 10 AND B < 5) OR C == true

可以用树结构表示:

ConditionGroup (operator: AND/OR)
  - Condition 1
  - ConditionGroup (operator: OR)
       - Condition 2
       - Condition 3

🎨 6. 如何做可视化规则?

三种方案:

① 表格式(低复杂度)

类似后台营销系统的规则:

字段操作符
age18

② 公式编辑器(中复杂度)

类似 Excel:

IF age > 18 AND (balance > 10000 OR level > 3)

可将公式解析成 AST,然后执行。

③ 可视化节点式(中/高级)

类似 Node-RED 或者 AWS Step Functions:

用户数据 → 条件节点 → 动作节点

非常适用于业务人员。


🚀 7. 动作执行器设计

动作通常是:

  • 打标(标签系统)

  • 消息推送

  • 调用外部 API

  • 给用户发券

  • 更新数据库字段

  • 触发工作流下一节点

动作设计成插件化结构:

ActionRegistry.register("send_coupon", sendCouponAction)
ActionRegistry.register("add_tag", addTagAction)

然后规则执行时:

for action in rule.actions:
    ActionRegistry[action.type].execute(action.params)

可扩展性极强。


🧩 8. 冲突解决策略(专业规则引擎才有)

如果多条规则都命中怎么处理?

  • 优先级高先执行(most common)****

  • 只执行第一条命中规则****

  • 执行所有命中规则****

  • 权重求和 → 根据权重选择动作(AI 推荐常用)

你可以根据场景决定策略。


🏗️ 9. 实际代码示例(Node.js 简版规则引擎)

function evaluateCondition(facts, condition) {
  const left = facts[condition.fact];
  const op = condition.operator;
  const right = condition.value;

  switch (op) {
    case ">": return left > right;
    case "<": return left < right;
    case "==": return left == right;
    case "in": return right.includes(left);
    case "between": return left >= right[0] && left <= right[1];
  }
}

function evaluateRule(facts, rule) {
  return rule.conditions.every(cond => evaluateCondition(facts, cond));
}

function executeActions(rule) {
  rule.actions.forEach(act => {
    console.log("Execute action:", act.type, act.params);
  });
}

function runRules(facts, rules) {
  rules.sort((a, b) => b.priority - a.priority);

  for (let r of rules) {
    if (evaluateRule(facts, r)) {
      executeActions(r);
    }
  }
}

🧠 10. 和 AI Agent 结合(非常前沿的做法)

大模型可以用于:

LLM 做规则生成

业务说一段话:

年龄 > 30 并且是会员,就给他发 10 元券

LLM 转成结构化规则:

{
  "priority": 10,
  "conditions": [
    {"fact": "age", "operator": ">", "value": 30},
    {"fact": "is_member", "operator": "==", "value": true}
  ],
  "actions": [
    {"type": "send_coupon", "params": {"amount": 10}}
  ]
}

LLM 做规则解释(review)

LLM + 规则引擎做自动决策(混合智能)

这现在是大趋势。


📌 总结:规则引擎怎么设计?

核心理念:规则 = 条件 + 动作,规则引擎就是解释规则并执行动作的系统。****

设计时关注:

  1. 规则模型(结构化 JSON)
  2. 条件解析(AST / 公式)
  3. 执行动作(插件化)
  4. 优先级 / 冲突策略
  5. 可视化 UI
  6. 可动态更新(热插拔)
  7. 全日志(审计非常重要)
  8. 与 AI 结合生成规则 / 分类规则 / 校验规则

如果你愿意,我还能深入讲:

  • 带有 DSL(领域语言) 的规则引擎如何做
  • 如何实现 Excel 风格公式引擎****
  • 如何实现 百万级规则执行(Rete)****
  • 如何实现 拖拽式规则编辑器 UI****
  • 如何基于规则引擎构建“风控系统”或“营销系统”