初识规则引擎 | 青训营笔记

73 阅读3分钟

认识规则引擎

什么是规则引擎

  • 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

  • 优点:降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本

    • 解决开发人员重复编码问题
    • 业务决策与服务本身解耦,提高服务的可维护性
    • 缩短开发路径,提高效率

组成部分

  • 数据输入:支持接受使用预定义的语义编写的规则作为策略集

    • 例:“price>500”
  • 规则理解:能够按照预先定义的业务规则所表达的语义

  • 规则执行:根据执行时输入的参数对策略集中的规则进行正确的解释和执行。并且能检查执行过程中的数据以保证结果正确

应用场景

  • 风控对抗:与黑灰产对抗过程中,风控产品的核心就是规格引擎,使科研人员能不够调整和优化对抗策略,以实现最好的风控识别效果
  • 活动运营:业务活动的运营时需要及时根据用户效果反馈进行运营策略的优化和调整
  • 数据分析和清洗:对数据进行整理、清洗和转换。数据分析师可以根据不同的需求来自定义数据处理的规则,方便快捷的产出所需的数据

编译原理基本概念

理解

  • 词法分析:把源代码字符串转换为词法单元(Token)的过程

    • 有限状态自动机:是一个状态机,此状态机在任何一个状态,基于输入的字符都能做一个确定的状态转换
  • 语法分析:在词法分析的基础上,识别出表达式的语法结构

    image.png

    • 识别后转换成抽象语法树

执行

  • 抽象语法树:表达式抽象语法结构的树状表示,对于一个表达式,抽象语法树一定是唯一确定的

    • 每个节点都是一个语法单元,都是第一步词法分析产生的token,这个单元的构成规则叫做语法。每个节点还有下级节点

    image.png

    • 相关概念(可以自行查阅资料了解)

      • 上下文无关语法 Context-Free Grammar:语言句子无需考虑上下文即可判断正确性。可使用巴科斯范式表达式(BNF)来表达

        • 产生式:一个表达式可以由另外已知类型的表达式或符号推导产生

          image.png

      • 递归下降算法:自顶向下构造语法树。不断的对Token进行语法展开(下降),展开过程中可能会遇到递归情况

      • 示例(根据上方产生式作示例) image.png

输入输出

  • 类型检查:验证执行结果是否为合适的数据类型。在抽象语法树中,通常回验证某节点的子节点的数据类型是否合法

    • 类型综合:根据子表达式的类型构造出父表达式的类型

      • 例如A和B都是int,则A+B的结果是int
    • 编译时检查 & 运行时检查:检查参数类型是否合法,防止出现问题

      • 在编译阶段即构造语法树的阶段进行,也可以在执行阶段进行
      • 编译时:提前声明参数类型,在构建语法树过程中进行类型检查
      • 执行时:根据执行时的参数输入的值的类型,在执行过程中进行类型检查
  • 参数注入:在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程