[实践课]规则引擎的设计与实现 | 青训营笔记

77 阅读2分钟

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

规则引擎的设计与实现

  • 1.认识规则引擎
  • 2.编译原理基本概念
  • 3.设计一个规则引擎
  • 4.规则引擎的实现

1.认识规则引擎

1.什么是规则引擎

规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。

在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。

image.png

2.规则引擎的组成

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

数据输入

支持接受使用预定义的语义编写的规则作为策略集。比如 " price > 500 "

支持接受业务的数据作为执行过程中的参数,比如价格、标签等

规则理解

能够按照预先定义的词法、语法、优先级、运算符等正确理解业务规则所表达的语义。

规则执行

根据执行时输入的参数对策略集中的规则进行正确的解释和执行。同时对规则执行过程中的数据类型进行检查,确保执行结果正确。

3.应用场景

  • 风控对抗:与黑灰产的对抗过程中,策略研发和产品需要能够根据黑灰产特征进行快速识别和对抗。规则引擎作为风控系统的核心,使产研人员能够不断的调整和优化对抗策略,以实现最好的风控识别效果。

  • 活动策略运营:根据用户效果反馈进行运营策略的优化和调整;将服务代码与业务运营逻辑解耦,提高运营策略的迭代效率;方便新玩法的探索和效果验证

  • 数据分析和清洗:对数据进行整理、清洗和转换。

2.编译原理

1.整体步骤

  • 理解

    • 词法分析
    • 语法分析
  • 执行

    • 抽象语法树
  • 输入输出

    • 参数注入
    • 类型检查

3.规则引擎设计

1.目标

支持特定的词法、运算符、数据类型和优先级。并且支持基于以上预定义语法的规则表达式的编译和执行。 其中,词法指符合规范的Token,比较具体;数据类型就是字符串、布尔值、int、float这样的大类。

2.流程

  • 设计词法分析的状态机 image.png 其中,蓝色圆是最后的输出结果。最下面一行是逐步输入判断,毕竟两个输出之间操作有关系。

  • 进行语法分析,根据巴科斯范式列出语法树