Java经常使用的规则引擎,让你变更的代码更加容易维护

概述

在本文中,咱们将介绍Java中一些最受欢迎的规则引擎。web

规则引擎简介

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预约义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则作出业务决策。在Java中,大多数流行的规则引擎都实现JSR94算法

将规则引擎想象成一个以数据和规则做为输入的系统。它将这些规则应用于数据,并根据规则定义为咱们提供输出。让咱们以一个在线购物为例,咱们但愿为客户提供某些促销或折扣。微信

  • 若是购物车总额超过$ 400,可为客户提供20%的折扣。架构

  • 第一次下单给10%。maven

上面将购物车和客户定义为知足规则集中定义的条件的规则将在其中执行的数据。函数

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

规则引擎的优势

  • 简化系统架构,优化应用测试

  • 提升系统的可维护性优化

  • 减小编写“硬代码”业务规则的成本和风险编码

  • 应付特殊情况,即客户一开始没有提到要将业务逻辑考虑在内spa

  • 过将规则引擎分开,它提供了更大的可重用性。

规则引擎场景

  • 流程分支很是复杂,规则变量庞大

  • 有不肯定性的需求,变动频率较高

  • 须要快速作出响应和决策

  • 规则变动指望脱离于开发人员,脱离coding

Java 中经常使用的开源规则引擎有哪些呢?

Drools

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条件多是有几个更小的条件组成的大条件。模式就是指的不能在继续分割下去的最小的原子条件。

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

EasyRule

EasyRule是轻量级的规则引擎API。它提供Rule抽象来建立带有条件和动做的规则,以及RulesEngine经过一组规则运行以测试条件和执行动做的API。

如下是EasyRule的一些核心特色:

  • 轻量级规则引擎API。

  • 基于注释和POJO。

  • 支持复合规则构造。

  • 支持表达语言(如MVEL和SpEL)来定义规则。

简单了解下easyRule

核心概念

Rule : 包含规则执行的条件与动做,描述,优先级别。属于最基本配置。

Facts:输入对象。

RulesEngine:规则引擎执行核心。

简单了解下使用例子

添加Maven 依赖

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

简易规则提供如下建立规则的选项

  • 以声明方式使用注释。

  • 务实地使用流利的API。

  • 使用表达语言

  • 使用规则描述符。

让咱们看几个例子:

声明式注解

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

或者使用函数方式

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

表达式方式

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

文件描述

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

执行规则

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

RuleBook

RuleBook提供了灵活的简单直观的DSL。若是您有更多规则集,咱们能够将其构建为带注释的POJO,而且RuleBook能够将整个包当即转换为RuleBook。它提供了一个易于使用的启用Lambda的领域特定语言或使用POJO,让咱们使用RuleBook来查看一个简单的规则定义:

Maven依赖

要将RuleBook添加到项目中,请在pom.xml文件中添加如下依赖项:

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

让咱们看一个例子:

Hello World

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

使用Facts

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

执行规则

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

OpenL Tablets

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

OpenL Tablets业务规则引擎(BRE)和业务规则管理系统(BRMS)。它包含如下主要组件:

  • Business Rules Engines(业务规则引擎)

  • WebStudio

  • Web services(web服务)

  • Rule repository(基于JCR的实现的规则库)

核心概念

Rules:规则是由条件,操做和返回值组成的逻辑语句

Tables: 列出了OpenL Tablets处理的基本信息,例如规则和数据

Projects: 是处理规则相关信息所需的全部资源的容器。一般,一个简单的项目仅包含带有规则的Excel文件。

maven依赖

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

使用

Java经常使用的规则引擎,让你变更的代码更加容易维护

 

总结

在本文中,咱们讨论了Java中流行的规则引擎。这些规则引擎为业务逻辑抽象提供了灵活性。在全部这些规则引擎中,Drools是最早进,最活跃的规则引擎,也正因如此,环境也是相对复杂。

EasyRule更加简洁,咱们如今就是使用的这个解决方案。

根据自身的业务须要,选择更加符合的业务引擎方案。

 

文章整理不易,请关注下

微信公共号:

  

头条号:

相关文章
相关标签/搜索