规则引擎 | 青训营笔记

58 阅读2分钟

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

规则引擎器的定义

接受数据的输入,解释业务的规则,并根据业务规则做出业务决策,解决了开发人员重复编码的问题,使得业务决策与服务本身解耦,提高了服务的可维护性。

规则引擎器的组成部分

  1. 数据输入
  2. 规则理解
  3. 规则执行

应用场景

1.风控对抗 2.活动策略运营 3.数据分析和清洗

编译原理(课堂重点)

流程:源代码字符串先被词法分析功能转为词法单元(token);通过语法分析识别出表达式的语法结构;抽象的语法经过抽象语法树(中序遍历)表示;最后进行参数注入以及类型检查。

词法分析

定义:源代码字符串先被词法分析功能转为词法单元(token) 工具:有限自动机(识别token)

image.png

语法分析

定义:通过语法分析识别出表达式的语法结构

image.png

抽象语法树

定义:抽象的语法经过抽象语法树(中序遍历)表示

image.png 重点:递归下降算法(自顶向下构造语法树),不断地对token进行语法展开(抽象树就是中序遍历) 注:执行过程是后序遍历,

总结

之前没接触过规则引擎,以为所有的规则大多都是if,else写出来的(毕竟实际开发能跑就行哈哈哈哈),学习过后感觉开发博大精深啊,将很多繁琐的业务集合成一个微服务模块,实现了逻辑业务的解耦,同时也进一步回顾了数据结构基本的树遍历(怪不得考研非得考数据结构,去年刷leetcode还是现在这个离不开数据结构,所谓开发就是数据结构的开发哈哈哈哈瞎说的俺)