规则引擎技术选型-qlExpress
目录
1.背景&痛点
2.目前主流规则引擎框架
3.目前业务特点选型
4.风险&缺点&优点
5.运行原理图
6.参考
1.背景&痛点
1)业务规则变化快,比如 价格的系数调整,询价业务规则不断调整并且后期可能出现更多询价场景.
2)开发>50%的精力和时间在业务规则的开发上.
3)业务人员理解规则须有很强的业务知识,新规则需要开发配合,业务规则需求提出后上线的实际运行过程对业务人员不透明.导致开发和业务的沟通成本大,最好支持业务人员可视化配置规则.
4)规则的实现往往需要很多的if...else代码的嵌套,对后期开发理解和维护成本均不友好.目前对规则也有抽象,但是程度还不够且不支持业务人员可视化配置,没有实现规则表达式.
目标:快速低成本更新业务,流程自动化.
2.目前主流规则引擎框架
规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。
规则本质上是一个函数,如y=f(x1,x2,..,xn)
规则引擎由三部分
- 事实(Fact):就是用户输入的已经事实,可以理解为推理前的已知对象。
- LHS(Left Hand Side):可以理解为规则执行需要满足的条件。
- RHS(Right Hand Sike):可以理解为规则执行后的返回对象。
两个重要模块:
- 规则管理:可以理解为逻辑上管理规则,主要涉及规则、事实对象和规则集三个实体。涉及到规则变更时,最好对规则加个版本,可通过规则版本控制,可以平滑灰度地方式改变规则,也便于更有信心在测试规则正确性。
- 规则执行:通过规则库数据,通过规则引擎的规则解析、规则编译将可执行代码缓存起来,避免每次和DB交互,然后每次规则的变更也通过ZK或者DCC实时通知给规则执行器。规则执行器的实现方式,可以多种多样,不依赖于规则库的存储方式,可以根据需求,选用Drools、Aviator等第三方引擎,甚至可以基于ANTLR定制。
应用场景:
- 流程分支非常复杂,规则变量庞大,常规编码(if-else)难以实现
- 有不确定性的需求,变更频率较高
- 需要快速做出响应和决策
- 规则变更期望脱离于开发人员,脱离coding
主流的框架:
Drools、easyRule、QlExpress、Aviator、Vincio
3.优缺点比较
3.目前业务特点选型
由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具
QLExpress
4.风险&缺点&优点
qlExpress缺点:
1.目前社区不算活跃,文档比较少,有时需要看源码
2.学习需要一定的成本
qlExpress优点:
- 1、线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。
- 2、高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用了缓冲池的技术,和groovy性能相当。
- 3、弱类型脚本语言,和groovy,javascript语法类似,虽然比强类型脚本语言要慢一些,但是使业务的灵活度大大增强。
- 4、安全控制,可以通过设置相关运行参数,预防死循环、高危系统api调用等情况。
- 5、代码精简,依赖最小,250k的jar包适合所有java的运行环境,在android系统的低端pos机也得到广泛运用。
- 6、支持高精度计算
5.运行原理图
6.参考
再见了 ! if-else !拥抱规则引擎 https://www.jianshu.com/p/9b67ab434795
规则引擎解决方案浅析 https://www.cnblogs.com/Alandre/p/11491221.html
开源作者博客https://blog.csdn.net/express_wind?t=1
github开源地址https://github.com/alibaba/QLExpress
规则引擎技术选型-qlExpress相关推荐
- 浅谈如何进行技术选型 (以工作流引擎技术选型为例说明)
在研发过程中,我们会面临各种技术抉择.应该如何选择?选择哪种技术?为何选择这种技术?我们不认真考虑的话,往往会说不清道不明.下面根据常用的技术选型套路,来说明如何进行技术选型.文中以工作流引擎技术选型 ...
- drools规则引擎技术指南_物联网规则引擎技术
物联网应用程序设计与典型的IT解决方案大不相同,因为它将物理操作技术(OT)与传感器.致动器和通信设备连接起来,并将数字信息技术(IT)与数据.分析和工作流连接起来. 在企业环境中,物联网非常复杂,这 ...
- 《Drools规则引擎技术指南》 已经正式上架
<Drools规则引擎技术指南> 已经正式上架,国内首本Drools规则引擎中文教程,感谢您的支持,从基础入门到高级应用本书中都有说明,为我国规则引擎方面填补了空白,为国内IT事业尽微薄之 ...
- 关于物联网规则引擎技术,你想要知道的都在这儿!
摘要:本文将从设备联动的触发条件和执行动作,以及数据转发的触发事件和转发目标两大部分,具体阐述规则引擎的原理. 规则引擎就是指用户在华为云平台对接入的设备设定相应的规则,然后在条件满足响应的规则后,平 ...
- AR引擎技术选型和使用实现方案
导读 本篇约6000字阅读需要20分钟,内容有: 开发者对AR的基础认知 主流AR引擎的选型大纲 Vuforia引擎的评估和实现方案 EasyAR引擎的评估和实现方案 ARFoundation引擎的评 ...
- python规则引擎开发经验_关于物联网规则引擎技术,你想要知道的都在这儿!
摘要:本文将从设备联动的触发条件和执行动作,以及数据转发的触发事件和转发目标两大部分,具体阐述规则引擎的原理. 规则引擎就是指用户在华为云平台对接入的设备设定相应的规则,然后在条件满足响应的规则后,平 ...
- AR SDK引擎技术选型和使用实现方案
https://gameinstitute.qq.com/community/detail/133606
- 搭建一套基于 Groovy 规则引擎的业务风控平台
黑灰产在互联网领域盛行,从反面推动了业务安全反欺诈领域的快速发展.互联网SAAS服务产品响应市场不断创新,也决定了业务风险的多样性.笔者所在财税领域常见的非财税业务互联网风控场景包括登陆注册.短信接口 ...
- 规则引擎选型及应用 邴越 2017-04-27 16:31:17 浏览614 评论0 HTTPS 模块 配置 string exception void input 规则引擎 摘要: 规则引擎具体执
规则引擎选型及应用 邴越 2017-04-27 16:31:17 浏览614 评论0 HTTPS 模块 配置 string exception void input 规则引擎 摘要: 规则引擎具体执行 ...
最新文章
- 3ds Max绘制青花瓷茶壶
- set的用法及短语_人教版九全Unit 14重点短语、重点句型、课文讲解
- 工控设备 如何将数据发送到串口_实现4G无线通信透传的远程通信多组网5个PLC相互交换数据...
- 利用cache特性检测Android模拟器
- CDOJ 486 Good Morning 傻逼题
- Luogu2295 MICE
- 21、mysql修改密码的方法总结
- Ubuntu 下VNC(Real VNC) 的安装和配置
- python如何循环执行_如何在python中多次运行for循环?
- ThreadLocal工作原理和内存泄漏的预防
- 华为P40系列起售价曝光!有点意想不到
- Red Hat Enterprise Linux的一些简单操作(备忘录)
- ATT的汇编格式X86内联汇编
- 光纤MPO端面脏了也会造成您所不知道的故障
- 最全jar包下载链接
- Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
- 计算机英语CMYK全称,CMYK是什么意思 CMYK与RGB的区别介绍
- “好好说话,别伤人。”
- java中封装类Feild和使用setter和getter方法访问封装的类Feild
- HTPP的请求方式有哪些?