规则引擎学习笔记 下载本文

内容发布更新时间 : 2024/5/14 3:24:20星期一 下面是文章的全部内容请认真阅读。

ILOG Jrules

1. 技术背景

目前企业业务策略越来越复杂,而且在快速发展的市场中常常会变动。例如银行的账户验证过程中,评估客户资格和确定价格的业务策略十分的复杂,把这些策略硬生生的编码在过程中是十分不合适的,因为很难在运行时管理和维护业务规则。通过把这些业务规则和业务流程分隔开来,单独的执行和管理他们,可以提高整个业务流程的敏捷性和可扩展性。 ILog Jrules是先进的业务规则管理系统,提供编写,部署和管理业务规则等业务功能。它支持高效的修改策略和部署策略,这正是敏捷的全面集成的企业所需要的。 ILOG JRules提供一种建模,实现和部署业务规则的系统化方法。他支持以有秩序的高效的方式进行协作。它包含的工具这对不同用户的技能和知识优化过,因此策略经理,业务分析师和开发人员都可以获得所需要的支持。

2. 场景应用

如上图所示,在银行账户验证的场景中,ILOG JRules起到了很好的应用。 详细说明参考:

http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1002_duan/1002_duan.html

Drools规则引擎

3. Drools概述

Drools是用Java语言编写的开放源码规则引擎。Drools允许使用声明方法报答业务逻辑。可以使用非XML的本地语言编写规则,从而便于学习和理解。并且,还可以将Java代码直接嵌入到规则文件中,Drools还具有其他优点: i) 容易使用; ii) 快速的执行速度; iii) 在Java开发人员中流行;

iv) 与Java Rule Engine API(JSR 94)兼容;

详细信息参考:http://www.ibm.com/developerworks/cn/java/j-drools/

Java规则引擎API----JSR 94

4. JSR94概述

为了使规则引擎技术标准化,Java社区指定了Java规则引擎API(JSR 94 )规范。它为java平台访问规则引擎定义了一些简单的API。

Java 规则引擎API在javax,rules包中定义,是访问规则疫情的标准企业级API。Java规则引擎API运行客户程序使用同一的方式和不同的厂商的规则引擎产品交互,就如同使用JDBC编写独立于厂商访问不同的数据库产品一样。Java规则引擎API包括创建和管理规则集合的机制,在工作区中添加,删除和修改对象的机制,以及初始化,重置和执行规则引擎的机制。

5. Java规则引擎API体系结构

Java规则引擎API主要由两大类API组成,规则引擎API(The Rules Administrator API)和运行时客户API(The Runtime Client API)。

A) 规则管理API

规则管理API在javax.rules.admin包中定义,包含装载规则以及与规则对应的动作(执行集execution sets)以及实例化规则引擎。

规则管理API使用类RulesServiceProvider来获得规则管理器(RuleAdminiStrator)接口的实例。该接口提供方法注册和取消注册执行集。

规则管理器提供了本地和远程的RuleExecutionSetPorvider,它负责创建规则执行集(RuleExecutionSet)。

规则执行集接口除了拥有能够获得有关规则执行集的方法,还能够检索在规则执行集中定义的所有规则对象。 B) 运行时客户API

运行时API在javax.rules包中定义,为规则引擎用户运行规则获得结果提供了类和方法。运行时客户只能访问那些使用规则管理API注册过的规则,运行时API帮助用户获得规则会话,并在这个会话中执行规则。

运行时API提供了对厂商规则引擎API的访问方法,这类似于JDBC。类RulesServiceProvider提供了对具体规则引擎实现的运行时和管理API的访问,规则引擎厂商通过该类将其规则引擎实现提供给客户,并获得RulesServicePorvider唯一标示规则引擎的URL。此URL的标准用法是使用类似于”com.mycompany.myrulesengine.rules.RulesServiceProvider”这样的Internet域名空间。

RuleServiceProvider类的内部实现了规则管理和运行时访问所需的接口。所有的RulesServiceProvider要想被客户访问都必须用RulesServiceProviderManager进行注册,注册方式类似于JDBC API的DriverManager和Driver。

运行时接口是运行时API的关键部分。运行时接口提供了用于创建规则会话(RuleSession)的方法,规则会话是用来运行规则的。运行时API同时也提供了访问在service provider注册过的所有规则执行集(RuleExecutionSets)。

C) JAVA规则引擎API代码实例:

JAVA规则引擎的管理活动首先是要查找一个合适的RuleServiceProvider对象,这个对象是应用程序访问规则引擎的入口。可通过

javax.rules.RuleServiceProviderManager类来获得:

String implName = \ Class.forName(implName);

RuleServiceProvider serviceProvider =

RuleServiceProviderManager.getRuleServiceProvider(implName);

拥有了RuleServiceProvider对象,就可以获得一个

javax.rules.admin.RuleAdministrator类。从RuleAdministrator类中,可以得到一个RuleExecutionSetProvider,它用于创建javax.rules.RuleExecutionSets对象。RuleExecutionSet基本上是一个装入内存的,准备好执行的规则集合。