(计算机应用技术专业论文)基于规则引擎理论的数据报警的实现.pdf_第1页
(计算机应用技术专业论文)基于规则引擎理论的数据报警的实现.pdf_第2页
(计算机应用技术专业论文)基于规则引擎理论的数据报警的实现.pdf_第3页
(计算机应用技术专业论文)基于规则引擎理论的数据报警的实现.pdf_第4页
(计算机应用技术专业论文)基于规则引擎理论的数据报警的实现.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(计算机应用技术专业论文)基于规则引擎理论的数据报警的实现.pdf.pdf 免费下载

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

文档简介

东北大学硕士学位论文摘要 基于规则引擎理论的数据报警的实现 摘要 信息产业的发展极大地推动了社会的进步,市场经济也随之迅速发展。在工作、生 活快节奏的今天,变化充斥了整个社会。但是变化的共性就是规则在变,只要能及时地 适应规则、准确地做出决策那么就能够在商业等领域领先一步。这时,规则引擎技术再 一次被人们提起并将在信息系统中发挥它不可比拟的优势作用。规则引擎技术将业务逻 辑与系统实现分离开来,使业务改变能够不影响系统的正常应用,并且能实时地将变化 的业务规则应用在业务处理中。 本论文是结合电力行业具体解决方案的研发而完成的。解决方案要求实现自动化综 合监控系统,实时监控现有其它服务程序和系统资源的运行状态,并根据预先设定好的 规则触发相应动作。系统运行时要面对大量数据的接收以及复杂报警规则的设定和执 行,所以必须开发一个独立的报警规则弓l 擎框架应用,以满足规则的变化和系统对变化 适应速度的要求。论文中根据项目需要在开放j a v a 规则引擎d r o o l s 的基础上设计、开 发了报警规则引擎框架,实现了数据报警。报警规则引擎框架是整个项目的核心,主要 负责接收数据,计算规则,执行报警动作等任务。 在本论文中,首先深入研究了规则引擎的发展、实现原理、算法等相关问题;然后 详细分析了目前对规则引擎标准化影响最大的j s r - 9 4 规范;接下来根据实际需求、借 鉴现有技术设计了报警规则引擎框架,并在解决一些技术难点之后予以实现:最后,将 此框架成功地应用于四川i 电力调度自动化综合监控系统中。 关键词:规则;规则引擎:分离:j s r - 9 4 规范;数据报警 东北大学硕士学位论文 a b s t r a c t i m p l e m e n t a t i o no f d a t aa l a r m i n gb a s e do n r u l ee n g i n et h e o r y a bs t r a c t t h ed e v e l o p m e n to fi n f o r m a t i o ni n d u s t r yg r e a t l yp r o m o t e dt h ep r o g r e s so fs o c i e t y a t t h es s 2 n et i m e ,t h em a r k e te c o n o m yi sa l s od e v e l o p e d w i t ht h ef a s tp a c eo ft h el i f et o d a y , c h a n g e sp r e v a i lt h es o c i e t y b u tt h ec o u n n o n n e s so f c h a n g e si st h ec h a n g e so f m l e s i f w ec a n a d a p tt h ec h a n g i n gr u l e st i m e l ya n dm a k ed e c i s i o n sc o r r e c t l yt h e nw ec a nk e 印a h e a di nt h e f i e l do f c o m m e r c i a l s a tt h i sm o m e n t ,r u l ee n g i n et e c h n o l o g ya r o u s e sp e o p l e sa t t e n t i o na g a i n a n dw i l lp l a ya ni n c o m p a r a b l er o l ei nt h ei n f o r m a t i o ns y s t e m t h i st e c h n o l o g ys e p a r a t e st h e b u s i n e s sl o g i c a lf r o ms y s t e mi m p l e m e n t a t i o n t h r o u g ht h i ss e p a r a t i o nt h ec h a n g e so f b u s i n e s s w i l ln o ta f f e c tt h en o r m a lu s eo ft h es y s t e m ,a n dm o r e o v e r ,i tc a l l a p p l yt h ec h a n g e so f b u s i n e s sr u l e si n t ot h eb u s i n e s sd i s p o s a l t h et h e s i si sc o m p l e t e da c c o r d i n gt ot h ed e v e l o p m e n to fac o n c r e t ee l e c t r i cp o w e r s o l u t i o n t h es o l u t i o nr e q u i r e si m p l e m e n t i n ga na u t o m a t i cs y n t h e s i sm o n i t o rs y s t e mw h i c h m o n i t o r st h eo t h e rs e r v i c ep r o c e d u r e sa n dt h er u n - t i m es t a t eo f t h es y s t e mr e s o u r c e s ,a n dt h e n f i r e st h ec o r r e s p o n d i n ga c t i o n sd u et ot h ep r e - e s t a b l i s h e dr u l e s t h es y s t e mh a st od e a lw i m t h er e c e i v i n go f l o t so f d a t aa n dc o m p l e xa l a r m i n gr u l e sw h e ni t sr u n n i n g t h e r e f o r e ,i tn e e d s t od e v e l o pa ni n d e p e n d e n ta l a r m i n gr u l e se n g i n ef r a m e w o r ka p p l i c a t i o nt om e e tt h ec h a n g e s o f t h er u l e sa n dt h er e q u e s to f t h es y s t e mi no r d e rt oa d a p tt h ec h a n g e s r a p i d l y i nt h i st h e s i s , o nt h eb a s i so f d r o o l s ,a l lo p e n i n gj a v ar u l ee n g i n e ,a n da c c o r d i n gt ot h en e e d so f t h ep r o j e c ti d e s i g n e da n dd e v e l o p e da na l a r m i n gm l e se n g i n ef r a m e w o r kt oi m p l e m e n tt h ed a t aa l a r m i n g t h ef r a m e w o r ki st h ec o r eo ft h ep r o j e c t ,i tc h a r g e sf o rr e c e i v i n gd a t a ,v a l u i n gt h e m ,a n d e x e c u t i n ga l a r m i n ga c t i o n s i nt h i st h e s i s ,if i r s tr e s e a r c h e dt h ed e v e l o p m e n to ft h er u l ee n g i n e ,t h et h e o r yo fi t s i m p l e m e n t a t i o n , a n di t sa l g o r i t h me t c s e c o n d ,ia n a l y z e di nd e t a i lt h ej s r - 9 4s p e c i f i c a t i o n w h i c hp l a y sa ni m p o r t a n tr o l ei nt h er u l ee n g i n es t a n d a r d i z a t i o n t h i r d ,a c c o r d i n gt ot h e p r a c t i c a ln e e d sa n db yd i mo ft h ee x i s t e n tt e c h n o l o g y , id e s i g n e dt h i sk i n do fa l a r m i n gr u l e e n g i n ef r a m e w o r ka n di m p l e m e n t e di ta f t e rc o n q u e r i n gs o m et e c h n o l o g i c a ld i f f i c u l t i e s a t l a s t ,is u c c e s s f u l l ya p p l i e dt h ef r a m e w o r kt os i c h u a ne l e c t r i cp o w e rd i s p a t c ha u t o m a t i c s y n t h e s i sm o n i t o rs y s t e m k e y w o r d s :r u l e ;r u l ee n g i n e ;s e p a r a t i o n ;j s r - 9 4s p e c i f i c a t i o n ;d a t aa l a r m i n g 独创性声明 本人声明所呈交的学位论文是在导师的指导下完成的。论文中取得的 研究成果除加以标注和致谢的地方外,不包含其他人已经发表或撰写过的 研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示诚挚 的谢意。 学位敝储签名:硼嘏 日期:删f 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。 ( 如作者和导师同意网上交流,请在下方签名:否则视为不同意) 学位论文作者签名: 签字日期: 导师签名: 签字日期: 东北大学硕士学位论文 第一章引言 第一章引言 1 1 业务规则和规则引擎的产生 自上个世纪4 0 年代中期计算机问世以来,在全世界范围内兴起的信息技术革命对人 类社会产生了空前的影响,信息产业应运而生,人类迈向信息社会。从此以后,以计算 机为工具,迎来了信息科学的发展和信息系统的发展。 随着社会的进步和市场经济的迅速发展,商业世界充满了变化,市场在变,客户需 求在变,公司产品在变,工艺流程在变,领导决策在变,唯一不变的就是变化。但是, 纷繁复杂的变化背后,却可以发现一个共性的东西,那就是:主要是规则在变。在这样 的社会环境中,企业信息化、自动化的深入进一步推动了信息系统的发展,也提出了更 高的要求。一个新的问题摆在了人们的面前:开发出来的信息系统怎样在较长的时间内 满足企业、市场和社会的瞬息万变呢 1 ? 业务规则系统是完成业务逻辑快速变换的理想方案,它将业务逻辑本身和实现分离 开来,业务逻辑以业务规则的形式表述,系统执行业务规则以完成企业的业务流程,使 得业务逻辑的变化不会影响到应用系统本身。它提升了管理软件的集成性和技术无关 性,提升了i t 系统的寿命,使得商业应用能够迅速适应新的客户需求,赢得商机。 业务规则是一组准确凝练的语句,用于描述、约束及控制企业的结构、运作和战略。 它们体现了一个公司拥有的全部业务知识,涵盖了智力资本的全部内容,既包括从策略、 程序手册、客户合同、供应商协议中系统捕获的信息,也包括公司员工日常使用的专业 知识和专门技能。作为一种新技术,业务规则在二十世纪八十年代刚诞生时,一度备受 人们欢迎,但由于未能达到最初的预期目标而迅速跌落谷底。之所以造成这种昙花一现 的局面,是因为最初的业务规则以传统方式嵌入应用程序代码中,紧密嵌入数据库结构 中并以d b m s 触发器和存储过程的形式进行编码。由于缺少管理业务规则的规范方法 和标准的业务规则语言,非技术人员无法对业务规则进行创建、修改和管理。不难想象, 要在企业内部各业务职能和系统问迅速而统一地实施新产品、策略和程序,势必困难重 重。不过,如今的业务规则己具有明确的定义、规范的表达和系统的管理,因此成为i t 部门和业务用户的强大工具。它们不再以代码形式嵌入计算机系统中,非编程人员也可 对其进行访问。现代的业务规则采用易读、易懂的语言表达,即使非技术人员也能掌握 并灵活运用这种语言管理业务。这种清晰、准确的表达方式大大提高了企业内部的交流 效率和决策速度e “。 业务规则和规则管理中的核心技术是业务规则引擎技术。从字面亦可理解,业务规 一1 东北大学硕士学位论文 第一章引言 则引擎其实就是规则的触发器。依靠业务规则引擎,调用相应的应用程序对业务规则队 列和队列中的数据和对象做出相应的处理。也可以说规则引擎是一组软件组件,主要是 一系列能使业务分析员和开发者基于机构数据作出决策逻辑的工具,其设计目的是为了 迅速高效地处理规则,并通过执行复杂的算法为评估和执行规则优化计算资源的使用。 1 2 规则引擎概述 专家系统是人工智能的一个分支,一种智能的计算程序,它模仿人类的推理方式, 使用试探性的方法进行推理,并使用人类能理解的术语解释证明它的推理结论。也就是 说专家系统是一种模拟专家决策能力的计算机系统,以逻辑推理为手段,以知识为中心 解决问题。专家系统有很多分类:神经网络、基于案例推理和基于规则系统等。1 。 规则引擎是基于规则的专家系统的一部分,由推理引擎发展而来,是一种嵌入在应 用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义 模块编写业务决策。规则引擎的主要工作是接受数据输入,解释业务规则,并根据规则 做出业务决策。 规则条件匹配的效率决定了引擎的性能,引擎需要迅速测试工作区中的数据对象, 从加载的规则集中发现符合条件的规则,生成规则执行实例。1 9 7 9 年美国卡耐基梅隆 大学的c h a r l e sf o r g y 发明t r e t e 算法 4 ,很好地解决了这方面的问题。目前世界顶尖的 商用业务规则引擎产品基本上都使用r e t e 算法。 引入规则引擎后,不仅能提高企业管理效率,迅速适应业务规则的变化,而且无论 是更改规则还是对系统进行必要的维护,都不必像过去那样一一呈报i t 部门。其最终 结果是大大降低了维护成本,并减少了满足新业务要求所需的过渡时间。 随着技术的发展和市场的需求,目前市场上已经出现了一些商业的规则引擎,例如 a d v i s o r ,j e s s ,j r u l e s 等,还有一些开源软件也做得非常成功,例女h j l i s a ,d r o o l s , m a n d a r a x 等 5 。对比而言,规则引擎在国内专业产品很少,据不完全了解,只有杭州 旗正信息技术有限公司等少数i t 开发商推出了自行研发的产品。杭州旗正信息技术有限 公司开发的“商业规则定制平台”是一个辅助软件开发工具,可以嵌入到现有的软件 项目中,方便其进行业务逻辑的快速开发和维护。 1 3e p 开发框架概述 e p 开发框架是东软股份电力事业部r & d 部门自主研发的b s 架构多层应用开发平 台,符合j 2 e e 规范。主要由e p 组件( e pc o m p o n e n t ) 开发模式,e pw e bd a t a s t o r e 框架, e p 工作流( w o r k f l o w ) 开发平台,面向对象的持久化数据层( o p ) 等组成。 2 东北大学硕士学位论文 第一章引言 如图1 1 所示,e p 开发框架按逻辑划分为五个层次。e p 开发框架应用是b s 架构 应用,客户端只需要i e 浏览器,服务器端的界面表现层响应客户端浏览器的h t t p 请 求,调用b o 业务逻辑,然后调用j s p 生成动态页面,对应e p 组件的开发模式。b o 是 业务逻辑对象,可选择采用j a v ab e a n 或e j b 实现,r o w s e t 定义属于这个层次。o p 层 是数据持久化层,提供p e n i t e n c e 接口为上层的b o 提供数据持久化支持,d o 定义属 于这个层次。数据库层是数据存储层嘲。 1 1e p 开发框架架构 f i g 1 1a r c h i t e c t u r eo f e pd e v e l o p i n gf r a m e w o r k e p 开发框架集成了a p a c h es t r u t s ,扩展了a c f i o n s e r v l c t ,完全符合m v c 模式在 w e b 应用中的实现。e p 开发框架中的数据格式都基于x m l ,充分利用x m l 的技术先 进性。在b s 应用架构中实现了跨越服务器和客户端之间多个层次的仿p b 的 d a t a s t o r e d a t a w i n d o w 机制。解决了w e b 应用的多个层次间不能保持数据状态改变给编 程实现带来的难度,使得w e b 应用编程更容易,开发人员能很容易理解编程的实现机 制,同时使有p b 开发经验的程序员感到亲切嘲。 实用性是应用系统的首要技术要求,e p 开发框架的设计也以实用性为首要原则, 在开发框架中,实用性主要体现在模型设计的合理、支持库的完善、辅助工具的配套几 个方面,e p 开发框架中,数据定义的设计、各个层面的应用模型设计、与模型相符合 一3 一 东北大擎硕士学位论文第一章;l 言 的类库,都是以实用性作为出发点来考虑的。此外,基于j 2 e e 本身是个开放的体系, e p 开发框架在设计中考虑了应用系统的开放性要求,在应用系统各个层面的接口方面 注意保持规范化,并保留充分的灵活性,以利于应用系统的扩展和与其他应用的集成。 1 。4 论文主要内容及组织结构 e p 开发框架选择了先进的技术路线,设计、实现过程中体现了很多优越性能,在 行业应用系统开发的各方面中也都发挥了积极作用,但是终究因为没有将业务逻辑从具 体的系统实现中分离出来而使其在对某些规则变化频繁的应用系统进行开发时暴露了 局限性。随着业务规则的变化,应用系统的维护问题总是没完没了地烦扰着程序开发人 员,这样不仅影响系统的正常运行,同时也给解决方案提供商带来了额外的开发成本。 所以,为了商业应用能够迅速适应新的客户需求,赢得商机、降低成本,对于那些业务 规则多且变化频繁的商业应用,开发一个能够将系统实现和业务逻辑二者分离开来的应 用系统开发框架是非常必要的,并且,根据目前日益成熟的规则引擎技术,这条路线也 是可行的。 本论文主要结合基于规则引擎理论的报警规则引擎框架的开发论述以下内容: ( 1 ) 规则引擎的概念、理论及算法的研究和现有规则引擎产品的分析、研究: ( 2 ) 深入掌握j a v a 规则引擎a _ p i ( j s r _ 9 4 ) 的体系结构、r e t e 算法及实现思路; ( 3 ) 研究实现了j s r _ 9 4 规范的开源项d r o o l s 的具体架构、运行原理和相关技术, 发现其相对于具体项目需求的长处和不足; ( 4 ) 借鉴研究成果,结合行业解决方案的实际需求,研发报警规则引擎框架,实现 数据报警: ( 5 ) 成功地将报警规则引擎框架应用在实际项目中。 在论文第一章中简单论述规则引擎及现有e p 开发框架,引入课题;在第二章中详细 阐述了规则引擎的实现原理、应用、j s r 9 4 规范和开源项目d r o o l s ;在第三章中结合电 力行业解决方案的需求总体设计了报警规则引擎框架;详细设计及其实现在第四章完 成;在第五章介绍了报警规则引擎框架在实际项目中的应用;第六章对整篇论文进行总 结和展望。 4 东北大学硕士学往论文第一章引言 的类库,都是阻实用性作为出发点来考虑的。此外,基于j 2 e e 本身是个开放的体系, e p 开发框架在设计中考虑了应用系统的开放性要求,在应用系统各个层面的接口方面 注意保持规范化,并保留充分的灵活性,以利于应用系统的扩展和与其他应用的集成。 1 4 论文主要内容及组织结构 e p 开发框架选择了先进的技术路线,设计、实现过程中体现了很多优越性能,在 行业应用系统开发的各方面中也都发挥,积极作用,但是终究因为没有将业务逻辑从具 体的系统实现中分离小来而使其在对某些规则变化频繁的应用系统进行开发时暴露了 局限性。随着业务规则的变化,应用系统的维护问题总是没完没了地烦扰着程序开发人 员,这样不仅影响系统的正常运行,同时也给解决方案提供商带来了额外的开发成本。 所以,为了商业应用能够迅速适应新的客户需求,赢得商机、降低成本,对于那些业务 规则多且变化频繁的商业应用,开发个能够将系统实现和业务逻辑二者分离开来的应 用系统= ”= 发框架是非常必要的,并且,根据目前日益成熟的规则引擎技术,这条路线也 是可行的。 本论文主要结合基于规则引擎理论的报警规则引擎框架的开发论述以下内容: ( i ) 规则引擎的概念、理论及算法的研究和现有规则引擎产品的分析、研究; ( 2 ) 深入掌握j a v a 规则引擎a p i ( j s r - 9 4 ) i 拘体系结构、r e t e 算法及实现思路; 【3 ) 研究实现了j s r - 9 4 规范的开源项f f d r o o l s 的具体架构、运行原理和相关技术, 发现其相对于具体项目需求的长处和不足i ( 4 ) 借鉴研究成果,结合行业解决方案的实际需求,研发撤警规则日【擎框架,实现 数据报警; ( 5 ) 成功地将报警规则引擎框架应用在实际项目中。 在论文第一章中简单论述规则引擎及现有e p 开发框架,引入课题;在第二章中详细 阐述了规则引擎的实现原理、应用、j s r - 9 4 规范和升源项目d r o o l s ;在第三章中结合电 力行业解决方案的需求总体设计了报警规则引擎框架;详细设计及其实现在第四章完 成;在第五章介绍了报警规则引擎框架在实际项目中的应用:第六章对整篇论文进行总 成;在第五章介绍了报警规则引擎框架在实际项目中的应用:第六章对整篇论文进行总 结和展望。 4 东北大学硕士学位论文第二章规则引擎综述 第二章规则引擎综述 2 1 规则引擎的应用 2 。1 ,1 规则引擎 业务规则专家组( b r g ) 规定了业务规则的两个定义。第一个定义与业务观点相关, 而第二个定义与i t 相关啪: ( 1 ) 从业务的角度看,业务规则是一种原则,包含在特定活动或范围内关于指导、 操作、实践或过程的行为规范。 ( 2 ) 从信息系统的角度看,业务规则是一个定义或限制业务某些方面的声明。业务 规则旨在用于断言业务结构,或者控制或影响业务行为。 规则引擎的根本思路就是要具体化业务或应用逻辑。可以将规则引擎看作是一个精 密复杂的i f - t h e n 语句解释器。这些i f - t h e n 语句就是规则。一条规则由两部分组成,一 个条件和一个动作:当条件满足动作就执行。i f 部分包含条件( 例如a m o u n t = $ 1 0 0 ) , t h e n 部分包含动作( 例如提供5 的折扣) 。输入规则引擎的是一系列规则( 称为规则执行 集) 和数据对象。输出由输入决定,可能包括经过改变的原始输入数据对象、新数据对 象和可能的连带作用( 例如给消费者发送e m a i l ) 。规则引擎应该用在业务逻辑高度动态变 化的应用和允许用户编写业务规则的应用。规则引擎是一个强大有效的决策产生工具, 因为它能基于成千上万的事实快速、可靠、重复地作出决定。 2 1 2 规则引擎应用的领域、时机和理由 规则引擎在应用中用做取代和管理一些业务逻辑。最好应用在业务逻辑变化迅速在 源代码层次上无法管理的应用中,也就是说,业务逻辑的变化需要在应用中立即反映出 来的情况。在象保险( 例如保险额) 、金融服务( 贷款、索赔程序安捧和管理) 、政府( 应用 程序和税款计算) 、电信客户服务( 提示长途电话需要被综合到票据系统) 、电子商务( 个 性化用户经历) 等这样的领域都从应用规则引擎受益非浅。 基于规则的应用通过将一系列规则付之执行与规则引擎进行通讯。这样,应用就能 查看结果并且可以将其显示给终端用户或者执行进一步处理。规则引擎根据规则必须的 输入和前一条规则的评估结果决定什么时候评估规则。不必人为指定规则的顺序和依赖 关系。例如,在j 2 e e f 立用中,下列情况下适合应用规则【2 : ( 1 ) 在应用层管理动态业务逻辑和任务流; ( 2 ) 在表示层定制页面流和工作流,同时根据会话状态构建用户页面。 东北大学硕士擘住论文 第二章规则引擎综述 为应用采用基于规则的应用有下列好处: ( 1 ) 描述策略的规则易于交流和理解; f 2 ) 规则比传统程序语言保持更高的独立性; ( 3 ) 规则将知识从实现逻辑中分离出来; ( 4 ) 无须改变源代码就能改变规则,因此不必重新编译应用代码。 当然这些利益不是免费的。同使用任何工具一样,将规则引擎集成到你的应用中的 决定应该基于代价与收益的对比。代价包括学习曲线和投入到构建应用和规则引擎间接 口的努力。另外,不同的规则引擎在定义规则时使用不同的格式和语法。因此,如果一 个组织决定从一个规则引擎转向另一个,那么业务分辑员和开发者必须已经学会和理解 了另一个工具的操作。 2 1 3 规则引擎的使用方式 由于规则引擎是软件组件,所以只有开发人员才能够通过程序接口的方式来使用和 控制它,规则引擎的程序接口至少包含以下几种a p :加载和卸载规则集的a p i ;数据操 作的a p l ;引擎执行的a p i 。开发人员在程序中使用规则引擎基本遵循以下5 个典型的步 骤:创建规则引擎对象;向引擎中加载规则集或更换规则集;向引擎提交需要被规则集 处理的数据对象集合:命令引擎执行;导出引擎执行结果,从引擎中撤出处理过的数据。 使用了规则引擎之后,许多涉及业务逻辑的程序代码基本被这五个典型步骤所取代e 8 3 。 2 2 规则弓l 擎的实现原理 2 2 1 基于规则的专家系统( r b e s ) 为了更深入地了解规则引擎,下面简要地介绍一下基于规则的专家系统( r b e s ) 。 r b e s 包括三部分:r u l eb a s e ( 知识库) 、w o r k i n gm e m o r y ( 事实库) 和i n f e r e n c ee n g i n e ( 推理 引擎) 嘲。 图2 ,1 基于规则的专家系统组成 f i g 2 1c o m p o s i n go f r u l e - b a s e de x p e r ts y s t e m 如图2 1 所示,推理引擎包括三部分:p a t t e mm a t c h e r ( 模式匹配) 、a g e n d a q :议程) 和 一6 一 东北大学硕士学位论文第二章规则引擎综述 e x e c u t i o ne n g i n e ( 执行引擎) 。p a r e mm a t c h e r 决定何时执行哪个规则:a g e n d a 管理p a t t e m m a t c h e r 挑选出来的规则的执行次序;e x e c u f i o ne n g i n e 负责执行规则和其他动作。 推理引擎通过决定哪些规则满足事实或目标,并授予规则优先级,满足事实或目标 的规则被加入议程。和人类的思维相对应,推理引擎存在两者推理方式:演绎法 ( 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 ) 。演绎法从一个初始的事实出发, 不断地应用规则得出结论( 或执行指定的动作) 。而归纳法则是从假设出发,不断地寻 找符合假设的事实。 2 2 2 规则引擎的架构及推理 规则引擎的架构如图2 2 所示。 图2 2 业务规则引擎架构 f 培2 2a r c h i t e c t u r eo f r u l ee n g i n e 规则引擎的推理步骤如下: ( 1 ) 将初始数据( f a c t ) 输入至工作内存( w o r k i n gm e m o r y ) 。 ( 2 ) 使用模式匹配( p a 仕c mm a r c h e r ) 将规则库( r u l e sr e p o s i t o r y ) 中的规贝u ( r u l e ) 和数据 ( f a c o 比较。 ( 3 ) 如果执行规则存在冲突( c o n f l i e t ) ,即同时激活了多个规则,将冲突的规则放入 冲突集合。 一1 一 东北大学硕士学位论文第二章规则引擎综述 ( 4 ) 解决冲突,将激活的规则按顺序放入议程( a g e n d a ) 。 ( 5 ) 执行a g e n d a 的规则。重复步骤( 2 ) 至( 5 ) ,直到执行完毕a g e n d a 的所有规则。 当引擎执行时,会根据规则执行队列中的优先顺序逐条执行规则执行实例,由于规 则的执行部分可能会改变工作区的数据对象,从而会使队列中的某些规则执行实例因为 条件改变而失效,必须从队列中撤销,也可能会激活原来不满足条件的规则,生成新的 规则执行实例进入队列。于是就产生了一种“动态”的规则执行链,形成规则的推理机 制。这种规则的“链式”反应完全是由工作区中的数据驱动的。 任何一个规则引擎都需要很好地解决规则的推理机制和规则条件匹配的效率问题。 规则条件匹配的效率决定了引擎的性能,引擎需要迅速测试工作区中的数据对象,从加 载的规则集中发现符合条件的规则,生成规贝执行实例。1 9 7 9 年美国卡耐基梅隆大学 的c h a r l e sl f o r g y 发明了一种n q r e t e 算法,很好地解决了这方面的问题。目前世界顶尖 的商用业务规则引擎产品基本上都使用r e t e 算法。 2 2 3r e t e 算法 2 2 3 1r e t e 算法原理 r e t e 网络是一个有向无环图。最初,数据用能表述对象相关属性的元组来描述的 9 。 例如,元组可以用来表示一个人的名字和他的宠物。 r e t e 网络由两种类型的节点组成: ( 1 ) 1 输入l 输出节点:这种1 1 节点是压缩节点,只允许匹配流经的元组,任何不匹 配的元组都将被节点丢弃。 ( 2 ) 2 输入1 输出节点:这种2 l 节点简单连接来自其他两个节点( 可以是l l 节点也可 以是2 ,1 节点) 的输出,将左右两个输入元组合并成一个输出元组,为将来再次匹配保存 一个元组记忆。 一些1 ,1 节点为任何引入的元组担当了进入整个r e t e 网络入口的角色。这些单纯靠元 组类型来过滤它们。关于狗的元组和关于猫的元组或许有各自不同的类型,可以由1 1 网络入口节点来区分它们。 规则的每个条件仅仅是某一特定元组类型的一个模式( p a t t e r n ) 。条件描述元组必须 具有的属性并同时起到过滤的作用。每个条件都被转化成l l 节点,只允许匹配指定属性 的元组通过。属性值可以被指定为一个变量,意味着在整个过程中这个变量必须保持相 同的值。1 1 过滤节点附属于自1 1 入口节点向下流动的网络,用以区分它们的元组类型。 考虑这样一个条件:“对任何有狗并且他的狗的名字和他妹妹的猫的名字相同的人, 那么”这可以用条件模式表示如下: 8 东北大学硕士学位论文第二章规则引擎综述 ( 1 ) ( p e 日m ( 2 ) ( p e r s o n ( 3 ) ( p e r s o n 条件l 模拟了姐妹关系,所以规则只应用到作为姐妹的两个人。p e r s o n ? 和s i s t e r ? 标 记是变量,必须与任何匹配这条规则的元组一致。 条件2 和条件3 有两个作用。狗和猫的属性共用相m 的p e t n a m e ? 变量,用来识别有相 同名字猫和狗的两个人。这两个条件都包括一个名字属性:变量p e r s o n ? 或s i s t e r ? 它将后 边两个条件与条件( 1 ) 联系起来。下面用元组集范例( 表2 1 ) 说明一下上面的问题 9 。 表2 1 元组集范例 t a b l e2 1e x a m p l e t u p t es e t s 在元组集范例中,如果两个元组集根据以上规则来断言,元组集拌1 将会导致规则的 触发,但是元组集拌2 不会。在这两个实例中,两个元组都能通过条件( 1 ) ,因为这个节点 用两个元组中适当的值将变量p e r s o n ? 和s i s t e r ? 简单地联系在一起。 在下图2 3 中,j o i n ( 1 ) 节点允许两个元组合并,并在第一和第二个实例中传播下去。 另外,这两个元组中,r e b e e c a 元组将通过节点条件( 2 ) ,而j e 黜i e 元组将通过条件( 3 ) 。 图2 3 一个r e t e 网络 f i g 2 3ap e t en e t w o r k j o i l l ( 2 ) 节点是两个实例不同的地方。在第一个实例中,节点条件( 2 ) 和条件( 3 ) 有与变 一9 一 东北大学硕士学位论文第二章规则引擎综述 量p e t n a m e ? 相关联的值“z o o m i e ”。在第二个实例中,这两个节点给变量p e t n a m e ? 赋 予了不同的值。j o i n ( 2 ) 节点只允许那些对所有变量有一致联系的元组通过。 2 2 3 2 r e t e 算法有效性 要明白为什么r e t e 算法是有效的,可以研究一下通常将事实和规则进行匹配的问 题,并接着考察不那么有效的其它算法,这是有帮助的,图2 4 示出了r e t e 算法所提出的 问题。 图2 4 模式匹配规则和事实 f i g 2 4p a t t e mm a t c hr u l e sa n df a c t s 如果匹配过程只需一次,那么这个问题的解决方法就简单易懂。推理机可以检查每 条规则并寻找一套事实来决定规则的模式是否已经满足。如果是,则将此规则记入议程 中。图2 5 示出了这一方法。 图2 5 规则寻找事实 f i g 2 5r u l e ss e a r c hf a c t s 然而,在基于规则的语言中,匹配过程不断重复进行。通常,事实列表在每次执行 中都会被修改,添加新的事实到事实列表或删除旧的事实。这些改变可令先前不满足条 件的模式得到满足,反之亦然。匹配问题因此成了不断进行的过程。在每次循环中,随 着事实的添加和删除,必须对己满足条件的规贝u 集合进行维护和更新。 在每次循环后,令推理机检查每条规则以指导对事实的寻找,从而为解决这个问题 1 0 东北大学硕士学位论文 第二章规则引擎综述 提供了简单直接的技巧。这种方法最主要的缺点是速度太慢。大多数机遇规则的专家系 统都显示了这种特征:时间冗余性( t e m p o r a lr e d u n d a n c y ) 。般地说,一条规则的运行 仅会改变事实列表中的少数事实,即:专家系统中的事实随时间改变得很慢。在每次循 环中,仅添加、删除很少一部分事实,所以,事实列表中的变化一般只影响很少部分的 规则。因此,令规则推动对所需事实的寻找需要大量不必要的计算。这是因为,在当前 循环中,大多数规则所找到的事实很可能与上一次循环所找到的相同。图2 6 示出了这种 低效的方法。 图2 6 当规则寻找事实时,产生不必要的计算 f i g 2 6b r i n gu n n e c e s s a r yc a l c u l a t i o nw h e nr u l e ss e a r c hf a c t s 在图2 6 中,阴影部分代表了对事实列表所做的改变。正如图2 7 所显示的,在不断 循环中,通过记住哪些是已经匹配好的,然后,只计算那些刚添或删除事实所引起的必 要变化,从而,可避免不必要的计算。规则是不变的,而事实是变化的,所以应是事实 寻找相应的规则,而不是反过来。 图2 7 事实寻找规则 f i g 2 7f a c t ss e a r c hr u l e s r e t e 模式匹配算法正是利用了基于规则的专家系统所具有的时间冗余性。它的实现 东北大学硕士学位论文 第二章规则引擎综述 是通过存储不断循环中匹配过程的状态,并且只重新计算在事实列表中发生了变化、又 反映到本次状态中的变化。也就是说,如果在一次执行周期中,一组模式找到三个所需 要的事实中的两个,那么在下一周期中,就无需对已经找到的这两个事实进行检查 只有第三个事实才是需要关注的。仅当添加或删除事实时,匹配过程的状态才会被更新, 如果添加、删除事实的数量与事实和模式的数量相比很小,那么匹配过程会进行得很快。 最糟的情况是,如果所有的事实都改变了,那么所有的事实将与所的模式进行匹配。 如果只是事实列表进行更新,那么每一条规则必须记住已与之匹配的事实。也就是 说,如果一个新的事实与规则的第三个模式相匹配,那么头两个模式的匹配信息必须存 在以完成匹配过程。这种状态信息指出了与某一规则中前面的模式相匹配的事实,称之 为部分匹配( p a r d a zm a t c h ) 。规则的部分匹配是满足规则模式的任何一组事实,它以规则 的第一个模式开始,以任一模式( 包括最后一个模式) 为结束。因此,一条有三个模式的 规则对第一个模式、第一和第二个模式及第一、第二和第三个模式都有部分匹配。一条 规则的所有模式的部分匹配也是一个激活。另一种存储的状态信息称为模式匹配( p a t t e r n m a t c h ) 。当一个事实满足了任一规则中的单个模式而不需考虑在其他模式中可能会限制 匹配过程的变量时,则出现的就是模式匹配。 r e t e 模式匹配算法的主要缺点是内存使用量大,将所有的事实与所有的模式进行简 单的比较不需要使用内存。但是,存储使用了模式匹配和部分匹配的系统的状态会消耗 大量的内存。总的来说,为了速度而牺牲内存是值得的,然而要记住,一条设计不好的 规则不仅运行速度慢,而且会消耗掉大量内存。 通过利用规则中结构相似性( s t r u c t u r a ls i m i l a r i t y ) 的优点,r e t e 算法同样也会提高基 于规则的系统的效率。结构相似性是指许多规则通常包含了相似的模式或模式群。利用 这一特性,r e t e 算法通过将公共部分放在一起来提高效率,因为公共部分不必多次计算。 2 3j a v a 规则引擎a p i o s r 9 4 ) 2 3 1 j s r - 9 4 简介 过去大部分的规则引擎开发并没有规范化,有其自有的a p i ,这使得其与外部程序 交互集成不够灵活。转而使用另外一种产品时往往意味需要重写应用程序逻辑和a p i 调 用,代价较大。规则引擎工业中标准的缺乏成为令人关注的重要方面。2 0 0 3 年1 1 月定稿 并于2 0 0 4 年8 月最终发布的j a v a 规则引擎a p i ( j s r - 9 4 ) 规范使得j a v a 规则引擎的实现得以 标准化吲。 规范定义了规则引擎的j a v a a p i ,这些a p i 规定了一系列基本的规则引擎操作。这些 操作基于一个这样的假设:大部分客户需要能够执行一个基本的包括解析规则、向引擎 一1 2 东北大学硕士学位论文第二章规则引擎综述 中添加对象、触发规则和从引擎得到结果对象的多步规则引擎循环。j a v a 规则引擎a p i 允许客户程序使用统一的方式和不同厂商的规则引擎产品交互,就像使用j d b c 编写独 立于厂商访问不同的数据库产品一样。j a v a 规则引擎a p i 包括创建和管理规则集合的机 制,在工作内存( w o r k i n gm e m o r y ) q b 添加,删除和修改对象的机制,以及初始化,重置 和执行规则引擎的机制。 2 3 2j s r - 9 4 架构 规范在包j a v a x r u l e s 和甸a v a x r u l e s a d m i n 中定义了j a v a 规则引擎a p 的两部分接口 和类:运行时客户a p i ( r u n t i m ec l i e n ta p i ) 和规则管理a p i ( r u l e sa d m i n i s t r a t i o na p i ) ,提 供了注册和注销规则、解析规则、检查规则元数据、执行规则、得到结果、过滤结果等 可操作a p i m 。 2 3 2 1 规则管理a p i 规则管理a p i 在j a v a x r u l e s a d m i n 包中定义,提供了从外部资源f 例如u r i 、 i n p u t s t r e a m 、x m le l e m e n t 、二进制抽象语法树或者r e a d e r 等) 装载规则执行集的方法。 规则执行集是规则的集合。同时管理a p i 提供了注册和取消注册执行集以

温馨提示

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

评论

0/150

提交评论