法律网站建设方案,有帮忙做儿童房设计的网站吗,wordpress分页调用,网站百度权重开源规则引擎
开源的规则引擎整体分为下面几类#xff1a; 通过界面配置的成熟规则引擎#xff0c;这种规则引擎相对来说就比较重#xff0c;但功能全#xff0c;比较出名的有:drools, urule。 基于jvm脚本语言#xff0c;互联网公司会觉得drools太重了#xff0c;然后…开源规则引擎
开源的规则引擎整体分为下面几类 通过界面配置的成熟规则引擎这种规则引擎相对来说就比较重但功能全比较出名的有:drools, urule。 基于jvm脚本语言互联网公司会觉得drools太重了然后会基于一些jvm的脚本语言自己开发一个轻量级的规则引擎比较出名的有groovy开源风控radar,aviator,qlexpress。 基于java代码的规则引擎基于jvm脚本语言会有一些语法学习的成本所以就有基于java代码去做的规则引擎比如通过一些注解实现抽象的方式去做到规则的扩展比较出名的有: easy rules。
这边重点介绍三款产品drools、qlexpress和groovy先介绍下基础能力和优劣势后面再进行详解。
Drools
drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎可以将复杂且多变的业务规则从硬编码中解放出来以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中)使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。
drools官网地址https://drools.org/
drools源码下载地址https://github.com/kiegroup/drools
在项目中使用drools时即可以单独使用也可以整合spring使用。如果单独使用只需要导入如下maven坐标即可
dependencygroupIdorg.drools/groupIdartifactIddrools-compiler/artifactIdversion7.6.0.Final/version
/dependency如果我们使用IDEA开发drools应用IDEA中已经集成了drools插件。如果使用eclipse开发drools应用还需要单独安装drools插件。
drools API开发步骤如下 Groovy
Groovy是用于Java虚拟机的一种敏捷的动态语言它是一种成熟的面向对象编程语言既可以用于面向对象编程又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码同时又具有闭包和动态语言中的其他特性。
Groovy是从Java衍生出来的,并且运行在Java虚拟机上的语言.其目标是不管作为脚本语言还是编程语言都可以简单、直接使用。Groovy 也并不会替代 Java而是相辅相成、互补的关系具体使用哪门语言这取决于要解决的问题和使用的场景。
QLExpression
由阿里的电商业务规则、表达式布尔组合、特殊数学公式计算高精度、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 在阿里集团有很强的影响力同时为了自身不断优化、发扬开源贡献精神于2012年开源。
QLExpress脚本引擎被广泛应用在阿里的电商业务场景具有以下的一些特性:
1、线程安全引擎运算过程中的产生的临时变量都是threadlocal类型。 2、高效执行比较耗时的脚本编译过程可以缓存在本地机器运行时的临时变量创建采用了缓冲池的技术和groovy性能相当。 3、弱类型脚本语言和groovyjavascript语法类似虽然比强类型脚本语言要慢一些但是使业务的灵活度大大增强。 4、安全控制,可以通过设置相关运行参数预防死循环、高危系统api调用等情况。 5、代码精简依赖最小250k的jar包适合所有java的运行环境在android系统的低端pos机也得到广泛运用。
规则引擎对比
常见能力对比如下
规则引擎QLExpression (ms)groovy(ms)drools(ms)动态规则支持支持支持灵活性低高中复杂度低高中上手快慢慢使用广度中中高
执行性能对比如下
执行次数\规则引擎QLExpression (ms)groovy(ms)drools(ms)100w15901713641000w1255170935305000w60230351619414
三种规则引擎都支持动态规则可以通过提供的api动态扩展规则
灵活性上看groovy和drools支持脚本编写方式市面上有常见的包装方案其中QLExpression在中小企业应用较广泛对熟悉java的选手来说基本开箱即用groovy和drools作为规则引擎在互联网企业应用较多有一定的学习和培训成本drools追随者更多适用面积更广泛