这是我参与「第五届青训营 」伴学笔记创作活动的第8天。
一、课程目标
- 理解规则引擎的组成部分和应用场景
- 理解规则引擎的核心原理-编译原理
- 设计并实现一个规则引擎
二、课程内容
1、认识规则引擎
-
定义:规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输出入,解释业务规则,做出业务决策。
-
组成部分:
- 数据输入:支持接受预定义的语义编写的规则作为策略集。例如“price > 500”
- 规则理解:按照预定义的词法、语法、优先级、运算符正确理解业务规则表达的语义。
- 规则执行:对以上输入正确的解释和执行。
-
应用场景:风控对抗、活动策略运营、数据分析和清洗
2、编译原理基本概念
- 理解:词法分析,语法分析
- 执行:抽象语法树
- 输入输出:参数注入,类型检查
2.1 词法分析
- 词法分析是把源代码字符串转换为词法单元(Token)的过程。
- 使用有限自动机识别Token
2.2 语法分析
- 在词法分析的基础上,识别表达式的语法结构的过程。
三、实践部分
- 设计组成部分
- 词法(合法Token)
- 数据类型
- 运算符
- 优先级
- 设计词法分析的状态机
- 语法分析
- 优先级的表达
- 语法树
- 语法树执行与类型检查
- 预先定义好操作符的执行逻辑
- 抽象语法树进行后续遍历执行
- 在一个节点的左右子节点执行完成后,分别校验左右子节点的类型是否符合对应操作符的类型检查预设规则。
四、其他
本次课程了解了规则引擎的组成与应用以及设计与实现的方法,编译原理部分基础较差,还需进一步理解。