这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
今天的课程主要讲的是有关规则引擎设计和实现
知识点
1.规则引擎的概念,解决了什么问题
2.规则引擎的设计模式
3.一些有关编译原理的知识
详细
1.规则引擎的概念与解决的问题
规则引擎是一种以实现"频繁且通用"的业务变化为目的抽象出来的中间业务层
规则引擎具体执行可以分为接受数据输入,高效解释业务规则,根据业务规则输出决策结果几个过程
使用规则引擎可以把复杂、重复的业务规则同各个业务系统分离开,以提高业务逻辑的复用能力和开发变更效率。
2.设计模式
我理解的大概设计模式总结下来是分为三部分
1.如果......(判断条件)
2.那么.....(执行的操作)
3.否则....(递归判断)
而中间需要实现的组件则是依靠类似json之类的传递信息方式和算法组成
如抽象语法树等
3.有关编译原理
编译:把高级语言代码翻译为中间码,或再由中间码到机器码的过程,总之是把人看得懂的东西翻译成机器看得懂的东西
而在编译过程中需要:
1.语法分析:在词法分析的基础上,识别表达式的语法结构的过程。
2.抽象语法树:表达式的语法结构可以用树来表示,其每个节点(子树)是一个语法单元,这个单元的构成规则就叫”语法”。每个节点还可以有下级节点。
3.类型综合:根据子表达式的类型构造出父表达式的类型。
4.编译时检查:需要提前声明参数的类型,在构造语法树的过程中进行类型检查。
5.运行时检查:可以根据执行时的参数输入的类型,在执行类型中进行类型检查。
例子
qimengxingyuan/young_engine: 简单的规则引擎 (github.com)
这是课程官方给出的简单的规则引擎的例子