这是我参与「第五届青训营 」伴学笔记创作活动的第6天
一、 什么是规则引擎,前景发展是什么?
执行时接受数据输入、解释业务规则,并做出决策,例如风控系统输入有很多:当前用户的设备信息、当前cookie信息、过往操作记录、接入渠道、四项信息 都是有的,然后过程中经过一系列的规则判断,得出风险的结论或者风险的等级。规则引擎已经在风控识别、活动运营、配置下发等场景得到了广泛的应用。
二、 规则引擎的技术前提
词法分析:把源代码字符串转换为词法单元(Token)的这个过程。确定的有限自动机 DFA | Deterministic Finite Automaton 语法分析
block : '{' blockStmts '}' ; //语句块
blockStmts : stmt* ; //语句块中的语句
stmt = varDecl | expStmt | returnStmt | block; //语句
varDecl : type Id varInitializer? ';' ; //变量声明
type : Int | Long ; //类型
varInitializer : '=' exp ; //变量初始化
expStmt : exp ';' ; //表达式语句
returnStmt : Return exp ';' ; //return语句
exp : add ; //表达式
add : add '+' mul | mul; //加法表达式
mul : mul '*' pri | pri; //乘法表达式
pri : IntLiteral | Id | '(' exp ')' ; //基础表达式
三、 规则引擎的核心
词法分析是识别一个个的单词,而语法分析就是在词法分析的基础上识别出Token -> AST 上下文无关语法 Context-Free Grammar程序的语法结构。这个结构是一个树状结构。这棵树叫做抽象语法树(Abstract Syntax Tree,AST)。
四、 当下完备常见的规则引擎
Drools是一个基于java的规则引擎,易于调整以及易于管理的开源业务规则引擎
Ilog JRules是完整的业务规则管理系统(BRMS),它提供了对整个企业业务规则进行建模、编写、测试、部署和维护所必需的所有工具
Easy Rules 是一款 Java 规则引擎,它的诞生启发自有Martin Fowler 一篇名为 “Should I use a Rules Engine?” 文章
Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值
Groovy是 用于Java的一种敏捷的,它是一种成熟的[面向对象]编程语言,既可以用于面向对象编程,又可以用作纯粹的。使用该种语言不必编写过多的代码,同时又具有和动态语言中的其他特性