规则引擎

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

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

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

  应用背景: 企业级管理者对企业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官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值