规则引擎 | 青训营笔记
这是我参与「第五届青训营 」笔记创作活动的第8天
- 本节课主要讲解了规则引擎的观念,以及一个简单规则引擎的设计和实现
规则引擎是什么?
规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。
规则引擎在工程中的应用
-
当使用传统开发,业务逻辑与应用程序代码耦合度高,业务逻辑耦合在应用程序的条件判断语句中,当需求改变时,代码调整的影响大。
-
当加入规则引擎,可以将业务逻辑和程序代码解耦,使得业务逻辑的变化对应用程序的编码影响降低到最小
规则引擎的流程
基本规则引擎就是按照规则解析和理解输入,并按照规则执行正确的请求,响应正确的输出的流程
简单的实践案例
项目案例地址:
基本的流程包含以下方面:
-
词法分析
源代码字符串转换为词法单元(Token)的这个过程 核心是使用有限自动机完成状态转换
-
语法分析
词法分析是识别一个个的单词,而语法分析就是在词法分析的基础上识别出程序的语法结构。这个结构是一个树状结构。这棵树叫做抽象语法树(Abstract Syntax Tree,AST)。树的每个节点(子树)是一个语法单元,这个单元的构成规则就叫“语法”。每个节点还可以有下级节点 使用巴科斯范式可以实现上下文无关文法的具体化、公式化、科学化
-
抽象语法树构建 使用递归下降算法
-
对于一个非终结符,要从左到右依次匹配其产生式中的每个项,包括非终结符和终结符。
-
在匹配产生式右边的非终结符时,要下降一层,继续匹配该非终结符的产生式。
-
如果一个语法规则有多个可选的产生式,那么只要有一个产生式匹配成功就行。如果一个产生式匹配不成功,那就回退回来,尝试另一个产生式。这种回退过程,叫做回溯(Backtracking)。
-
-
类型检查
引用参考
【后端专场 学习资料三】第五届字节跳动青训营 - 掘金 (juejin.cn)
规则引擎的设计与实现.pptx - 飞书云文档 (feishu.cn)