规则引擎核心概念

规则引擎的本质是将业务决策逻辑从应用程序代码中分离出来,通过预定义的规则集对输入事实进行推理和计算。理解其核心概念是掌握规则引擎设计与使用的基础。以下逐一解析规则、条件、动作、事实、工作内存、议程以及两种主要的推理方式。

2.1 核心概念一览

概念 英文 简要定义
规则 Rule 由条件与动作组成的业务逻辑单元,通常表示为“IF <条件> THEN <动作>”
条件 Condition / LHS 规则左侧(Left-Hand Side),对事实进行模式匹配的布尔表达式
动作 Action / RHS 规则右侧(Right-Hand Side),条件满足时执行的操作
事实 Fact 被规则引擎评估的对象或数据,通常为POJO或结构化数据
工作内存 Working Memory 存放所有事实的运行时区域,规则引擎在此进行模式匹配
议程 Agenda 存放已激活(条件满足)的规则实例,按优先级排序等待执行
前向链 Forward Chaining 从已知事实出发,逐步匹配规则并执行动作,可能产生新事实
后向链 Backward Chaining 从目标假设出发,反向寻找支持该假设的事实或规则

2.2 规则、条件与动作

规则是规则引擎的基本组成单元。每条规则包含两个部分:

  • 条件(LHS):定义规则何时触发。条件可以包含多个模式(Pattern),模式之间通过 AND/OR 组合。例如:当 交易金额 > 10000 且 交易国家 属于 高风险列表。
  • 动作(RHS):条件满足后执行的操作。动作可以是修改事实、触发告警、调用外部服务、更新工作内存等。例如:设置 交易风险等级 = “高” 并 发送风控通知。
规则示例(伪代码):
规则 "高风险交易拦截"
条件:
    交易.金额 > 50000
    且 交易.账户类型 == "个人"
    且 交易.时间 in [23:00, 06:00]
动作:
    交易.风险等级 = "高"
    交易.状态 = "待审核"
    调用 风控通知服务(交易.用户ID, "高风险交易")

2.3 事实与工作内存

事实是规则引擎推理的对象。在风控场景中,事实可以是交易记录、用户画像、设备指纹、历史行为等。事实通常以对象形式存在,包含多个属性字段。

工作内存是规则引擎的核心运行时区域,所有事实都会被插入到工作内存中。规则引擎通过Rete算法或其它模式匹配算法,在工作内存中高效地评估哪些规则的条件被满足。工作内存支持事实的插入、更新和删除操作,这些操作会触发规则重新匹配。

工作内存特点:
  • 事实插入后立即参与规则匹配
  • 事实更新会触发相关规则的重新评估
  • 事实删除会移除所有与该事实相关的规则激活
  • 工作内存中的事实数量直接影响推理性能

2.4 议程

当规则的条件被工作内存中的事实满足时,该规则的一个实例会被激活,并放入议程中。议程是一个有序队列,按照规则的优先级、冲突解决策略(如最近使用优先、优先级数值排序等)对激活的规则进行排序。规则引擎从议程中依次取出激活的规则并执行其动作。

议程的关键作用:

  • 冲突解决:当多条规则同时满足条件时,决定执行顺序
  • 优先级控制:通过 salience(优先级)属性控制规则执行先后
  • 执行控制:支持议程的暂停、清空、聚焦等操作

2.5 推理方式:前向链与后向链

规则引擎支持两种主要的推理方式,它们在风控场景中有不同的适用场景。

2.5.1 前向链(Forward Chaining)

前向链是从已知事实出发,不断匹配规则并执行动作,动作可能产生新事实,新事实又触发更多规则,形成链式推理。这是风控规则引擎最常用的推理方式。

  • 适用场景:实时风控决策、规则级联、事件驱动处理
  • 特点:数据驱动,适合“当发生某事件时,执行一系列规则”
  • 示例:交易触发 → 检查金额规则 → 检查频率规则 → 检查设备规则 → 输出风险评分

2.5.2 后向链(Backward Chaining)

后向链是从目标假设出发,反向寻找能够证明该假设的事实或规则。引擎会先假设结论成立,然后检查条件是否满足,如果不满足则递归查找子目标。

  • 适用场景:诊断推理、合规检查、目标导向的查询
  • 特点:目标驱动,适合“验证某个结论是否成立”
  • 示例:假设“该交易为欺诈” → 检查是否有规则支持该结论 → 递归检查子条件
选择建议:在风控在线推理场景中,前向链是主流选择,因为风控系统通常由事件(交易、登录等)触发,需要快速响应并执行一系列规则。后向链更适合离线分析、合规审计或需要验证特定假设的场景。

2.6 规则引擎核心架构图

下图展示了规则引擎的核心组件及其交互关系,包括事实输入、工作内存匹配、议程调度和动作执行的全流程。

规则引擎核心架构图 事实输入 交易/用户/设备 工作内存 事实存储与匹配 规则库 规则定义与编译 议程 激活规则排序 规则执行 执行动作(RHS) 动作输出 新事实插入 前向链:事实驱动,逐步推理 后向链:目标驱动,反向验证

2.7 前向链与后向链对比

对比维度 前向链 后向链
推理方向 事实 → 结论 结论 → 事实
驱动方式 数据驱动 目标驱动
适用场景 实时风控、事件处理、规则级联 诊断分析、合规验证、假设检验
执行效率 适合大量事实、少量目标 适合少量事实、明确目标
典型实现 Drools、EasyRules、URule Prolog、部分专家系统
风控应用 交易拦截、反欺诈、额度管理 规则冲突检测、策略回溯

2.8 核心概念关系图

下图展示了规则引擎各核心概念之间的逻辑关系与数据流向,帮助理解它们如何协同工作。

核心概念关系图 规则 条件(LHS) 动作(RHS) 事实 工作内存 议程 推理方式 前向链(事实驱动) 后向链(目标驱动) 模式匹配 激活 规则由条件和动作组成;事实存入工作内存;条件匹配后规则激活进入议程; 前向链从事实出发逐步推理,后向链从目标出发反向验证。

2.9 风控场景中的概念映射

将上述核心概念映射到实际风控场景中,有助于加深理解:

核心概念 风控场景映射 示例
规则 风控策略 “单笔交易金额超过10万元需人工审核”
条件 策略条件 交易金额 > 100000 && 交易渠道 == “线上”
动作 策略执行 设置风险等级=“高”,发送审核通知
事实 风控事件数据 交易对象、用户对象、设备对象
工作内存 风控上下文 当前会话中所有交易、用户、设备数据的集合
议程 策略执行队列 按优先级排序的待执行策略列表
前向链 事件驱动风控 交易发生 → 检查规则 → 执行动作 → 可能触发新规则
后向链 风控回溯分析 假设“该交易是欺诈” → 反向验证各条件是否成立
记忆要点:
  • 规则 = 条件 + 动作,是风控策略的原子单元
  • 工作内存是事实的“容器”,议程是激活规则的“队列”
  • 前向链适合“事件→决策”的在线风控,后向链适合“结论→验证”的离线分析
  • 理解这些概念是后续学习规则引擎架构、算法和优化的前提