在本文中,我们将介绍Java中一些最受欢迎的规则引擎。
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。在Java中,大多数流行的规则引擎都实现JSR94
将规则引擎想象成一个以数据和规则作为输入的系统。它将这些规则应用于数据,并根据规则定义为我们提供输出。让我们以一个在线购物为例,我们希望为客户提供某些促销或折扣。
- 如果购物车总额超过$ 400,可为客户提供20%的折扣。
- 第一次下单给10%。
上面将购物车和客户定义为满足规则集中定义的条件的规则将在其中执行的数据。
Drools是业务规则管理系统(BRMS)解决方案。它提供了核心业务规则引擎(BRE),Web UI和规则管理应用程序(Drools Workbench),对符合性级别3的决策模型和注释(DMN)模型的完整运行时支持,以及用于核心开发的Eclipse IDE插件及Idea插件。
Drools 是一个基于Charles Forgy’s的RETE算法的,易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。 业务分析师人员或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。
Drools是开源软件,根据Apache Software License发布。它用100%纯Java™编写,可以在任何JVM上运行,并且在Maven Central存储库中也可用。
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相关概念:
事实(Fact):对象之间及对象属性之间的关系
规则(rule):是由条件和结论构成的推理语句,一般表示为if…Then。一个规则的if部分称为LHS,then部分称为RHS。
模式(module):就是指IF语句的条件。这里IF条件可能是有几个更小的条件组成的大条件。模式就是指的不能在继续分割下去的最小的原子条件。
以下是EasyRule的一些核心特点:
- 轻量级规则引擎API。
- 基于注释和POJO。
- 支持复合规则构造。
- 支持表达语言(如MVEL和SpEL)来定义规则。
简单了解下easyRule
核心概念
Rule : 包含规则执行的条件与动作,描述,优先级别。属于最基本配置。
Facts:输入对象。
RulesEngine:规则引擎执行核心。
简单了解下使用例子
添加Maven 依赖
- 以声明方式使用注释。
- 务实地使用流利的API。
- 使用表达语言
- 使用规则描述符。
让我们看几个例子:
声明式注解
Maven依赖
要将RuleBook添加到项目中,请在pom.xml文件中添加以下依赖项:
Hello World
- Business Rules Engines(业务规则引擎)
- WebStudio
- Web services(web服务)
- Rule repository(基于JCR的实现的规则库)
核心概念
Rules:规则是由条件,操作和返回值组成的逻辑语句
Tables: 列出了OpenL Tablets处理的基本信息,例如规则和数据
Projects: 是处理规则相关信息所需的所有资源的容器。通常,一个简单的项目仅包含带有规则的Excel文件。
maven依赖
EasyRule更加简洁,我们现在就是使用的这个解决方案。
根据自身的业务需要,选择更加符合的业务引擎方案。
文章整理不易,个人微信公共账号,每周两篇干货分享。
头条号每周两篇干货分享。