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

101 阅读2分钟

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

一、本堂课主要内容:

  • 认识规则引擎
  • 编译原理基本概念
  • 设计一个规则引擎
  • 规则引擎的实现

1、规则引擎:

当我们在对复杂的业务进行开发时,程序本身逻辑代码和业务代码互相嵌套错综复杂,同时维护成本高可拓展性差

规则引擎即是:可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展性成本的组件! 解决开发人员重复编码问题,缩短开发路径,提高效率,可维护性。

组成部分:

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

主要可应用的场景:

  • 风控对抗
  • 活动策略运营
  • 数据分析和清洗

2、编译原理的基本概念

语法分析-->词法分析-->抽象语法树-->类型检查

  • 词法分析
  • 把源代码字符串转化为词法单元的这个 过程。
  • (例如:李湘通过了青训营选拔,这一个字符串分为 主语 谓语 宾语三个部分)
  • 语法分析
  • 在词法分析的基础上,识别出表达式的语法结构
  • 抽象语法树
  • 表达式抽象语法结构的树,对于一个表达式,抽象语法树一定是唯一确定的。表达式语法结构可以用树来表示,每个节点子树是一个语法单元,这个单元构成的规则就叫做”语法“,每个节点还可以有下级结点
  • (个人理解语法树可以参考红黑树,数据结构中的红黑树与语法树有异曲同工之妙,可以帮助加深理解整个过程)
  • 参数注入、类型检查
  • 在规则执行过程中,使用输入的参数来计算语法树的标识符结点的过程

最后这节课结束,单独设计一个简单的规则引擎还是可以做到,大家可以参考ppt最后的模拟案例,做一个相对简单的就可以了。