规则引擎
这是我参与「第五届青训营」伴学笔记创作活动的第7天
认识规则引擎
定义
嵌入在应用程序中的组件,实现将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。 规则引擎全称为业务规则管理系统 ,英文名为 BRMS(即 Business Rule Management System)。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块(注:领域特定语言)编写业务决策(业务规则)。由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。
规则引擎优势
- 业务规则与系统代码分离,实现业务规则的集中管理
- 在不重启服务的情况下可随时对业务规则进行扩展和维护
- 可以动态修改业务规则,从而快速响应需求变更
- 规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护系统的业 务规则
- 减少了硬编码业务规则的成本和风险
- 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单
规则引擎应用场景
- 风险控制系统----风险贷款、风险评估
- 反欺诈项目----银行贷款、征信验证
- 决策平台系统----财务计算
- 促销平台系统----满减、打折、加价购
编译原理基本概念
词法分析
把源代码字符串转换为词法单元(Token)的过程
有限自动机——状态数量有限,在任何一个状态,基于输入能做一个确定的状态转换。
语法分析
词法分析基础上,识别表达式的语法结构的过程。
抽象语法树
表达式的语法结构可以用树来表示,每个节点是一个语法单元。
上下文无关语法——无需考虑上下文,即可判断正确性。
递归下降算法——自顶向下构造语法树,不断对token进行语法展开,展开过程会遇到递归的情况。
类型检查
类型综合
根据子表达式类型构造出父表达式类型。
编译时检查&运行时检查
编译时:提前声明参数类型
int1:int;str1:string
执行时:根据参数输入值的类型,执行时进行类型检查
int1:108;string:"300"
设计规则引擎
设计目标
词法(合法Token)
运算符
数据类型
优先级
词法分析
有限状态机
语法分析
优先级表达
语法树结构
执行及类型检查
执行——后序遍历执行
类型检查——检查预设规则