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

165 阅读3分钟

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

今天的课程是介绍规则引擎,涉及到了一部分编译原理的知识,下面是我对今天学习进行的整理总结,希望能够对大家有所帮助。

课程重点内容

本节课程主要是围绕规则引擎展开,重点内容如下:

  • 规则引擎概念及应用场景
  • 编译原理相关知识
  • 简易规则引擎的设计
  • 简易规则引擎的实现

知识点介绍

下面我将对规则引擎和相关的编译原理知识进行总结介绍,关于课程中的规则引擎的设计与实现没有进行总结,大家可以去github查看。

规则引擎定义

规则引擎是一种嵌入在应用程序中的组件。规则引擎可以接受数据输入,解释业务规则,并根据业务规则做出对应的业务决策。

学习过编译原理的同学可以把它看作一门语言的解释器(这是我的理解,课程中实现的规则引擎也是如此的。)

规则引擎可以解决开发人员重复修改代码的问题,使得业务决策与服务本身解耦,提高服务的可维护性。

规则引擎应用场景

在与黑灰产的对抗过程中,研发人员需要根据黑灰产特征快速进行识别和对抗,规则引擎可以帮助研发人员快速的实现风控对抗。

在活动策略调整和数据分析等功能中,规则引擎同样也发挥着十分重要的作用。

编译原理相关知识

编译的过程主要包括理解语句(需要进行词法分析和语法分析)、执行语句(需要抽象出语法树)、进行输入输出(将参数输入,进行类型检查等)。

词法分析其实就是将字符串转换成一个个词法单元(Token)的过程。我们可以通过设计不同规则的自动机来识别Token。

词法分析完成之后就要进行语法分析,语法分析就是识别表达式语法结构的过程。通过语法分析我们可以将语法抽象成语法树。

最后要对类型做检查,可以在编译时检查也可以在运行时检查。如果在编译时检查,需要提前声明参数的类型,在构建语法树的过程中进行检查;如果在执行时检查,可以根据执行时输入参数的值类型,在执行过程中进行类型检查。

课后总结

本节课程最大的收获就是了解了规则引擎,其次是关于编译原理相关知识的学习。课后的规则引擎设计案例也十分值得学习,大家有时间可以部署一下,阅读一下代码。