规则引擎 | 青训营笔记

84 阅读3分钟

规则引擎

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

认识规则引擎

定义

嵌入在应用程序中的组件,实现将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。 规则引擎全称为业务规则管理系统 ,英文名为 BRMS(即 Business Rule Management System)。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块(注:领域特定语言)编写业务决策(业务规则)。由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。

规则引擎优势

  • 业务规则与系统代码分离,实现业务规则的集中管理
  • 在不重启服务的情况下可随时对业务规则进行扩展和维护
  • 可以动态修改业务规则,从而快速响应需求变更
  • 规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护系统的业 务规则
  • 减少了硬编码业务规则的成本和风险
  • 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单

规则引擎应用场景

  • 风险控制系统----风险贷款、风险评估
  • 反欺诈项目----银行贷款、征信验证
  • 决策平台系统----财务计算
  • 促销平台系统----满减、打折、加价购

编译原理基本概念

词法分析

把源代码字符串转换为词法单元(Token)的过程
有限自动机——状态数量有限,在任何一个状态,基于输入能做一个确定的状态转换。

语法分析

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

抽象语法树

表达式的语法结构可以用树来表示,每个节点是一个语法单元。
上下文无关语法——无需考虑上下文,即可判断正确性。
递归下降算法——自顶向下构造语法树,不断对token进行语法展开,展开过程会遇到递归的情况。

类型检查

类型综合
根据子表达式类型构造出父表达式类型。
编译时检查&运行时检查
编译时:提前声明参数类型

int1:int;str1:string

执行时:根据参数输入值的类型,执行时进行类型检查

int1:108;string:"300"

设计规则引擎

设计目标

词法(合法Token)

运算符
数据类型
优先级

词法分析

有限状态机

语法分析

优先级表达
语法树结构

执行及类型检查

执行——后序遍历执行
类型检查——检查预设规则

规则引擎实现

引用

blog.csdn.net/u010020726/… juejin.cn/post/719336…