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

18 阅读1分钟

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

什么是规则引擎

规则引擎 (RE) 是用于自动管理某些高度可变过程的模块。 基本概念包含将过程中涉及的对象与实现这些过程的逻辑分离。

我的理解是,规则引擎是按照一定的设计模式,对代码进行特定格式的提取,并制定规则。有了规则引擎,能够简化代码,开发者只需要将需要更改的代码输入进去,程序就会自动的进行修改,也就是根据业务规则做出业务决策。老师给的这张图就很形象的把规则引擎如何应用表现出来,这样就大大解耦,效率也得到了提高。

image.png

组成部分

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

词法分析(将一个字符串分解为多个token) => 语法分析(针对token进行检查,包括token的顺序以及token是否符合所定义的语法) => 构造抽象语法树并进行类型检查

设计一个规则引擎

设计一个规则引擎,支持特定的词法,运算符,数据类型和优先级,并且支持基于以上与定义语法的规则表达式的编译和执行。

词法(合法Token)

参数:由字母数字下划线组成,并且不能以数字开头 布尔值 字符串 十进制int 十进制float 预定义运算符:+,-

设计词法分析状态机 image.png

语法树的执行

对抽象语法树进行后序遍历

实现规则引擎

首先需要安装Docker环境以及安装docker-compose工具,按照这个说得来