参考文章: https://www.jianshu.com/p/96cd60059aae
规则引擎调研 - 人在江湖之诗和远方 - 博客园
java开源规则引擎比较_常用规则引擎比较分析_学校砍了我的树的博客-CSDN博客
Drools等规则引擎技术对比分析 - xuzhujack - 博客园
常见开源规则引擎对比分析_大海梦想的博客-CSDN博客_开源规则引擎
不同规则引擎的对比_qq_44996414的博客-CSDN博客_java 开源规则引擎比较
- JBoss Drools
- Mandarax
- OpenRules
- JEOPS
- InfoSapient
- Roolie
- Apache Camel
Aviator
- ODM(ILOG)
- Oracle Business Rules
- 旗正规则引擎
- Jess(可研究,商用收费)
- TopRules
- 明策智能决策
- Blaze
- 益博睿决策引擎
(1) 常见开源规则引擎对比
https://github.com/rencalo770/gengine
gengine
项目简介 | ice
https://github.com/zjn-zjn/ice
(2) WebSphere ILOG与CKRule对比
大型商用
部署
语言
Java,.Net,C++等全面支持,Java最成熟。
使用Eclipse编写基础脚本
价格
学习
学习成本较高
(3) easy-rules与Drools对比:
Drools 是用Java语言编写的开放源码规则引擎,基于Apache协议,基于RETE算法,于2005年被JBoss收购。
Drools是一个绝对重量级的规则引擎,很多像金融行业、电信行业的大公司都在使用它作为规则引擎。
Drools通过 事实、规则和模式相互组合来完成工作,drools在开源规则引擎中使用率最广,但是在国内企业使用偏少,保险、支付行业使用稍多。
Drools 是业务逻辑集成平台,被分为5个项目:
Drools Workbench (web UI )
Drools Expert (business rules engine)
Drools Fusion (complex event processing features)
jBPM (process/workflow integration for rule orchestration/flow)
OptaPlanner (automated planning)
Drools 可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。
优点:
- 最活跃的开源规则引擎, 非常活跃的社区支持
- 易用
- 快速的执行速度
- 在 Java 开发人员中流行
- 基于java的规则引擎, 与 Java Rule Engine API(JSR 94)兼容
- 易于访问企业策略、易于调整以及易于管理
- 符合业内标准,速度快、效率高
- 简化系统架构,优化应用。
- 提高系统的可维护性和维护成本。
- 方便系统的整合。
- 减少编写“硬代码”业务规则的成本和风险。
- 参考:https://github.com/kiegroup/drools&&https://www.drools.org/
- AgendaFilter筛选规则参考:https://blog.csdn.net/a294634473/article/details/89456645
缺点:
- 业务分析师无法独立完成规则配置:由于规则主体DSL是编程语言(支持Java, Groovy, Python),因此仍然需要开发工程师维护
- 规则规模变大以后也会变得不好维护,相对硬编码的优势便不复存在
- 规则的语法仅适合扁平的规则,对于嵌套条件语义(then里嵌套when…then子句)的规则只能将条件进行笛卡尔积组合以后进行配置,不利于维护。
- 使用复杂
最有名的商用BRMS。
Ilog JRules是完整的业务规则管理系统(BRMS),它提供了对整个企业业务规则进行建模、编写、测试、部署和维护所必需的所有工具。
IBM WebSphere ILOG JRules 是目前业界领先的业务规则管理平台。与传统的由 IT 人员用硬代码来维护规则的做法不同,ILOG JRules 让业务用户能够在不依赖或者有限依赖于 IT 人员的情况下,快速创建、修改、测试和部署业务规则,以满足经常变化的业务需求。ILOG JRules 提供了一整套的工具,帮助开发人员和业务人员进行规则的全生命周期管理。
基于Rete算法实现。
主要组件:
1、Rule Studio(RS) 面向开发人员使用的开发环境,用于规则的建模和编写。
2、Rule Scenario Manager 规则测试工具。
3、Rule Team Server(RTS) 基于Web的管理环境,面向业务人员使用,用于规则发布、管理、存储。
4、Rule Execution Server(RES) 面向运维人员使用,用于规则执行、监控。
Easy Rules 是一款 Java 规则引擎,是轻量级的规则引擎API,它提供Rule抽象来创建带有条件和动作的规则,以及RulesEngine通过一组规则运行以测试条件和执行动作的API。
它的诞生启发自有Martin Fowler 一篇名为 “Should I use a Rules Engine?” 文章。
Easy Rules 提供了规则抽象来创建带有条件和操作的规则,以及运行一组规则来评估条件和执行操作的RulesEngine API。
特性:
- 轻量级框架和易于学习的API。
- 通过高效的抽象来定义业务规则并轻松应用它们。
- 支持创建复合规则。
- 使用表达式语言定义规则的能力。
- 轻量级框架,学习成本低,傻瓜式的基于pojo的规则引擎
- 使用简单,也比较强大,
- 支持bdd模式的规则处理,对于java 系统的集成很友好
- 支持基于文件的规则加载
- 接口可扩展,可自己添加基于db以及s3模式的处理,内置的Listener也是很不错的监控点,方便我们进行规则审计存储
- 几个主要的类或接口:Rule,RulesEngine,RuleListener,Facts
- 几个主要的注解:@Action,@Condition,@Fact,@Priority,@Rule
- 参考:https://github.com/j-easy/easy-rules
OpenL Tablets(http://openl-tablets.org/)是基于Excel文档的业务规则管理系统和业务规则引擎。基于独特的概念,OpenL Tablets有助于将包含业务逻辑规范的业务文档视为可执行源代码。由于企业用户熟悉OpenL Tablets使用的表格式,因此OpenL Tablets弥补了企业用户和开发人员之间的鸿沟,从而减少了昂贵的企业软件开发错误,并大大缩短了软件开发周期。 简单来说,可以将OpenL Tablets视为表处理器,该处理器可从Excel文档中提取表并可以通过应用程序访问。
OpenL Tablets主要优点:
- OpenL Tablets消除了软件实施与业务文档,规则和策略之间的鸿沟。
- 业务规则对开发人员变得透明。
- OpenL Tablets验证所有项目文档数据中的语法和类型错误,从而提供方便且详细的错误报告。 OpenL Tablets可以直接指向Excel文档中的问题。
- OpenL Tablets提供了计算解释功能,可以通过指向原始文档中的源参数来扩展任何计算结果。
- OpenL Tablets使用户能够创建和维护测试,以确保所有规则的可靠工作。
- OpenL Tablets在所有项目文档中提供交叉索引和搜索功能。
- OpenL Tablets通过其业务规则管理应用程序提供完整的规则生命周期支持。
- OpenL Tablets支持.xls和.xlsx文件格式。
OpenL Tablets业务规则引擎(BRE)和业务规则管理系统(BRMS)。它包含以下主要组件:
Business Rules Engines(业务规则引擎)
WebStudio
Web services(web服务)
Rule repository(基于JCR的实现的规则库)
Jess是Java平台上的规则引擎,它是CLIPS程序设计语言的超集,由Sandia国家实验室的Ernest Friedman-Hill开发,商用收费。Jess提供适合自动化专家系统的逻辑编程,它常被称作“专家系统外壳”。近年来,智能代理系统也在相似的能力上发展起来。(资源少,学习成本高)。
基于Rete算法实现。
Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。
规则简单:qlexpress或者avaitor;规则复杂:drools
优点:足够轻量级,社区活跃度较好,最新jar包更新于22年4月
详见:Aviator学习笔记
特征:
- 支持大部分运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(=~)、三元表达式?: ,并且支持操作符的优先级和括号强制优先级。
- 支持大整数和精度运算(2.3.0版本引入)
- 内置支持正则表达式匹配,类似Ruby、Perl的匹配语法,并且支持类Ruby的$digit指向匹配分组。
- 自动类型转换,当执行操作的时候,会自动判断操作数类型并做相应转换,无法转换即抛异常。
商业版本。
旗正VisualRules是由国家科技部和财政部的创新基金支持,专门针对国内规则引擎市场空白的情况,结合国内项目的特点而开发的一款业务规则管理系统(BRMS)产品。(资源少,学习成本高)。
(旗正规则引擎)国内商业规则引擎品牌,可以认为是ILOG的本土版本。
基于Rete算法实现。
一个规则引擎的纯Java实现。基于反向推理(归纳法)。
基于Rete算法实现。
- 基于java8 lambda 模式的规则引擎,使用灵活
- 参考:https://github.com/deliveredtechnologies/rulebook
JLisa
JLisa是一个利用java构建商业规则的强大框架。它实现了JSR94 Rule Engine API。
JLisa - A Rule Engine for Java
OpenRules
OpenRules基于java完全开放源代码的商业规则管理框架。它有效的利用了MS Excel, Eclipse IDE 和其它java开源类库去构造,维护,部署,执行不同的复杂商业逻辑的规则引擎。
http://openrules.com
JEOPS
JEOPS(The Java Embedded Object Production System)是一个基于Java的演绎法(Forward-Chaining)规则引擎.这个规则引擎被用于在Java 应用服务器,Java客户端程序,和Servlets中通过规则来提高它们的商业处理能力。
JEOPS - Java based Rule Engine download | SourceForge.net
InfoSapient
InfoSapient是一个开源的规则引擎.它设计用来表达,执行和维护在同一个公司中商业规则.InfoSapient基于纯Java开发,使用到MVC,Visitor,Strategy,Facade,Factory Method,Observer,Iterator等设计模式。
JRuleEngine
JRuleEngine基于JSR94规范的java规则引擎。
JRuleEngine - OpenSource Java Rule Engine
Roolie
Roolie是一个极其简单的Java规则引擎(Non-JSR94)它使用你在Java中创建的规则。 简单创建基本的规则,为每个规则实现单个"passes"方法,然后在一个XML文件中将它们链起来创建更复杂的规则。