欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 毕业论文 > 计算机毕业论文

Java规则引擎技术研究_演绎推理

时间:2012-06-27  作者:刘宇

论文导读::核心API实现。业务规则引擎可以实现所需的这种灵活性。不但能够演绎推理。而且可以归纳推理。
论文关键词:java,规则引擎,rete算法,演绎推理,归纳推理
 

1. 简介

业务规则专家组 (BRG) 分别从业务角度和信息系统角度给出了业务规则的两个定义 [1]:从业务的角度看,业务规则是一种原则,包含在特定活动或范围内关于指导、操作、实践或过程的行为规范。从信息系统的角度看,业务规则是一个定义或限制业务某些方面的声明。业务规则旨在用于断言业务结构,或者控制或影响业务行为。业务规则并不是静态的,它们经常变更,且其关联的业务流程也会随之变更。正是由于这些变更,使得有必要在实现和修改业务流程时保持灵活性,从而在激烈的竞争中赢得一席之地。业务规则引擎可以实现所需的这种灵活性。对于企业而言,管理机构、竞争对手、客户和整个市场情况不断带来的各种变更,必须将这些变更作为业务规则。

规则引擎起源于基于规则的专家系统演绎推理,而基于规则的专家系统又是专家系统的其中一个分支。专家系统属于人工智能的范畴,它模仿人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。文献[2]详细介绍了基于规则的专家系统。

规则引擎理可被解为一种高性能的专用解释程序,其中包含if-then命令,可根据预先定义的规则对转换的值和对象进行分析,然后返回修改后的值和对象,或直接执行操作。规则引擎技术将规则与业务逻辑相分离,它提供了声明式的“编程”方式来指明要作什么,

而不是怎么做。运行时,规则引擎必须对这些业务规则进行解释。可以将规则引擎理解为一种高性能的专用解释程序,其中包含if-then命令,可根据预先定义的规则对转换的值和对象进行分析,然后返回修改后的值和对象,或直接执行操作期刊网。因此,大多数规则引擎使用“Rete” 算法,并支持演绎和归纳。

和人类的思维相对应,规则推理引擎存在两种推理方式:演绎推理(Forward-Chaining)和归纳推理(Backward-Chaining)。演绎法从一个初始的事实出发,不断地应用规则得出结论(或执行指定的动作)。而归纳法则是根据假设,不断地寻找符合假设的事实。Rete 算法是目前效率最高的一个Forward-Chaining推理算法,许多Java规则引擎都是基于Rete算法来进行推理计算的,其核心推理步骤如下:

(1) 将初始数据(fact)输入Working Memory。

(2) 使用Pattern Matcher比较规则库(rule base)中的规则(rule)和数据(fact)。

(3) 如果执行规则存在冲突(conflict)演绎推理,即同时激活了多个规则,将冲突的规则放入冲突集合。

(4) 解决冲突,将激活的规则按顺序放入Agenda。

(5) 使用执行引擎执行Agenda中的规则。重复步骤2至5,直到执行完毕所有Agenda中的规则。

本文首先分别对Sun Java CAPS规则解决方案、JBoss Drools、Jess三种主流规则引擎及相关技术进行了介绍和特性分析;之后分别从实现技术、授权方式和应用场景等方面对三种引擎进行了对比;最后总结全文基于对比分析结果给出结论。

2. Java规则引擎

Java规则引擎是规则引擎技术在Java平台的实现及应用。Java规则引擎对提交给引擎的Java数据对象进行检索,根据这些对象的当前属性值和它们之间的关系,从加载到引擎的规则集中发现符合条件的规则,创建这些规则的执行实例。这些实例将在引擎接到执行指令时依照某种优先序依次执行。一般来讲,Java规则引擎内部由下面几个部分构成:工作内存(Working Memory)即工作区,用于存放被引擎引用的数据对象集合;规则执行队列,用于存放被激活的规则执行实例,静态规则区,用于存放所有被加载的业务规则,这些规则将按照某种数据结构组织,当工作区中的数据发生改变后,引擎需要迅速根据工作区中的对象现状,调整规则执行队列中的规则执行实例。Java规则引擎的结构如图1所示。

演绎推理

图1 Java规则引擎工作机制

当引擎执行时,会根据规则执行队列中的优先顺序逐条执行规则执行实例,由于规则的执行部分可能会改变工作区的数据对象,从而会使队列中的某些规则执行实例因为条件改变而失效,必须从队列中撤销,也可能会激活原来不满足条件的规则,生成新的规则执行实例进入队列。于是就产生了一种“动态”的规则执行链演绎推理,形成规则的推理机制。这种规则的“链式”反应完全是由工作区中的数据驱动的。

当前业界较为成熟的Java规则引擎主要有Sun Java CAPS套件中规则解决方案、JBoss Drools、Jess三种,以下分别针对这三种规则引擎及相关技术进行介绍和特性分析。

2.1 Java CAPS

2.1.1简介

Java CAPS是Sun Java Composite ApplicationPlatform Suite的缩写,是Sun提供的SOA解决方案的产品套件,是一套商业产品。在CAPS套件中,没有自己的规则引擎,有的只是通过一个GUI(Business Rule Designer)来图形化的把应用中的一些业务逻辑转换成Java代码、XSLT、业务流程代码(BPEL中的片断)。CAPS把这种业务逻辑的定义称为业务规则设置。

2.1.2 特性分析

CAPS的业务规则设计功能完全是嵌在Enterprise Designer(一款基于NetBeans的IDE),它提供了一个Business Rule Designer(业务规则编辑器)来进行业务规则设计。通过图形化的方式将一些业务赋值逻辑生成最终的Java、XSLT或BPEL代码。Business Rule Designer提供了赋值过程中(定义设计期)的校验和测试功能,提供了众多函数(字符串操作、数学运算操作等)来协助完成复杂赋值。

2.2 JBoss Drools

2.2.1简介

JBoss Drools是一款开源(采用的Apache 2 许可证)的业务规则引擎。在4.0之前,JBoss Drools叫做JBoss Rules。JBoss Drools是JBoss企业框架的一部分,与JBoss jBPM有很好的结合期刊网。Drools采用的推理算法是ReteOO,是一种Rete算法的面向对象的实现,并做了改进。目前Drools是一个基于演绎法推理的规则引擎,对于归纳法将在下一个里程碑版本中支持[3]

Drools可以分为两个主要的部分:Authoring和Runtime。Authoring的处理包括DRL或XML规则文件的创建,然后提供给由Antlr 3语法定义的一个解析器中(系统结构如图2所示)。这个解析器检查规则的语法是否正确,然后将其转换为一个描述规则抽象语法树的中间结构(descr)。这个抽象语法树再通过Package Builder来生成规则包。

演绎推理

图2 Authoring对应组件结构

RuleBase是包含一个或多个Packages的Runtime组件(系统结构如图3所示)。Packages可以在任何时候添加到Rule Base或从Rule Base中删除。一个Rule Base可以在任何时候实例化一个或多个工作内存。工作内存包含一些子构件,包括工作内存事件支持、事实维护系统、议程(Agenda)和议程事件支持。

演绎推理

图3 Runtime对应组件结构

JBoss Drools产品中核心功能Jar包及对应的功能描述如表1所示。

表1Drools Library包描述

 

名称

描述

drools-core.jar

Drools的核心引擎,运行时组件,包含Rete引擎。如果你预先编译规则(和通过Package 或RuleBase对象进行发布)的话,在运行时,你只需要这一个jar就可以了。

drools-compiler.jar

包含compiler/builder组件,用来把rule编译为可运行的rule bases。如果你预先编译规则的话,在运行时就不需要这个jar了演绎推理,否则需要。它依赖drools-core.jar。

drools-decisiontables.jar

决策表“compiler”组件,使用drools-compiler组件。支持excel和CSV输入格式。

drools-jsr94.jar

JSR-94实现包,但没有覆盖Drools的全部功能。

2.2.2 特性分析

Drools的规则语言是一种脚本语言(.drl),它支持MVEL表达式和Java表达式,支持自然语言与DSL的映射。同时Drools也提供了功能相同的XML格式的规则描述语言,以方便于只适用XML的场合。为了使规则对非技术人员更友好,Drools支持决策表(一种电子表单式的规则表现方式)、CSV格式的规则表达。此外,对于复杂的规则集,尤其是其中涉及规则间执行顺序等约束的,Drools提供了规则流(Rule Flow)支持,通过图形化的方式来定义这个复杂的规则集。

Drools提供了基于Web的BRMS(业务规则管理系统,逻辑架构如图4示),使用AJAX技术,提供了对规则的编写、协作、存储、版本控制、分类管理、构建和发布、导入/导出的功能。Drools的BRMS运行于任何支持Java SE 5的应用服务器上。缺省的,Drools使用Apache Jackrabbit来存储规则,它支持通过配置来使用其它关系数据库系统。

图4 BRMS架构

Drools对线程安全的支持有状态的和无状态的线程连接,可以很容易的嵌入在Java平台,JavaEE以及面向服务的商业应用之中。此外用户还可以直接在Hibernate驱动的RDBMS查询中对数据(facts)进行判断,现有的Hibernate组件可以直接用在规则引擎中,减少编码的工作量[4]

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:JAVA匿名类的分析和理解_子类
下一篇论文:PBB/VPLS双栈技术及其效率分析_网络融合
毕业论文分类
行政管理毕业论文 工商管理毕业论文
护理毕业论文 会计毕业论文
会计专业毕业论文 英语专业毕业论文
大学毕业论文 硕士毕业论文
计算机毕业论文 市场营销毕业论文
物流管理毕业论文 法学毕业论文
相关计算机毕业论文
最新计算机毕业论文
读者推荐的计算机毕业论文