规则引擎核心概念:规则、条件、动作、规则集、规则链、决策表

说实话,很多刚接触规则引擎的同学,一上来就被各种术语搞懵了。规则、条件、动作、规则集、规则链、决策表……这些词看着都认识,但到底怎么串起来?

我当年刚入行时也踩过这个坑。有一次跟产品经理开会,他问我「规则集和规则链到底有啥区别」,我支支吾吾半天没说明白。后来我花了整整一周,把市面上主流的规则引擎源码都翻了一遍,才真正搞懂这些概念的本质。

今天我就用最直白的方式,把这些核心概念给你讲透。

规则(Rule)—— 最小的业务单元

规则是什么?说白了就是「如果……那么……」。

举个例子:

如果 用户年龄 < 18 且 交易金额 > 5000
那么 拒绝交易,并记录风险等级为「高」

这就是一条规则。它由两部分组成:条件和动作。

我个人习惯把规则比作「交通信号灯」—— 条件就是「红灯亮了」,动作就是「停车」。简单、直接、不绕弯子。

核心要点:规则必须满足「原子性」—— 一条规则只做一件事。别把多个逻辑塞进一条规则里,否则后期维护会让你崩溃。

条件(Condition)—— 规则的触发器

条件就是规则的「开关」。条件写得好不好,直接决定了规则引擎的准确率。

条件通常有三种类型:

  • 简单条件:单个字段的比较,比如 amount > 10000
  • 复合条件:多个条件用 AND/OR 组合,比如 age > 18 AND amount > 5000
  • 函数条件:调用外部函数或脚本,比如 isBlacklisted(userId) == true

嗯,这里要注意一个坑。我在项目中遇到过,有人把条件写得特别复杂,嵌套了七八层括号。结果线上出了问题,排查了整整两天才发现是条件优先级写错了。

我的建议:条件尽量保持扁平化。如果条件逻辑太复杂,拆成多条规则,或者用决策表来处理。

动作(Action)—— 规则的执行结果

条件满足了,接下来就是执行动作。动作可以是:

  • 拒绝/通过:最直接的结果,比如「拒绝交易」
  • 标记风险:给事件打标签,比如「风险等级:高」
  • 触发告警:通知风控人员介入
  • 调用外部服务:比如调用黑名单查询接口

动作的设计有个原则:幂等性。同一个动作执行一次和执行多次,结果应该是一样的。我曾经因为没注意这个,导致同一个告警被重复发送了十几次,运维同事差点没把我拉黑。

规则集(Rule Set)—— 规则的集合

单条规则能做的事情有限。实际业务中,我们往往需要把多条规则组合起来,形成一个规则集。

规则集就像是一个「工具箱」,里面装了一堆规则。当事件进来时,规则集里的规则会按顺序执行。

举个例子,一个典型的交易风控规则集可能包含:

规则编号 规则描述 优先级
R001 黑名单用户直接拒绝 最高
R002 单笔金额超过10万需人工审核
R003 同一设备1小时内交易超过5次触发告警
R004 新注册用户首笔交易金额限制

规则集里的规则执行顺序很重要。我一般建议把「拒绝类」规则放在最前面,这样能尽早拦截高风险交易,避免后续规则做无用功。

规则链(Rule Chain)—— 规则的流水线

规则集是「平铺」的,规则链则是「串联」的。

你想想看,有些业务场景下,一条规则的输出结果,需要作为下一条规则的输入条件。这时候就需要规则链了。

规则链就像工厂里的流水线:

  1. 第一步:基础校验规则(检查参数是否合法)
  2. 第二步:黑白名单规则(检查用户是否在黑名单中)
  3. 第三步:行为分析规则(分析用户历史行为)
  4. 第四步:综合评分规则(根据前面步骤的结果计算风险分)

每一步的输出,都会传递给下一步。如果某一步直接拒绝了,后面的步骤就不用执行了——这叫「短路机制」。

注意:规则链的设计要避免「循环依赖」。我曾经见过一个项目,规则A依赖规则B的结果,规则B又依赖规则A的结果,结果两个规则互相等待,直接死锁了。这种问题排查起来特别痛苦。

决策表(Decision Table)—— 规则的表格化表达

当规则的条件和动作组合特别多时,用文字描述就变得很啰嗦。这时候决策表就派上用场了。

决策表本质上是一个二维表格:

  • 行:代表不同的条件组合
  • 列:代表不同的条件字段和动作结果

举个例子,一个简单的信贷审批决策表:

信用评分 收入水平 借款金额 审批结果
> 700 < 50万 通过
> 700 < 30万 通过
600 - 700 < 20万 人工审核
< 600 任意 任意 拒绝

决策表的好处是:一目了然。业务人员可以直接看懂,甚至能自己维护。我在做风控系统时,经常把复杂的规则逻辑转成决策表,然后交给业务团队去配置,省了我不少事。

这些概念怎么串起来?

说了这么多,你可能有点晕。我画了一张图,帮你理清它们之间的关系:

规则引擎核心概念关系图 事件输入 规则集(Rule Set) 规则的集合,按优先级执行 规则链(Rule Chain) 规则串联执行,前一步输出是后一步输入 规则(Rule) 条件 + 动作,最小的业务单元 条件(Condition) 规则的触发器 动作(Action) 规则的执行结果 组成 组成 决策表(Decision Table) 规则的表格化表达,适合多条件组合 可转化为

从这张图你能看到:事件进来后,先进入规则集,规则集里的规则按优先级执行。如果规则之间有依赖关系,就形成规则链。而决策表则是规则的另一种表达形式,适合处理复杂的条件组合。

搞清楚了这些概念,你就能理解规则引擎的核心逻辑了。说白了,规则引擎就是一个「条件判断器」—— 给它一个事件,它根据你配置的规则,输出一个决策结果。

一句话总结:规则是基础,规则集是集合,规则链是流水线,决策表是表格化工具。把这四个概念吃透了,规则引擎你就入门了。

公众号:蓝海资料掘金营,微信deep3321