`

规则引擎

    博客分类:
  • java
 
阅读更多

最近的这个项目使用了规则引擎,是我的一位同事负责的这块东西,我是一直没弄明白是怎么回事,现在我也研究一下。

先弄明白什么是规则引擎吧。

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

  应用背景: 企业级管理者对企业IT系统的开发有着如下的要求:

  1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。

  2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。

  3.为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。

  使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本,其优点如下:

  • 分离商业决策者的商业决策逻辑和应用开发者的技术决策;

  • 能有效的提高实现复杂逻辑的代码的可维护性;

  • 在开发期间或部署后修复代码缺陷;

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

  • 符合组织对敏捷或迭代开发过程的使用;

  大多数规则引擎都支持规则的次序和规则冲突检验,支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。目前业内有多个规则引擎可供使用,其中包括商业和开放源码选择。开源的代表是Drools,商业的代表是iLog。

 

我这里是用mvel来解析表达式,先来弄明白mvel是什么吧。

MVEL是一种用于Java应用程序,类似于OGNL的表达式语言。MVEL不仅非常小和敏捷,而且它的语法易于阅读与EL 或OGNL比起来更像Java。比如静态方法和属性的引用方式与Java一样,赋值也非常像Java。

该项目主页:http://mvel.codehaus.org

介绍mvel的一个文章:

MVEL为 MVFLEX Expression Language(MVFLEX表达式语言)的缩写,它是一种动态/静态的可嵌入的表达式语言和为Java平台提供Runtime(运行时)的语言。最初是作为一个应用程序框架实用程序的语言开始,该项目现已发展完全独立。MVEL通常用于执行用户(程序员)通过配置XML文件或注释等定义的基本逻辑。它也可以用来解析简单的JavaBean表达式。Runtime(运行时)允许MVEL表达式通过解释执行或者预编译生成字节码后执行。

下面介绍下如何使用MVEL。

首先,从MVEL的主页http://mvel.codehaus.org/Downloading+MVEL下载MVEL,目前版本为2.0.18,支持JDK1.5以上版本。

下载完后,新建MvelDemo工程,添加mvel2-2.0.18.jar到Build Path。

编写测试代码,示例如下:

 

public class MVELTest {
	public static void main(String[] args) {
		String expression = "foobar > 99";

		Map vars = new HashMap();
		vars.put("foobar", new Integer(100));

		// We know this expression should return a boolean.
		Boolean result = (Boolean) MVEL.eval(expression, vars);

		if (result.booleanValue()) {
			System.out.println("It works!");
		}
	}
}

执行结果为:It works!

以上简单介绍了下MVEL,以及如何在你的代码中使用MVEL。

如果想对MVEL有更多了解,可以阅读MVEL官方文档

分享到:
评论

相关推荐

    springboot ice规则引擎

    Easy Rules,Drools,Aviator表达式求值引擎,Rule Book、Oracle Rules SDK、Blaze (fico)、IBM Decision Manager,DTRules,DSL规则引擎 规则引擎由三部分 事实(Fact):已知对象,比如以上刷卡的行为,即成事实...

    C# 利用 WF 实现规则引擎

    在本文中,我们将深入探讨如何使用C#编程语言与Windows Workflow Foundation (WWF)来构建一个规则引擎。规则引擎是一种软件系统,它允许程序在运行时动态地执行和修改业务规则,无需更改代码基础结构。C#结合WWF提供...

    规则引擎Drools入门实战案例

    规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 使用规则引擎的优势如下: 1、业务规则与系统代码分离,实现...

    Groovy DSL 动态规则(rule)执行引擎流程引擎特色风控系统规则引擎动态接口配置(低代码)

    特色 风控系统, 规则引擎, 动态接口配置(低代码)Groovy DSL 动态规则(rule)执行引擎。DSL(特定领域语言): 开发 和 业务 共识的语言。方便业务表达需求, 方便开发理解业。一个业务需求(一般程序或一个接口)可以抽象...

    java规则引擎说明

    "java规则引擎说明" Java规则引擎是指使用Java语言开发的一种规则引擎,能够根据事实对象和规则文件计算规则结果。下面是Java规则引擎的详细说明: 一、规则引擎介绍 规则引擎是指能够根据事实对象和规则文件计算...

    专家经验知识库+可视化规则引擎+Urule+决策系统

    可视化规则引擎是一种图形化界面工具,允许用户通过拖拽组件和设定条件逻辑,直观地创建、编辑和管理复杂的业务规则和决策流程,而无需编码。有以下几个核心特点: 1. 图形化界面:提供用户友好的界面,用户可以直接...

    Drools规则引擎从入门到精通

    【Drools规则引擎从入门到精通】 Drools是一个强大的业务规则管理系统,它提供了业务规则引擎、Web创作工具(Drools Workbench)以及决策模型符号(DMN)的支持。作为一个开源项目,Drools使用Java编写,遵循Apache...

    Drools规则引擎使用demo

    Drools是一款强大的规则引擎,由Red Hat公司开发并维护,它主要用于实现业务规则的管理和执行。Drools提供了一种声明式的方式来定义业务规则,使得非技术人员也能理解和修改规则,从而降低了业务逻辑与代码的耦合度...

    规则引擎实现源码

    规则引擎是一种软件系统,它允许业务规则以声明式的方式进行编码,从而使得非技术人员也能理解和修改这些规则。这种技术在处理复杂逻辑判断时特别有用,因为它可以将业务规则与核心应用程序逻辑分离,使得规则的更新...

    规则引擎-数据库访问操作

    规则引擎-数据库访问操作 规则引擎是指一类可以根据预定义的规则对数据进行处理和分析的软件系统。这种系统通常具有强大的数据处理能力和灵活的规则配置能力。然而,传统的规则引擎产品通常不具备访问数据库的功能...

    Aviator 之规则引擎

    **Aviator 规则引擎详解** Aviator 是一个开源的Java表达式执行引擎,它主要用于实现复杂的业务逻辑和规则计算。作为一个轻量级的规则引擎,Aviator 提供了一种简洁而强大的方式来处理动态计算和决策过程。本文将...

    规则引擎-规则测试和轨迹跟踪

    《规则引擎:规则测试与轨迹跟踪详解》 规则引擎作为一种强大的业务逻辑处理工具,它允许开发者以声明式的方式定义规则,使得复杂的业务决策能够被高效地执行和管理。本文将深入探讨规则引擎中的规则测试和轨迹跟踪...

    规则引擎Drools.NET移植版

    **规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行...

    springboot整合Drools规则引擎,实现高效的业务规则

    Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。具有易于访问企业策略、易于...

    drools文档教程-规则引擎文档

    Drools 规则引擎文档教程 Drools 规则引擎是一种基于 Java 的开源规则引擎,主要用来解决复杂的业务逻辑问题。下面是 Drools 规则引擎在在线申请信用卡业务场景中的应用。 问题引出现有一个在线申请信用卡的业务...

    规则引擎Drools使用手册(中文)

    ### 规则引擎Drools使用手册:4.0版更新要点详解 #### 一、Drools 4.0新特性概览 Drools 4.0是一次重要的更新,相较于之前的Drools 3.0.x系列,在语言表达、引擎性能以及工具实用性等方面都有显著提升。以下为此次...

    基于Spring的规则引擎

    ### 基于Spring的规则引擎 #### 一、引言 随着信息技术的发展,企业级应用系统的复杂性不断增加,为了更好地应对不断变化的市场需求和业务环境,开发灵活、可扩展的应用系统成为当前的一个重要趋势。业务规则作为...

    规则引擎及J2EE平台

    标题与描述概述的知识点主要集中在规则引擎及其与J2EE平台的结合上,这涉及到企业级应用的灵活性提升以及业务规则的动态管理。下面将详细展开这些知识点。 ### 规则引擎简介 规则引擎是一种软件组件,用于评估和...

Global site tag (gtag.js) - Google Analytics