规则引擎| 青训营笔记

93 阅读2分钟

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

规则引擎组成

什么是规则引擎

规则引擎更像一个自定义的库,像C++的STL一样包含许多写好的容器,在有需求对代码细节进行调整时可以更方便快捷的更改。它可以解决业务人员与程序员沟通上的一些问题,在名称,变量作用域等小范围更改时可以省去重头开发的问题,大大节省时间 这是我参与「第五届青训营 」伴学笔记创作活动的第 5天

组成部分

  • 数据输入:支持接受使用预定义的语义编写规则的规则作为策略集
  • 规则理解:能够按照预先定义的词法、语法、优先级、运算符等正确理解:业务规则所表达的语义
  • 规则执行:根据执行时输入的参数对策略集中的规则进行正确的解释和执行。同时对规则执行过程中的数据类型进行检查,确保执行结果正确

规则引擎应用场景

  • 风控对抗社 :黑灰产对抗
  • 活动策略运营:活动更改(例如换汤不换药的抽奖活动)
  • 数据分析和清洗:数据标注筛选等

编译原理

词法分析

词法分析就是把源代码字符串转换为词法单元(Token)的这个过程。 如汉语中的主谓宾一样,代码也存在一定的词法。 代码根据词的用法分为参数,数字(常量),符号。

price > 500 && (isNewUser userL evel > 5) token实现:有限自动机就是一个状态机,它的状态数量是有限的。该状态机在任何一个状态,基于输入的字符,都能做一个确定的状态转换。(类似switch一样)

语法分析

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

抽象语法树

  • 语言句子无需考虑上下文,就可以判断正确性。可以使用巴科斯范式(BNF)来表达
  • 产生式:一个表达式可以由另外已知类型的表达式或者符号推导产生 递归下降算法:递归下降算法就是自顶向下构造语法树不断的对Token进行语法展开(下降),展开过程中可能会遇到递归的情况。

类型检查

根据子表达式的类型构造出父表达式的类型。 分为编译时的检查和运行时的检查。