这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
规则引擎的设计与实现
- 1.认识规则引擎
- 2.编译原理基本概念
- 3.设计一个规则引擎
- 4.规则引擎的实现
1.认识规则引擎
1.什么是规则引擎
规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。
在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。
2.规则引擎的组成
数据输入、规则理解、规则执行
数据输入
支持接受使用预定义的语义编写的规则作为策略集。比如 " price > 500 "
支持接受业务的数据作为执行过程中的参数,比如价格、标签等
规则理解
能够按照预先定义的词法、语法、优先级、运算符等正确理解业务规则所表达的语义。
规则执行
根据执行时输入的参数对策略集中的规则进行正确的解释和执行。同时对规则执行过程中的数据类型进行检查,确保执行结果正确。
3.应用场景
-
风控对抗:与黑灰产的对抗过程中,策略研发和产品需要能够根据黑灰产特征进行快速识别和对抗。规则引擎作为风控系统的核心,使产研人员能够不断的调整和优化对抗策略,以实现最好的风控识别效果。
-
活动策略运营:根据用户效果反馈进行运营策略的优化和调整;将服务代码与业务运营逻辑解耦,提高运营策略的迭代效率;方便新玩法的探索和效果验证
-
数据分析和清洗:对数据进行整理、清洗和转换。
2.编译原理
1.整体步骤
-
理解
- 词法分析
- 语法分析
-
执行
- 抽象语法树
-
输入输出
- 参数注入
- 类型检查
3.规则引擎设计
1.目标
支持特定的词法、运算符、数据类型和优先级。并且支持基于以上预定义语法的规则表达式的编译和执行。 其中,词法指符合规范的Token,比较具体;数据类型就是字符串、布尔值、int、float这样的大类。
2.流程
-
设计词法分析的状态机
其中,蓝色圆是最后的输出结果。最下面一行是逐步输入判断,毕竟两个输出之间操作有关系。
-
进行语法分析,根据巴科斯范式列出语法树