规则引擎设计与实现 | 青训营笔记

252 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第8天。

0、重点

  • 规则引擎
  • 编译原理

1、规则引擎

定义

全称为业务规则管理系统,英文名为 BRMS(即 Business Rule Management System)。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块(注:领域特定语言)编写业务决策(业务规则)。由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。

规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台,通过接受动态数据流入根据内部的规则得出决策结果的处理器,以抽离业务逻辑保证其独立维护和动态更新。

组成部分

  • 数据输入
  • 规则理解
  • 规则执行

应用场景

  • 风控对抗
  • 活动策略运用
  • 数据分析和清洗

2、编译原理

词法分析

把源代码字符串转换为token的过程。

李想通过了青训营选拔

李想 通过了 青训营选拔

语法分析

在词法分析的基础上识别表达式的结构

李想+通过了+青训营选拔

主+谓+宾

抽象树语法

表达式的语法结构可以用树来表示,每个节点(子树)是一个语法单元,这个单元构成的规则就叫做语法。每个节点还可以有下级节点。

  • 上下文无关的语法
    • 使用巴克斯范式表达(BNF)
  • 递归下降算法
    • 自顶向下构造语法树

类型检查

  • 类型综合
    • 根据子表达式的类型构造父表达式类型
  • 编译时检查 & 运行时检查
    • 类型检查可以发生在表达式的编译阶段,即构造语法树的阶段;也可以发生在执行的阶段。

      编译时:需要提前声明参数的类型。在构建语法树的过程中进行类型检查。

      执行时:可以根据执行时的参数输入的值类型,在执行过程中进行类型检查。

3、设计规则引擎

4、实现规则引擎