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

94 阅读2分钟

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

规则引擎的产生

在项目开发中,随着开发逻辑的不断复杂,会出现越来越多的if-else逻辑越来越复杂,导致代码逻辑复杂、维护性差、可读性差、修改风险增加等缺陷。

那么其实一个复杂的逻辑表示一条对应的规则,将这些规则用bool表达式表示之后,就可以按照对应的规则进行操作,减少了if-else的使用。

那么如何解析这些bool表达式便是规则引擎所需要完成的任务。

规则引擎的介绍

规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。

应用场景

风控对抗

与黑灰产的对抗过程中,策略研发和产品需要能够根据黑灰产特征进行快速识别与对抗。规则引擎作为风控系统的核心,使产研人员能够不断调整和优化对抗策略,以实现最好的风控识别效果。

活动策略运营

业务活动的运行需要及时根据用户效果反馈进行运行策略的优化和调整。引入规则引擎之后,可以将服务代码与业务逻辑进行逻辑解耦,提高运营策略的迭代效率。方便新玩法的探索和效果认证。

数据分析和清洗

在数据分析系统中使用规则引擎可以便捷的实现对数据进行整理、清洗和转换。数据分析师可以根据不同的需求来自定义数据处理的规则,方便快捷的产出所需要的数据。

编译原理的一般过程

词法分析

把源代码字符串转化为词法单元(Token)的过程

语法分析

在词法分析的基础上识别出表达式的语法结构

抽象语法树

表达式抽象语法结构的树状表示,对于一个表达式,抽象语法书一定时唯一确定。

类型检查

验证执行的结果是否为合适的数据类型。在抽象语法树中,通常会验证某节点的子节点的数据类型是否合法。

参数注入

在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程

个人感想

通过这次课程的学习,了解了规则引擎的定义以及作用,明白通过编译原理构建规则引擎的原理,通过示例了解了如何将if-else转化为规则引擎的一般过程。