(计算机应用技术专业论文)基于rete算法规则引擎的研究及其实现与应用.pdf_第1页
(计算机应用技术专业论文)基于rete算法规则引擎的研究及其实现与应用.pdf_第2页
(计算机应用技术专业论文)基于rete算法规则引擎的研究及其实现与应用.pdf_第3页
(计算机应用技术专业论文)基于rete算法规则引擎的研究及其实现与应用.pdf_第4页
(计算机应用技术专业论文)基于rete算法规则引擎的研究及其实现与应用.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)基于rete算法规则引擎的研究及其实现与应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北大学硕士学位论文 摘要 基于r e t e 算法规则引擎的研究及其实现与应用 摘要 规则引擎起源于基于规则的专家系统,是专家系统的个分支。随着业务的不断 变化,企业级应用要求系统的业务逻辑随时做出调整。传统的方式是把业务逻辑在程 序中实现,这样如果业务发生变化,更新程序只有专业的技术人员才能完成,从而系 统更新的周期也会增长。而规则引擎通过定制规则来实现业务逻辑,规则定制方式简 单且独立于程序,不但可以做到快速更新,还可以把定制工作交给对业务更了解的人 员去处理,减少了对专业技术人员的依赖。 在规则引擎的算法中,正向链模式匹配算法r e t e 算法是效率最高的,本文以 r e t e 算法为基础,对规则引擎进行了深入研究与实践应用。首先从规则引擎的基本概 念和原理入手,通过引入专家系统进行了详细的描述。然后重点分析了r e t e 算法及其 节点组成和实现原理,并对节点进行面向对象建模及整个算法的面向对象实现。最后 详细阐述了规则引擎在r v a 系统中的应用。 同时本文对规则引擎标准a p i 接口j s r 9 4 规范也做了详细的说明,并结合实 际项目对接口函数调用、执行过程做了完整的阐述。 另外,考虑到x m l 语言自身的优势,本文基于x m l 语言自定义了一套规则语 法,并采用x m l 架构来描述规则语法,最后结合实际工程项目加以应用。 关键词:规则引擎;r e t e 算法;j s r - 9 4 规范;面向对象;x m l 架构 i i 东北大擘硕士学位论文 a b s t r a c t r e s e a r c ho i lt h er u l ee n g i n eb a s e do nr e t ea l g o r i t h ma n di t s r e a l i z a t i o na n d a p p l i c a t i o n a b s t r a c t r u l ee n g i n eo r i g i n a t e sf r o mt h er o l e b a s e de x p e r ts y s t e m ,a n di tb e c o m e sab r a n c ho f t h e e x p e r ts y s t e m w i t ht h ee v e r - c h a n g i n g b u s i n e s s r e q u i r e m e n t s ,e n t e r p r i s e l e v e l a p p l i c a t i o n sr e q u i r et i m e l ya d j u s t m e n ti nb u s i n e s sl o g i c t h et r a d i t i o n a lw a yi st or e a l i z e b u s i n e s sl o g i ci np r o g r a m s ,w h i c hw i l ln o to n l yi n c r e a s et h ep e r i o do f c h a n g i n gb u s i n e s sl o g i c , b u ta l s om a k ei th a r dt ou p d a t ep r o g r a m sb e c a u s ei tc a no n l yb ed o n eb yp r o f e s s i o n a l p r o g r a m m e r s r u l ee n g i n er e a l i z e sb u s i n e s sl o g i cb yc u s t o m m a d er u l e s ,w h i c hi sb o t hs i m p l e a n di n d e p e n d e n to ft h ep r o g r a m s t h e r e f o r e ,w ec a nn o to n l yu p d a t es y s t e mi m m e d i a t e l y ,b u t a l s ol e a v et h ec u s t o m i z a t i o nw o r kt op e o p l ew h ou n d e r s t a n db u s i n e s sr u l e sb e t t e r , w h i c h d e c r e a s e st h ed e p e n d e n c eo np r o f e s s i o n a ld e v e l o p e r s f o rt h er e a s o na b o v e ,t h i st h e s i sd o e st h o r o u g hr e s e a r c ho i la n dp r a c t i c a la p p l i c a t i o no f t h er e t ea l g o r i t h mw h i c hi st h em o s te f f e c t i v em a t c ha l g o r i t h mw i t hf o r w a r d - c h a i n i n gp a r e m f i r s t l y , t h i st h e s i ss t a r t sw i t hd e s c r j i p t i o no f t h eb a s i cc o n c e p t sa n dt h ep r i n c i p l eo f r u l ee n g i n e , a n dd e s c r i b e st h e mi nd e t a i lb yr e f e r r i n gt oe x p e r ts y s t e m t h e ni t a n a l y s e st h er e t e a l g o r i t h ma sw e l la si t ss t r u c t u r eo fn o d e sa n dr e a l i z a t i o np r i n c i p l e s e c o n d l y ,i tm o d e l st h e n o d e sa n dr e a l i z e st h ea l g o r i t h mu s i n go b j e c t - o r i e n t e dt e c h n i q u e f i n a l l yi tt a k e st h ed i v i s i o n p r o j e c ta sa ne x a m p l et od e s c r i b et h ea p p l i c a t i o no f r e t ea l g o r i t h m t h et h e s i sa l s od e s c r i b e st h es t a n d a r da p ii n t e r f a c eo fr u l ee n g i n e ( j s r - 9 4s p e c i f i c a t i o n ) , t h e ne x p l a i n si t si n t e r f a c ef u n c t i o na n dp r o c e s so f e x e c u t i o n i na d d i t i o n , c o n s i d e r i n gt h ea d v a n t a g e so fx m ll a n g u a g e ,t h et h e s i sc u s t o m i z e sas e to f r u l es y n t a xb a s e do nx m l ,d e s c r i b e st h er u l es y n t a xu s i n gx m ls c h e m aa n df i n a l l ya p p l i e si t i nd i v i s i o np r o j e c t k e yw o r d s :r u l ee n g i n e ;r e t ea l g o r i t h m ;j s r - 9 4s p e c i f i c a t i o n ;o b j e c t - o r i e n t e d ; x m ls c h e m a i i i 独创性声明 本人声明所呈交的学位论文是在导师的指导下完成的。论文中取得的 研究成果除加以标注和致谢的地方外,不包含其他人已经发表或撰写过的 研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示诚挚 的谢意。 学位论文作者签名:奋勇氍 签字日期:讥叼,l tf 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。 ( 如作者和导师同意网上交流,请在下方签名:否则视为不同意) 学位论文作者签名:砀眢 导师签名: 签字日期:啪7 ij ,f r 签字日期: 徐秭 泪、i 。| 工 , 东北大学硕士学位论文 第一章绪论 第一章绪论 1 1 引言 现代商业规则异常复杂,业务规则经常变化,更新业务流程的平均周期已经从 1 9 8 0 年的8 4 个月缩短到了现在的6 个月,而且i t 解决方案交付周期也从3 0 个月缩短 到了3 个月【l 】。在传统的应用系统开发和实施过程中,业务规则( b u s i n e s sr u l e s ) 是 在需求分析阶段由用户提供并内嵌在程序代码中的。应用系统一旦开发完成后业务规 则相对固定不易改动。然而,业务规则充斥在应用系统的各个方面和角落,并且往往 需要频繁的变更,应用系统的每项策略、规则的变化都需要开发人员对源代码进行 修改,从而限制了应用系统的灵活性和生命力。这就要求企业级i t 系统必须根据业务 规则的变化快速、低成本地更新。同时复杂企业级项目的开发以及其中随外部条件不 断变化的业务规则,迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决 策,并把这些商业决策放在中心数据库或者其他统一的地方,让他们能在运行时可以 动态地管理和修改从而提供软件系统的柔性和适应性。 规则引擎的出现为上述问题提供了一个很好的解决办法。规则引擎由基于规则的 专家系统中的推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务规 则从应用决策程序代码中分离出来,并使用预定义的语义模块编写业务决策,接受数 据输入、解释业务规则、并根据规则做出业务决策。规则引擎用“i ft h e n ”的规则 形式捕获商业逻辑的运行特征,并通过认识一行动循环过程求解问题,其表现形式单 一、直观,有利于业务逻辑的提取与形式化,其问题求解过程符合人的认知过程,且 计算机容易实现,有利于问题求解和系统的开发。 规则引擎的核心是逻辑推理,而逻辑推理的效率取决于模式匹配算法的运行效 率,c h a r l e s l f o r g y 博士于1 9 8 2 年提出的r e t e 模式匹配算法是目前效率最高的一个正 向链( f o r w a r dc h a i n i n g ) 推理算法,本文主要针对r e t e 算法做一些理论研究,并对 r e t e 算法进行了面向对象( o b j e c t - o r i e n t e d ) 实现,最后以几个实际应用为例阐述规则 引擎的强大功能。 东北大学硕士学位论文第一章绪论 1 2 规则引擎综述 1 2 1 规则引擎简介 规则引擎是推理引擎的一种,它起源于基于规则的专家系统。专家系统是人工智 能的一个很重要的分支,它模仿人类的推理方式,使用试探性的方法进行推理,并使 用人类能理解的术语解释和证明它的推理结论,作为一种求解特定领域问题的智能计 算机程序,已经渗透到各个领域。专家系统有很多分类:神经网络、基于案例推理和 基于规则系统等。 规则引擎的确切定义在业界一直存在着争论,j s r - 9 4 标准也没有明确给出定义, 今后相关标准的制定应该可以给这样的问题和争论划上一个句号。本文中,暂且这样 描述什么是规则引擎:规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组 件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业 务决策,接受数据输入,解释业务规则,并根据规则做出业务决策。 1 2 2 研究现状 目前国际上主要的商业规则引擎包括i l o g 公司的j r u l e s ,y a s u 的q u i c k r u l e s 以 及j e s s ,开源的规则引擎包括j b o s s 公司的d r o o l s ,j :l i s a 以及m a n d a r a x ,下面分别加 以介绍: 商业规则引擎: ( 1 ) i l o g 公司的j r u l e s j r u l e s 3 1 是由全球著名的软件组件供应商i l o g 公司推出的规则引擎系统。i l o g j r u l e s 提供一个软件组件,用户可以用规则来描述他的商业逻辑,并且可以正确运行 这些规则。i l o g 最早于1 9 9 2 年推出r u l e sf o rc + + 产品,之后2 0 0 0 年开始推出j l r u l e s 产品,到现在推出b u s i n e s sr u l em a n a g e m e n ts y s t e m ,其不断的从事规则管理平台的产 品线,此产品目前在银行、保险、电信、e r p 项目中得到广泛应用,去年i l o g 更是 达到了l 亿美金的销售收入。 i l o g 发展迅速,目前其产品在中国的保险、电信、银行的项目中已经得到应用。 ( 2 ) y a s u 的q u l c k r u l c s y a s ut e c h i n o l o g i e s 4 1 是- 家美国的公司,专业从事商业规则引擎以及相关的产 品。公司于1 9 9 9 年成立,2 0 0 1 年开始推出q u i c k r u l e s 产品,目前已经升级到4 0 ,并 且分别提供j 2 e e 和n e t 两个平台的版本。 ( 3 ) j e s s 2 东北大学硕士学位论文 第一章绪论 j e s s l 5 是1 9 9 5 年由美国s a n d i a 国家实验室分布式系统计算组成员e r n e s tj f r i e d m a n h i t 用j a v a 实现的规则引擎产品,其目前主要用于专家系统。j e s s 被广泛用 于学术、工业、商业等领域,是个有着广阔发展前景的专家系统开发平台。j e s s 目 前还是一个实验室研究产品,没有提供商业版,自从问世以来由许多研究技术人员不 断地在j e s s 的基础上添加一些新的辅助功能。加拿大国家研究委员会信息技术研究所 的r a o r c h a r d 将模糊推理的功能加入到j e s s 中,推出了f u z z y jt o o l k i t 。 开源规则引擎: ( 1 ) d r o o l s d r o o l s l 2 5 1 是一个b o bm c w h i r t e r 开发的开源项目,实现了j s r 9 4r u l ea p i 并提供了 单元测试代码,应用了r e t e 核心算法。现已被开源软件商j b o s s 公司收购。 ( 2 ) j l i s a j l i s a 2 6 】是用来构建业务规则的强大框架,它扩展了l i s p 优点,比c l i p s 还要强 大,这些特色对于多范例软件的开发是至关重要的,并且也支持j s r 9 4 规范。 ( 3 ) m a n d a r a x m a n d a r a x l 2 7 】基于反向推理,能够较容易地实现多个数据源集成。例如,数据库记 录能方便地集成为事实集( f a c t ss e t ) ,r e f l e c t i o n 用来集成对象模型中的功能,目前还 不支持j s r 9 4 标准。 总体来说国际上对于规则引擎的研究已经有i o 年左右的历史,相关的商业化产品 的推出也有4 5 年的时间,目前已经形成了一个行业。特别在金融、保险等行业系 统、e r p 、电子商务以及专家系统方面有广泛的应用。但是国内对规则引擎方面的研 究还处于萌芽状态,并且相关成型的产品几乎没有,本论文基于公认的效率最高的正 向推理r e t e 算法,以期在j a v a 规则引擎方面进行一些理论研究与基本的实践探索。 1 2 3 规则引擎规范j s r - 9 4 过去大部分的规则引擎并没有规范化,有其自有的a p i ,这使得其与外部程序交 互集成不够灵活。转而使用另外一种产品时往往意味着需要重写应用程序逻辑和a p i 调用,代价较大。一直以来规则引擎工业标准的缺乏成为令人关注的重要方面。2 0 0 3 年1 1 月定稿并于2 0 0 4 年8 月最终发布的j s r _ 9 4 1 6 1 ( j a v a 规则引擎a p i ) 使得j a v a 规 则引擎的实现得以标准化。 j a v a 规则引擎是由j c p 组织制定的一组规范,用于实现客户程序与规则引擎的交 互。j s r - 9 4 规范定义了独立于厂商的标准a p i ,开发人员可以通过这个标准的a p i 使 用j a v a 规则引擎的不同产品实现。 东北大擘硕士学位论文 第一章绪论 由于j s r - 9 4 并没有定义规则语义的语法,因此本论文的研究内容包括基于, x m l 语言自定义并解释规则语法。 1 3 课题的背景、内容和意义 1 3 1 课题的来源和研究背景 随着信息技术在企业中的大规模应用,企业管理者对企业级r r 系统的开发普遍有 着如下的要求: ( 1 ) 为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。 , ( 2 ) 市场要求业务规则经常变化,1 1 r 系统必须依据业务规则的变化快速、低成本 地更新 ( 3 ) 为了快速、低成本地更新,业务人员应能直接管理i t 系统中的规则,不需 要程序开发人员参与。 同时项目开发人员碰到了以下的问题: ( 1 ) 程序= 算法+ 数据结构,有些复杂的商业规则很难推导出算法和抽象出数据 模型。 ( 2 ) 软件工程要求从需求到设计到编码,然而业务规则常常在需求阶段可能还没 有明确,在设计和编码后还在发生变化,业务规则往往嵌在系统各处代码中。 ( 3 ) 对开发人员来说,系统维护、更新困难,更不可能让业务人员来管理。 规则引擎的出现提供了解决以上问题的契机。规则引擎通过嵌入到应用程序中实 现对业务流程的定制,可以使开发人员从繁复的代码开发中解脱出来,关注的焦点主 要集中在应用程序的业务流程。规则的可定制性也大大增加了系统可维护性,如果业 务逻辑发生改变的话,只需要重新定制业务规则就可以达到更新业务逻辑的目的,不 需要对系统进行重复开发,这部分任务只需要交给业务人员处理就可以了,同时也满 足了企业管理者的需求。 只要是面向应用系统的开发大都会涉及业务流程,规则引擎的嵌入式属性决定了 它可以在任何业务流程可实现定制的地方出现。作者力求通过对规则引擎的深入研 究,为应用软件开发中业务规则实现定制进行理论准备和实践应用探索。 1 3 2 课题研究内容 规则引擎的运行效率是使它走向大规模的商业应用,体现其价值的核心所在。而 规则引擎效率主要取决于模式匹配的效率,r e t e 算法是迄今为止效率最高的正向链推 理算法,本文基于r e t e 算法,以针对基本r e t e 算法研究、面向对象实现及应用于部门 4 东北大学硕士学位论文 第一章绪论 研发项目为主线,通过理论的研究与实践应用相结合的方法阐述规则引擎的应用价 值。 本文主要研究内容分四个部分。第一部分,分析基本的r e t e 算法结构。c h a r l e sl f o r g y 博士只给出r e t e 算法简要描述,使算法显得非常晦涩难懂。通过对算法的分 析,不仅可以给读者展示基本r e t e 算法的本来面目,而且为以后的研究奠定理论基 础。第二部分,r e t e 算法节点建模和算法流程面向对象实现。这部分为课题研究重点 之一,根据算法分析构建算法节点,设计算法实现流程。包括构建r e t e 网络树、规则 匹配、冲突处理、规则执行等模块。第三部分,自定义规则语法及规则定制。本部分 也是研究重点之一,包括规则语言的选取、规则语法定义、规则定制。第四部分,面 向对象r e t e 算法的应用。本部分通过结合基于r e t e 算法的规则引擎在r v a 系统中的 设计与实现,阐述规则引擎的应用前景及应用价值。 1 3 3 课题研究意义 近几年针对规则引擎的研究方兴未艾,它强大的业务规则的定制能力及在项目开 发中简化开发流程的作用得到了越来越多的关注。项目开发中只要存在业务规则的地 方就可以考虑用规则引擎来定制,这样不仅可以缩短开发周期而且极大地增强了系统 的灵活性和后期的可维护性。由于一般的应用项目都会涉及业务规则,所以对规则引 擎的实现逻辑以及在项目中如何得到有效应用的研究不但有理论意义而且有广泛的应 用价值。 1 4 本文的组织结构 本论文的各部分结构和安排如下: 第一章绪论。该章从规则引擎是如何伴随应用而出现开始,大体介绍了规则引擎 的基本概念,国内外研究现状以及简单地介绍了规则引擎规范j s r - 9 4 。同时介绍了课 题的来源、研究背景、结构和研究意义。 第二章基于j a v a 的规则引擎。该章引入专家系统规则引擎的来源,通过分析 大家都比较熟悉的专家系统的运行原理来说明规则引擎的工作原理。同时详细地阐述 了j s r 一9 4 规范内容。 第三章r e t e 模式匹配算法。该章主要阐述基本r e t e 算法的基本原理和网络构 成,通过深入分析r e t e 网络结构、模式匹配过程与匹配的算法实现,使r e t e 算法完整 地呈现出来。 5 东北大学硕士学位论文 第一章绪论 第四章r e t e 算法的面向对象实现。该章首先引入面向对象方法论和建模技术的介 绍,给出r e t e 算法面向对象实现的理论来源。通过对r e t e 算法节点类型的分析,进一 步实现节点的建模和整个算法的面向对象实现。 第五章基于r e t e 算法的规则引擎在r v a 系统中的设计与实现。该章主要通过与 部门的研发项目相结合,详细阐述规则引擎的实际应用,从而展现出规则引擎广泛的 应用价值。 第六章结束语。该章对本课题的研究内容进行总结并提出课题的不足之处和后续 研究内容。 东北大学硕士学位论文 g _ c _ - 章基于j a v a 的规则引擎 第二章基于j a v a 的规则引擎 2 1 基于规则的专家系统( r b e s ) 规则引擎是基于规则的专家系统的一部分。为了更深入的了解j a v a 规则引擎,下 面简要地介绍一下基于规则的专家系统( r u l e b a s e de x p e r ts y s t e m ) 。r b e s 的结构如 图2 1 所示。 图2 1 基于规则的专家系统 f i g2 1r u l e b a s e de x p e r ts y s t e m 其中规则库是中心数据库,存储各类模拟人类问题求解的产生式规则。一个规则 分前件部分和后件部分1 2 4 】。 前件( a n t e c e d e n t ) :又称条件部分、模式部分或左部( l e f t - h a n ds i d e ,l h s ) , 是规则出发的条件。单独的条件称为条件元素或一个模式。 后件( c o n s e q u e n t ) :又称右部( r i g h t - h a n ds i d e ,r h s ) ,是规则触发时将要执 行的一系列行为。 工作存储器是应用于规则的事实的全局数据库,它保存系统的当前状态。 推理机( i n f e r e n c ee n g i n e ) :通过决定哪些规则满足事实或目标,并授予规则优先 级,满足事实或目标的规则被加入议程。 东北大学硕士学位论文 第二章基于j a v a 的规则引擎 模式匹配器( p a t t e nm a t c h e r ) :通过比较事实和规则的模式部分,决定选择执行 哪个规则,何时执行规则。模式匹配是基于规则的推理机的关键,它决定了推理机的 推理效率。 议程( a g e n d a ) :由推理机创建的一个规则优先级表,这些规则匹配工作存储器 中的事实。如果同时有多个规则和事实匹配,则优先级最高的被触发。被触发规则的 动作可能会产生新的事实,新的事实也被加入工组内存。 执行引擎( e x e c u t i o ne n g i n e ) :负责执行议程中的规则和其它动作。 规则获取机( r u l ea c q u i s i t i o nf a c i l i t y ) :为用户建立的一个知识自动输入方法,以 直观易懂的方式帮助用户建立规则,以代替技术人员去编码规则。 解释机( e x p l a n a t i o nf a c i l i t y ) :负责把系统的推理解释给用户,实现专家系统的 输出。 基于规则的专家系统有两种基本的推理方式:正向推理( f o r w a r d - c h a i n i n g 正向 链,也叫演绎法) 和反向推理( b a c k w a r d - c h a i n i n g 反向链,也叫归纳法) 。正向推理 是从事实推出结论的过程,又称为数据驱动,反向推理是先提出假设,然后验证假设 的正确性,又称目标驱动。 正向推理的过程大致是: ( 1 ) 用工作存储器中的事实与规则的前提条件进行匹配; ( 2 ) 按冲突消解策略从匹配的规则实例中选择一条规则; ( 3 ) 执行选中规则的动作,依次修改工作存储器; ( 4 ) 用更新后的工作存储器,重复上述几步工作,直到得出结论或工作存储器不 再发生变化为止。 反向推理的过程大致是: ( 1 ) 看假设是否在工作存储器中,若在,则假设成立,推理结束; ( 2 ) 找出结论与此假设匹配的规则: ( 3 ) 按冲突消解策略从匹配的规则实例中选择一条规则; ( 4 ) 将选中规则的前提条件作为新的假设,重复上述几步工作,直到假设的真假 性被验证或不存在激活的规则。 2 2 规则引擎的工作原理 一个开放的规则引擎可以“嵌入”在应用程序的任何位置,不同位置的规则引擎 可以使用不同的规则集,用于处理不同的事实对象。此外,对使用引擎的数量没有限 制。 8 东北大学硕士学位论文第二章基于j a v a 的规则引肇 规则引擎的基本机制是:对提交给引擎的事实对象进行检索,根据这些对象的当 前属性值和他们之问的关系,从加载到引擎的规则集中发现符合条件的规则,创建这 些规则的执行实例。这些实例将在引擎接到执行指令时、依照某种优先级依次执行。 规则引擎内部由下面几个部分组成:工作存储器,用于存放被引擎引用的事实对 象集合;规则执行队列,用于存放被激活的规则执行实例;静态规则区,用于存放所 有被加载的业务规则,这些规则将按照某种数据结构进行组织。当工作区中的事实发 生改变后,引擎需要迅速根据工作区中的对象现状,调整规则执行队列中的规则执行 实例 2 2 1 。规则引擎的结构示意图如图2 2 所示。 图2 2 规则引擎结构 f i g2 2s t r u c t u r eo f r u l ee n g i n e 当引擎执行时,会根据规则执行队列中的优先顺序逐条执行规则执行实例,由于 规则的执行部分可能会改变工作区的事实对象,从而会使队列中的某些规则执行实例 因为条件的改变而失效,必须从队列中撤销;也可能激活原来不满足条件的规则,生 产新的规则执行实例进入队列。于是就产生了一种“动态”的规则执行链,形成规则 的推理机制。这种规则的“链式”反应完全是由工作区中的事实驱动的。 任何一个规则引擎都需要很好地解决规则的推理机制和规则条件匹配的效率问 题。规则条件匹配的效率决定了引擎的性能,引擎需要迅速测试工作区中的数据对 象,从加载的规则集中发现符合条件的规则,生成规贝执行实例。 东北大学硕士学位论文第二章基于j a v a 的规则;f 擎 2 3j s r 9 4 规范( j a v a 规则引擎a p i 规范) 2 3 1j a v a 规则引擎规范的制定 j a v a 规则引擎a p i ( j s r - 9 4 :j a v ar u l ee n g i n ea p i ) 是由j c p ( j a v ac o m m u n i t y p r o c e s s ) 组织指定的一组规范,用于实现客户程序与规则引擎的交互。j s r 9 4 ( j a v a 规则引擎) 规范定义了独立于厂商的标准a p i ,开发人员可以通过这个标准a p i 使用 j a v a 规则引擎规范的不同产品实现。这个规范并没有强制统一规则定义的语法,因 此,当需要将应用移植到其他的j a v a 规则引擎实现时,可能需要变换规则定义。此接 口集包括了规则的载入、执行以及管理等功能,由b e a 、i b m 等厂商推动支持,同时 也有大量的开源实现。j a v a 规则引擎将业务决策从应用程序代码中分离出来,并使用 预定义的语义模块编写业务决策。j a v a 规则引擎接受数据输入,解释业务规则,并根 据规则作出业务决策。 j a v a 规则引擎a p i 由j a v a x r u l e s 包定义,是访问规则引擎的标准企业级a p i 。j a v a 规则引擎a p i 允许客户程序使用统一的方式和不同厂商的规则引擎产品交互,就像使 用j d b c 编写独立于厂商访问不同的数据库产品一样。j a v a 规则引擎a p i 包括创建和 管理规则集合,在规则集中添加、删除和修改对象,以及初始化,重置和执行规则引 擎。j s r - 9 4 只是一组规范,各个规则引擎厂商可以在规范的基础上实现具体的规则引 擎,从而保证不同厂商产品的兼容性和可移植性。 2 3 2j a v a 规则引擎a p i 体系结构 j a v a 规则引擎a p i 把和规则引擎的交互分为两类:管理活动和运行时活动。管理 活动包括实例化规则引擎和装载规则。而运行时活动包括操作全局数据库和执行规 则。在j 2 s e 环境中使用j a v a 规则引擎,需要在代码中执行以上所有活动。而在j 2 e e 环境中,j a v a 规则引擎的管理活动是应用服务器的一部分。j s r - 9 4 参考实现包括了一 个j c a 连接器,用于通过j n d i 获得一个r u l e s e r v i c e p r o v i d e r 。 j a v a 规则引擎a p l 分为两个部分:运行时客户a p i ( t h er u n t i m ec l i e n ta p i ) 和规 则管理a p i ( t h er u l e sa d m i n i s t r a t i o na p i ) 忉。 ( 1 ) 规则管理a _ p i 规则管理a p i 在j a v a x r u l e s a d m i n 中定义,包括装载规则以及与规则对应的动作 ( 执行集e x e c u t i o ns e t s ) 以及实例化规则引擎。规则可以从外部资源中装载,比如说 u r i 、i n p u t s t r e a m s ,x m l ,s t r e a m s 和r e a d e r s 等等。同时管理a p i 提供了注册和取消注 册执行集以及对执行集进行维护的机制。使用a d m i n 包定义规则有助于对客户访问运 1 0 东北大学硕士学位论文第二章基于j a v a 的规则引擎 行规则进行控制管理,它通过在执行集上定义许可权使得未经授权的用户无法访问受 控规则。 管理a p i 使用类r u l e s e r v i c e p r o v i d e r 来获得规则管理( r u l e a d m i n i s t r a t o r ) 接口的 实例。规则管理接口提供方法注册和取消注册执行集。规则管理器 ( r u l e a d m i r t i s t r a t o r ) 提供了本地和远程的r u l e e x e c u t i o i n s e t p r o v i d e r 。在前面已提及, r u l e e x e c u t i o i n s e t p r o v i d e r 负责创建规则执行集。规则执行集可以从如x m ls t r e a m s , i n p u t s t r e a m s 等数据源中创建。这些数据源及其内容经汇集和序列化后传送到远程的运 行规则引擎的服务器上。大多数应用程序中,远程规则引擎或远程规则数据源的情况 并不多见。为了避免这些情况中的网络开销,a p i 规定了可以从运行在同一m 中规 则库中读取数据的本地r u l e e x e c u f i o n s e t p r o v i d e r 。 规则执行集接口除了拥有能够获得有关规则执行集的方法,还有能够检索在规则 执行集中定义的所有规则对象。这使得客户能够知道规则集中的规则对象并且按照自 己需要来使用他们。 ( 2 ) 运行时a p i 运行时a p i 定义在j a v a x r u l e s 包中,为规则引擎用户运行规则获得结果提供了类 和方法。运行时客户只能访问那些使用规则管理a p i 注册过的规则,运行时a p i 帮助 用户获得规则对话并且在这个对话中执行规则。 运行时a p i 提供了对厂商规则引擎a p i 实现的类似于j d b c 的访问方法。规则引 擎厂商通过类r u l e s e r v i c e p r o v i d e r ( 类r u l e s e r v i c e p r o v i d e r 提供了对具体规则引擎实现 的运行时和管理a p i 的访问) 将其规则引擎实现提供给客户,并获得 r u l e s e r v i e e p r o v i d e r 唯一标识规则引擎的u r l 。 u r l 推荐标准用法是使用类似“m y r u l e s e n g i n e r u l e s r u l e s e r v i e e p r o v i d e r ”这样的 i n t e r n e t 域名空间,这将有助于访问u r l 的唯一性。类r u l e s e r v i e e p r o v i d e r 内部实现了 规则管理和运行时访问所需的接口。所有的r u l e s e r v i c e p r o v i d e r 要想被客户所访问都登 须用r u l e s e r v i c e p r o v i d e r m a n a g e r 进行注册。注册方式类似于j d b ca p i 的d r i v e r 和 d r i v e r m a n a g e r 。 运行时接口是运行时a p i 的关键部分。运行时接口提供了用于创建规则会话 ( r u l e e x e c u t i o n s e t s ) 。规则会话接口定义了客户使用的会话类型,客户根据自己运行 规则的方式可以选择使用有状态会话或者无状态会话。 无状态会话的工作方式就象一个无状态会话b e a n 。客户可以发送单个输入对象或 一列对象来获得输出对象。当客户需要一个与规则引擎间的专用会话时,有状态会话 东北大擘硕士学位论文 第二章基于j a v a 的规则引擎 就非常有用。输入的对象通过a d d o b j e c t o 方法可以加入到会话当中。同一个会话当中 可以加入多个对象。对话中已有对象可以通过使用u p d a t e o b j e c t 0 方法得到更新。只要 客户与规则引擎问的会话依然存在,会话中的对象就不会丢失。 r u l e e x e c u t i o n s e t m e t a d a t a 接口提供给客户让其查找规则执行集的元数据( m e t , a - d a t a ) 。元数据通过规则会话接口( r u l e s e s s i o ni n t e r f a c e ) 提供给客户。 具体的应用代码如下所示: 获得服务提供器 r u l e s e r v i e e p r o v i d e rs e r v i c e p r o v i d e r = r u l e s e r v i c e p r o v i d e r m a n a g e r g e t r u l e s e r v i c e p r o v i d e r ( r u l e _ s e r v i c e _ p r o v i d e r ) ; 获得规则管理器 r u l e a d m i n i s t r a t o rr u l e a d m i n i s t r a t o r = s e r v i c e p r o v i d e r g e t r u l e a d m i n i s t r a t o r 0 ; 获得规则执行集( 一个可以执行的规则序列) r u l e e x e c u t i o n s e tr e s l = r u l e a d m i n i s t r a t o r g e t l o c a l r u l e e x e c u t i o n s e t p r o v i d e r ( n u l l ) c r e a t e r u l e e x e c u t i o n s e t ( i n s t r e a m ,n u l l ) ; 注册规则执行集 r u l e a d m i n i s t r a t o r r e g i s t e r r u l e e x e c u t i o n s e t ( r e s l g e t n a m e 0 ,r e s l ,n u l l ) ; 获得规则运行时( 执行规则的环境) r u l e r u n t i m er u l e r u n t i m e = s e r v i c e p r o v i d e r g e t r u l e r u n t i m e 0 ; i i i 建无状态规则会话 s t a t e l e s s r u l e s e s s i o ns t a t e l e s s r u l e s e s s i o n = ( s t a t e l e s s r u l e s e s s i o n ) r u l e r u n t i m e c r e a t e r u l e s e s s i o n ( r e s l g e t n a m e 0 ,n e wh a s h m a p 0 , r u l e r u n t i m e s t a t e l e s s s e s s i o n _ t y p e ) ; 执行规则,传入参数和输出结果都是l i s t l i s ti n p u t = n e w a r r a y l i s t o ; l i s tr e s u l t s = s t a t e l e s s r u l e s e s s i o n e x ? c u t e r u l e s ( i n p u t ) ; 2 3 3 j a v a 规则引擎a p i 安全机制 规则引擎a p i 将管理a p i 和运行时a p i 加以分开,从而为这些包提供了较好粒度 的安全机制。规则引擎a p i 并没有提供明显的安全机制,它可以和j 2 e e 规范中定义的 标准安全a p i 联合使用。安全可以由以下机制提供,如j a v aa u t h e n t i c a t i o na n d a u t h o r i z a t i o ns e r v i c e ( j a a s ) ,t h ej a v ac r y p t o g r a p h ye x t e n s i o n ( j c e ) ,j a v as e c u 托s o c k e t 1 2 东北大学硕士学位论文 第二章基于j a v a 的规则引擎 e x t e n s i o n ( j s s e ) ,或者其它定制的安全a p i 。j a a s 能被用来定义规则执行集的许可权 限,从而只有授权用户才能访问。 规则引擎a p i 定义了j a v a x r u l e s r u l e e x c e p t i o n 作为规则引擎异常层次的根类。所 有其它异常都继承于这个根类。规则引擎中定义的异常都是受控制的异常( c h e c k e d e x c e p t i o n ) ,所以捕获异常的任务就交给了规则引擎。规则引擎a p i 没有提供明确的 日志机制,但是它建议将j a v a l o g g i n g a p i 用于规则引擎a p i 。 1 3 东北大学硕士学位论文第三章r e t e 模式匹配算法 第三章r e t e 模式匹配算法 3 1 模式匹配的基本概念 规则引擎的执行效率一直是系统设计人员关心的焦点。观察发现,在一些基于规 则的专家系统中,9 0 的时间花费在模式匹配的操作上。因此,研究高效实用的模式 匹配算法,对提高规则引擎的效率有着重要的意义。 定义可满足规则:一个规则称

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论