规则引擎

课件:规则引擎设计与实现.pptx

认识规则引擎

抖音商场搞活动

v1:购买产品得积分,可以用积分换商品

直接使用if-else

v2:100-200返还20,200-500返还90、、、

使用一个数组

v3:根据用户标签判断,老顾客积分有加成,新用户可以拉人。

越来越复杂了,还是单独搞一个库吧

image-20230129141002109

规则引擎定义

规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来(解耦合),并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

由业务人员提交给开发人员,开发人员测试后上线,这样开发人员就不需要敲代码了,只需要维护规则引擎就行。

组成部分

  1. 数据输入
  2. 规则理解
  3. 规则执行

应用场景

  1. 风控对抗
    • 分辨黑灰产(黄牛等),实时调节规则
  2. 活动策略运营
    • 根据规则引擎及时对用户反馈做出反应
  3. 数据清洗与数据分析
    • 自定义数据处理规则

编译原理基本概念

词法分析(Lexical Analysis)

词法分析就是将源代码字符串转换为出发单元(Token)的过程

使用类似主谓宾结构将句子分析:

切分依据:运算符

如何识别Token:有限自动机(状态有限的状态机) 有限自动机在任何状态,基于输入的字符,都能做出确定的转换

语法分析

语法分析就是在词法分析的基础上,识别表达式的语法结构的过程

抽象语法树

表达式的语法结构可以用树的形式表达,每个节点是一个语法单元,单元的 构成规则就叫语法

上下文无关语法(Context-Free Grammar)

语言的句子无需要考虑上下文,就可以判断准确性。比如赋值语法。可以使用巴克斯范斯(BNF)表达。

类型检查

设计规则引擎

目标:设计一个规则引擎,支持特定的词法、运算符、数据类型和优先级。并且支持基于以上预定义语法的规则表达式的编译和执行。

词法:

  • 参数
  • 布尔值
  • 字符串
  • int,float常量
  • 预定义运算符:+-*/

运算符

  • 一元运算符
  • 二元运算符
  • 逻辑操作符
  • 括号

优先级:

词法分析状态机:

规则引擎实现