【实践课】规则引擎设计与实现| 青训营笔记

73 阅读2分钟

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

今天的课程主要讲的是有关规则引擎设计和实现

知识点

1.规则引擎的概念,解决了什么问题

2.规则引擎的设计模式

3.一些有关编译原理的知识

详细

1.规则引擎的概念与解决的问题

规则引擎是一种以实现"频繁且通用"的业务变化为目的抽象出来的中间业务层

规则引擎具体执行可以分为接受数据输入,高效解释业务规则,根据业务规则输出决策结果几个过程

使用规则引擎可以把复杂、重复的业务规则同各个业务系统分离开,以提高业务逻辑的复用能力和开发变更效率。

2.设计模式

我理解的大概设计模式总结下来是分为三部分

1.如果......(判断条件)

2.那么.....(执行的操作)

3.否则....(递归判断)

而中间需要实现的组件则是依靠类似json之类的传递信息方式和算法组成

如抽象语法树等

3.有关编译原理

编译:把高级语言代码翻译为中间码,或再由中间码到机器码的过程,总之是把人看得懂的东西翻译成机器看得懂的东西

而在编译过程中需要:

1.语法分析:在词法分析的基础上,识别表达式的语法结构的过程。

2.抽象语法树:表达式的语法结构可以用树来表示,其每个节点(子树)是一个语法单元,这个单元的构成规则就叫”语法”。每个节点还可以有下级节点。

3.类型综合:根据子表达式的类型构造出父表达式的类型。

4.编译时检查:需要提前声明参数的类型,在构造语法树的过程中进行类型检查。

5.运行时检查:可以根据执行时的参数输入的类型,在执行类型中进行类型检查。

例子

qimengxingyuan/young_engine: 简单的规则引擎 (github.com)

这是课程官方给出的简单的规则引擎的例子