美文网首页
Java常用的规则引擎

Java常用的规则引擎

作者: 魔主三生 | 来源:发表于2019-11-24 16:28 被阅读0次

概述

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

规则引擎简介

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

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

如果购物车总额超过$ 400,可为客户提供20%的折扣。

第一次下单给10%。

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

规则引擎的优点

简化系统架构,优化应用

提高系统的可维护性

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

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

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

规则引擎场景

流程分支非常复杂,规则变量庞大

有不确定性的需求,变更频率较高

需要快速做出响应和决策

规则变更期望脱离于开发人员,脱离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条件可能是有几个更小的条件组成的大条件。模式就是指的不能在继续分割下去的最小的原子条件。

EasyRule

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

以下是EasyRule的一些核心特点:

轻量级规则引擎API。

基于注释和POJO。

支持复合规则构造。

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

简单了解下easyRule

核心概念

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

Facts:输入对象。

RulesEngine:规则引擎执行核心。

简单了解下使用例子

添加Maven 依赖

简易规则提供以下创建规则的选项

以声明方式使用注释。

务实地使用流利的API。

使用表达语言

使用规则描述符。

让我们看几个例子:

声明式注解

或者使用函数方式

表达式方式

文件描述

执行规则

RuleBook

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

Maven依赖

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

让我们看一个例子:

Hello World

使用Facts

执行规则

OpenL Tablets

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

Business Rules Engines(业务规则引擎)

WebStudio

Web services(web服务)

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

核心概念

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

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

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

maven依赖

使用

总结

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

EasyRule更加简洁,我们现在就是使用的这个解决方案。

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

文章整理不易,请关注下

微信公共号:

头条号:

相关文章

  • Java常用的规则引擎

    概述 在本文中,我们将介绍Java中一些最受欢迎的规则引擎。 规则引擎简介 规则引擎由推理引擎发展而来,是一种嵌入...

  • 规则引擎框架

    Java各种规则引擎AviatorDroolsEasyRulesRuleBookIKexpressionMVELJ...

  • 常用规则引擎

    一. Drools规则引擎 简介: 特性: 3.原理: 二.Aviator表达式求值引擎 简介: 特性: 整体结构...

  • 根据传入参数不同调用不同的方法:规则引擎重构

    抽象规则 实现规则AddRule.java 其它略 其中:返回结果 表达式 规则引擎RuleEngine.java...

  • Drools

    一. Drools规则引擎 Drools就是为了解决业务代码和业务规则分离的引擎。Drools 规则是在 Java...

  • 关于规则引擎--easy rules

    一、常用规则引擎 Drools、easyRule、QlExpress、Aviator、Vincio按照GitHu...

  • Java各种规则引擎

    一. Drools规则引擎 简介: 特性: 3.原理: 使用方式: (1)Maven 依赖: (2)新建配置文件/...

  • Drools介绍与使用

    Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允...

  • qlexpress初探

    1.相关介绍 QLExpress 是一个轻量级的类java语法规则引擎,作为一个嵌入式规则引擎在业务系统中使用。让...

  • 谈一谈规则引擎在活动系统中的落地

    本文从 “为什么需要规则引擎” “规则引擎的定义” “规则引擎在营销活动系统中的落地” “规则引擎平台内部架构” ...

网友评论

      本文标题:Java常用的规则引擎

      本文链接:https://www.haomeiwen.com/subject/caoyuxtx.html