




已阅读5页,还剩68页未读, 继续免费阅读
(计算机软件与理论专业论文)规则引擎在新型农村合作医疗系统中的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
规则引擎在新型农村合作医疗系统中的应用研究 规则引擎在新型农村合作医疗系统中的应用研究 摘要 随着计算机技术的发展和用户对软件功能要求的提高,软件规模 呈现出越来越大的趋势,迫切需要把应用系统中的业务规则逻辑从应 用逻辑中分离出来,以提高软件系统的灵活性和易维护性。因此对基 于规则引擎的软件系统的开发进行研究具有实际的意义。 本文首先对规则引擎技术和当前主流的规则引擎产品进行了简 单的介绍,其中重点介绍了j b o s sr u l e s 规则引擎。并分析了规则引 擎的特点和优势,特别指出了现有规则引擎在业务规则的逻辑制定、 维护和用户友好等方面存在的不足。 然后作者提出了一种基于j b o s sr u l e s 的业务规则逻辑解析模型, 以解决现有的规则引擎产品在具体应用中的不足。该解析模型利用了 j b o s sr u l e s 规则引擎技术具有面向对象这一特性,把规则文件抽象为 相互依赖的对象关系集,并利用关系数据库作为解析模型和规则文件 的桥梁。 本文最后设计并实现了新型农村合作医疗系统,介绍了系统的体 系架构,描述了规则引擎在新农合系统中的应用实现,详细介绍了系 统中医疗发票报销规则、解析模型、事实模型等的设计和实现。 关键词:规则引擎,j b o s sr u l e s ,r e t e 算法,业务规则,事实模型 规则引擎在新型农村合作医疗系统中的应用研究 a p p l i c a t i o nr e s e a r c ho fr u l ee n g i n ei nt h e n e wr u r a la r e a sco o p e r a t i v em e d i c a l s y s t e m a b s t r a c t w i t ht h ed e v e l o p m e n to ft h e c o m p u t e rt e c h n o l o g ya n ds t r i c t e r r e q u i r e m e n to fs o f t w a r e ,t h es c a l eo fs o f t w a r ei sb e c o m i n gl a r g e ra n d l a r g e r , i ti su r g e n tt os e p a r a t et h eb u s i n e s sr u l ef r o mb u s i n e s sl o g i cl a y e r i no r d e rt o i m p r o v ef l e x i b i l i t y a n dc o n v e n i e n c ef o rm a i n t a i n i n go f s o f t w a r e i t so fh i g hs i g n i f i c a n c et os t u d ys o f t w a r ea p p l i c a t i o nb a s e do n r u l e e n g i n e f i r s t l y , t h i st h e s i si n t r o d u c e st e c h n o l o g ya n dp o p u l a rp r o d u c t so f r u l ee n g i n e ,a n dt h e nf o c u s e so nj b o s sr u l e s ,p o i n t i n go u ta d v a n t a g e s a n dc h a r a c t e r i s t i c so fr u l ee n g i n e ,a sw e l la ss o m es h o r t c o m i n g so n m a k i n g ,m a i n t a i n i n ga n du s e r - f r i e n d l yo p e r a t i n go f b u s i n e s sr u l e a f t e rt h a tam o d e lo fb u s i n e s sr u l ep a r s e rb a s e do i lj - b o s sr u l e si s p r o p o s e dt os o l v et h ee x i s t i n gp r o b l e m si np r a c t i c a la p p l i c a t i o no fr u l e e n g i n ep r o d u c t s t h i sp a r s e rm o d e lu t i l i z e so b j e c to r i e n t e dc h a r a c t e r i s t i c o fj b o s sr u l e s ,w h i c ht r e a t sr u l ef i l eo fj b o s sr u l e sa si n t e r d e p e n d e n ts e t o fr e l a t i o n sa m o n go b j e c t s ,a n db r i d g e st h eg a pb e t w e e nt h ep a r s e rm o d e l a n dr u l ef i l ew i t hr e l a t i o n a ld a t a b a s e a tl a s t ,w ed e s i g na n dr e a l i z et h ea p p l i c a t i o ni nt h en e wr u r a l a r e a sc o o p e r a t i v em e d i c a ls y s t e m , i n t r o d u c et h ea r c h i t e c t u r eo ft h e s y s t e ma n da p p l i c a t i o no fr u l ee n g i n ei nt h es y s t e ma n dp a r t i c u l a r l y a n a l y z et h ed e s i g na n dr e a l i z a t i o no fa p p l y i n gf o rr e i m b u r s e m e n to f m e d i c a li n v o i c e s ,p a r s e rm o d e la n df a c tm o d e l 规则引擎在新型农村合作医疗系统中的应用研究 ( c o m p u t e rs o f t w a r e & t h e o r y ) s u p e r v i s e db y k e yw o r d s :r u l ee n g i n e ,j b o s sr u l e s ,r e t ea r i t h m e t i c ,b u s i n e s s r u l e ,f a c tm o d e l 规则引擎在新型农村合作医疗系统中的应用研究 东华大学学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学位 论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除 文中已明确注明和引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的作品及成果的内容。论文为本人亲自撰写,我对 所写的内容负责,并完全意识到本声明的法律结果由本人承担。 学位论文作者签名:善铲呶喹 e l 期:z 澎暑年多月7 e t 规则引擎在新型农村合作医疗系统中的应用研究 东华大学学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同 意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允 许论文被查阅或借阅。本人授权东华大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复 制手段保存和汇编本学位论文。 保密口,在年解密后适用本版权书。 本学位论文属于 不保密吐 学位论文作者签名:卸睨山垒 e t 期:工积年乡月7 日 指导教师签名:- 3 - 狰熬 日期:砂猝) 月e e t 规则引擎在新型农村合作医疗系统中的应用研究 1 1 研究背景 第1 章引言 随着计算机应用的日益普及,软件数量和规模都在急剧膨胀,软件中业务逻 辑的复杂度也随着增加。其中业务逻辑中的判断逻辑( 业务规则) 也变得更加复 杂,使得程序员要花很大的精力在这些业务规则的实现上,而不能专心于业务逻 辑。业务规则是大多数应用程序在系统生命周期内经常发生变化的主要因素之 一,它给软件开发和维护带来了很多困难。现代各行各业的信息管理对企业级应 用系统提出了更高的要求:( 1 ) 能满足市场对企业业务规则不断变化的要求,企 业级应用系统可以根据企业业务规则的变化,能用最低成本快速做出反映;( 2 ) 从企业级应用系统的成本考虑,系统中的企业业务规则可以由企业业务人员来直 接管理、修改,而不需要由程序开发人员来管理。基于现代信息管理的此类要求, 在企业级应用系统开发的过程中,要求把复杂的企业业务规则从系统的业务逻辑 中分离出来。从而引出了对业务规则和规则引擎问题的研究,以提高企业级应用 系统的灵活性和适应性。 现在大多数的企业级应用采用了j a v ae e ( j a v ae n t e r p r i s ee d i t i o n ) 【l 】平台来 实现。j a v ae e 平台采用一个多层次分布式的应用模型,其中的应用逻辑根据功 能被划分成组件,简化了开发系统的难度。然而系统中的应用逻辑随着系统规模 的急剧膨胀,变得更加复杂,使得系统很难适应这些变化。规则引擎技术在一定 程度上解决了这个问题,它把业务规则从业务逻辑中分离出来,使得整个系统更 加便于开发和管理,降低了系统的开发难度,提高了系统的灵活性和可维护性。 把规则引擎作为一个组件组合到j a v ae e 平台上,更加细化了平台上的功能,提 高了整个系统的性能,简化了开发。基于j a v a 的规则引擎( 简称j a v a 规则引擎) 是推理引擎的一种,起源于基于规则的专家系统,j a v a 规则引擎将业务决策从应 用程序代码中分离出来,使用预定义的语义模块编写业务决策,解释业务规则, 并根据规则作出业务决策。从这个意义上来说,它是软件方法学在“关注点分离 上的一个重要的进展。 使用规则引擎可以显著降低企业级应用系统中业务规则逻辑组件实现的复 规则引擎在新型农村合作医疗系统中的应用研究 杂性。规则引擎以声明方法表达规则,使应用系统更容易维护和扩展,从而提高 企业级应用系统的灵活性和适应性。j s r - 9 4 规范【2 】的发布允许应用程序使用统 一的方式与不同产商的规则引擎产品交互,一定程度上降低了企业业务规则在不 同的应用系统上进行移植所必需的开销。规则引擎就像是数据库,两者都是企业 资源。如果说数据库管理了整个企业的数据,那么规则引擎管理了企业的业务知 识。这使得系统可以像访问保存在数据库中的企业数据那样来访问规贝t j 弓l 擎中的 业务知识。 本课题的研究是基于“新型农村合作医疗系统 项目进行的,以下简称新农 合系统。该系统从技术手段上解决了合作医疗繁重的费用报销和资金管理问题, 实现合作医疗人员登记、发票报销、结算报销等诸多业务的信息化管理,是国家 政府管理和实施农村合作医疗的有效手段。新农合系统是基于j a v ae e 规范开发 的,系统的一个核心就是医疗发票报销问题,医疗报销规则存在编写复杂、维护 量大以及单一的报销规则不能满足个别地区的需要。用规则引擎来实现新农合系 统中的医疗报销补偿规则,把具体的报销规则从系统业务逻辑上分离出来,不仅 使系统的整个逻辑结构更加清晰,也提高了系统的开发速度和系统的灵活性、可 维护性。在系统中使用规则引擎技术,使得系统能较好地适应不同农村地区的医 疗报销政策,提高了系统的适应性。 1 2 国内外研究现状 规则引擎技术在理论上已经比较成熟了,规则系统的性能也已经达到实用的 阶段,而且国内外陆续开发了不少成熟的规则引擎产品,但是目前无论是商业产 品还是开源产品,国外产品都占据了市场的绝大部分份额。在国外规则已经在银 行、保险、证券等多个关键行业得到广泛应用,而与此同时,国内产品还很少, 行业应用刚刚起步,而且大多依赖国外成熟产品或者自己研发的简单规则系统。 国外商用的规则引擎产品主要以s a n d i a 国家实验室的j e s s e 3 】和i l o g 公司的 y r u l e s 4 , 5 , 6 为代表。j e s s 是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 l l 用j a v a 实现的一个经过扩充的c l i p s 版本,支持正向 和逆向推理。目前,j e s s 被广泛用于学术、工业、商业等领域,是一个有着广阔 发展前景的专家系统开发平台。全球著名的软件构件开发商i l o g 公司的 2 规则引擎在新型农村合作医疗系统中的应用研究 j r u l e s ( 业务规则工具) 提供了一个系统组件,用户可以用规则来描述他的商业逻 辑,并且可以正确运行这些规则。i l o g 最早于1 9 9 2 年推出r u l e sf o rc h 产品, 2 0 0 0 年开始推出j r u l e s 产品。中鹰科技有限公司于2 0 0 1 年获 l o g 公司授权成 为中国地区代理,并将此产品在国内的银行、保险、电信、金融项目中推广应用。 除了商用的规则引擎产品外,国外开源的规则引擎产品也比较多,如j b o s s 公司的j b o s sr u l e s 规则引擎7 州、o p e n r u l e s 8 1 、m a n 蛐【9 】等等。其中j b o s sr u l e s 规则引擎可以说是开源产品中的佼佼者,j b o s sr u l e s 的前身是c o d e h a u s 的一个 开源项目叫d r o o l s ,后被纳入j b o s s 公司,更名为j b o s sr u l e s ,成为了j b o s s 应 用服务器的规则引擎。d r o o l s 是为j a v a 量身定制的、基于c h a r l e sf o r g y 的r e t e 算法【1 0 , 1 1 , 1 2 的改进形式- r e t e o o 算法啊实现的规则引擎,r e t e o o 算法增加了 可与面向对象语言无缝连接的节点类型,使得业务规则有了更自然的表达。 国内的规则引擎产品虽然起步较晚,但也已经有一些优秀的商用规则引擎产 品,如厦门东南融通系统工程有限公司的i i i t e n i r u l e 【1 3 】业务规则系统和杭州旗正 技术有限公司的v i s u a l r u l e sf o rj a v a t l 4 】等等。 经历了十多年的发展,以及在2 0 0 4 年8 月最终发布的j s r - 9 4 规范,为规则 引擎提供了公用标准a p i ,也为规则引擎的发展指明了发展方向。规则引擎已经 在i t 技术领域形成一个新的应用发展方向,特别在银行、保险、证券、电信等 行业的广泛应用,可以预见规则引擎的发展将进入一个新的时期。 1 3 本文的研究内容 随着规则理论的发展,规则引擎技术已经开始在很多行业得到广泛应用。本 文在深入研究了几种主流的规则引擎后,指出了这些规则引擎在业务规则维护等 方面存在的不足之处,提出了基于j b o s sr u l e s 规则引擎的规则解析模型,然后 设计实现了此模型,并成功地应用在新农合系统中。本文的工作主要包括: 分析了规则引擎的原理、优点,介绍了当前主流的规则引擎产品 本文分析了规则引擎的原理、优点,并介绍了当前主流的规则引擎产品,其 中着重介绍了j b o s sr u l e s 规则引擎。通过分析指出了这些规则引擎存在的不足 之处。 设计并实现了基于 b o s sr u l e s 规则引擎的规则解析模型 3 规则引擎在新型农村合作医疗系统中的应用研究 作者针对指出的不足之处,提出了基于j b o s sr u l e s 规则引擎的规则解析模 型。作者先介绍了解析模型的设计原理,然后对其中的对象元数据定义模型、对 象持久化模型,以及它们的设计等进行了详细的介绍。 设计并实现了新农合医疗系统 作者在基于j b o s sr u l e s 规则引擎的规则解析模型的基础上设计了新农合系 统。论文先介绍了系统的体系架构,然后详细的介绍了系统中的规则流【刀、知识 库、规则报销等主要部分的设计。最后,详细地介绍了规则引擎技术在系统中的 应用实现,以及主要功能模块和报销规则的实现。 本论文后面各章节的内容如下: 第2 章介绍了业务规则,以及规则引擎的原理和优点、规则引擎算法和主流 的规则引擎产品、j s r 一9 4 规范,重点介绍了j b o s sr u l e s 规则引擎,在此基础上 分析了规则引擎的优缺点,指出了存在的不足之处。 第3 章提出了基于j b o s sr u l e s 规则引擎的规则解析模型,详细介绍了规则 解析模型的设计思想和模型设计。 第4 章介绍了新农合系统的总体设计,给出了系统的体系架构,并详细介绍 了系统主要部分的具体设计。 第5 章介绍了新农合系统的应用实现,详细介绍了系统主要部分的实现,以 及基于j b o s sr u l e s 规则引擎的规则解析模型在系统中的实现。 第6 章总结了规则引擎在新型农村合作医疗系统应用研究中的主要贡献,并 展望了下一步的研究工作。 4 规则引擎在新型农村合作医疗系统中的应用研究 2 1 业务规则 2 1 1 业务规则定义 第2 章规则引擎 对业务规则的理解有很多种,关于业务规则最早的定义是d a n i e ls a p p l e t o n 在1 9 8 4 年提出的,他把业务规则定义为“存在于企业本体内部的一种约束的明 确描述【1 5 】”。g u i d eb u s i n e s sr u l ep r o j e c tr e p o r t 对业务规则的定义是“定义或约 束企业某个方面的描述,目的是为了判断企业的结构,或者控制和影响企业的行 为,这些业务规则具有原子性,不能再进一步进行细分【1 5 】。t o n ym o r g a n 博士 在 b u s i n e s sr u l e sa n di n f o r m a t i o ns y s t e m s 一书中对业务规则的解释是“从根 本上说,业务规则是有关业务的某个方面的精炼描述,用于约束和说明在指定情 况下必须做什么和不得做什么。在任何具体时刻,业务规则都应该有能力确定这 种约束使用的条件在逻辑上是否成立【1 6 】,。总结上述各个观点,我们可以得出业 务规则就是“企业在日常事务中用以指导、参考的方针和政策,这些方针和政策 规定了在指定情况下能做什么和不能做什么”。 业务规则是基于面向对象技术的,它把企业在其业务过程中所涉及到的主 体,抽象为一个个对象,即事实模型。事实模型与我们通常提到的数据模型不同, 数据模型并没有包含全面的业务信息,数据模型基本上只是构建数据库的前期基 础,是用来描述一组数据的概念和定义。而事实模型是表示业务规则的基本词汇, 系统使用事实模型来组织整个企业的业务规则,并形成整个系统的规则库。 规则引擎技术是软件系统关注点分离的必然产物,通过分离业务规则和系统 的功能逻辑实现,把易变的业务规则进行单独设计和管理。从软件开发角度来看, 大大的简化了软件系统的开发难度,缩短了软件系统开发周期,提高了软件系统 开发效率。从企业角度来看,规则引擎技术使得企业的业务人员能实际参与到业 务规则的设计和管理中来,能随时根据公司的需求对业务规则进行维护,提高了 企业的市场竞争力。 5 规则引擎在新型农村合作医疗系统中的应用研究 2 2 业务规则分类 业务规则可以按多种方法进行分类,可以根据“业务规则是什么 来分类, 也可以根据“如何使用业务规则”来分类。按照j a m e sj o d e l l 在1 9 9 8 年提出的 分类方法,可以把业务规则分为约束规则和推导规则两大类【1 7 1 。 ( 1 ) 约束规则 约束规则规定了限制对象结构和行为的策略和条件,可分为以下三种规则: 激励和响应规则,针对某一行为进行约束,通过指定何时触发指定行为 以及是否必须满足某些条件来触发该行为。 操作约束规则,规定了在操作前后必须满足的条件,以确保操作的正确 执行。 结构约束规则,规定了有关类、对象和它们之间关系相互约束的策略和 条件。 ( 2 ) 推导规则 推导规则规定了从一些事实经过推理和计算得到其它事实的策略和条件,它 可以分为以下两种规则。 推论规则,规定了如果某些事实为真,则可以根据这些事实推出一些以 这些事实为依据的结论。 计算规则,可通过计算某些事实,得出相应的结果。 以上是j a m e sj o d e u 提出的规则分类,r o n a l dgr o s s 则根据规则能够实施 的控制类型,把规则分为拒绝规则、产生规则和投影规则三大类 1 5 】。 ( 1 ) 拒绝规则 拒绝规则也可以看成是约束规则,它的作用是拒绝那些会引起冲突的事件发 生,如果某事件导致规则冲突,则拒绝该事件相应的行为,拒绝规则是三类规则 中使用最频繁的。例如选修课程b 的前提是修完课程a ,如果某学生选修了课 程b ,而没有修完课程a ,则拒绝该学生的选课行为。 ( 2 ) 产生规则 产生规则实际上就是以说明的方式定义的功能,或是根据某种数学函数计算 出取值的所有规则,产生规则可分以下两种规则。 计算规则,是根据明确规定的算术操作( 加、减、乘、除等操作) 来计 6 规l i j q l 擎在新型农村合作医疗系统中的应用研究 算数值的产生规则。例如计算规则可以给出某学生所修课程的平均分; 导出规则,是根据明确规定的逻辑操作( 与、或、非、等于等操作) 来 计算真值的产生规则。例如导出规则可以给出某学生是否满足优秀学生 的标准。 ( 3 ) 投影规则 投影规则表示为“如果存在a ,那么也存在b ”,投影规则一般不会拒绝事 件的行为,而是作为结果触发某些新的事件。例如选修了课程a ,也必须选修课 程b ,如果某学生选修了课程a ,则投影规则会触发该学生选修课程b 的事件行 为。 2 1 3 业务规则发展 业务规则的出现和技术一样,不是凭空产生的,它是随着企业的成功,根据 企业多年的业务软件的磨练,对专门的业务领域得出的构想。规则是人工智能理 论中的最基本的概念,把规则引入商业应用系统,和企业的具体行为相结合,这 些具体行为就是企业实体中存在着的各种业务规则,像管理制度、业务手册、工 艺流程、操作规范、收费标准、促销策略掣3 5 】,甚至一些没有形成文字的惯例。 业务规则的发展【1 8 】主要经历了以下几个阶段。 2 0 世纪7 0 年代,斯坦福大学使用l i s p 开发的m y c i n 1 9 】是第一个基于规则 的系统。该系统用于血液疾病的诊断,根据患者的症状推荐治疗方法,可以算做 是一个专家决策系统。该系统实现的主要理念是知识和控制的分离,将以规则表 示的知识从用于评估、执行的控制逻辑( 程序) 中分离出来,这是规则管理技术 的启蒙时期。 2 0 世纪8 0 年代,基于规则的编程方法随着人工智能的研究热潮达到顶峰, 那时候有不少的开发者和组织购买商业化的规则引擎,但当时规则引擎性能很 差,并且没有与当时主流系统的集成能力,基于规则的编程方法没有得到很好的 应用。按照权威调研机构g a r t n c r 的副总裁和研究主管j i ms i n u r 的话说,由于早 期的许多业务规则产品都以人工智能领域和推理系统为基础,所以这个阶段的规 则引擎技术非常复杂,而且运营和维护费用高昂,使得这种技术的研究发展进入 停滞阶段。但是研究工作仍在继续,基于规则的编程方法仍然在某些方面得到应 7 规则引擎在新型农村合作医疗系统中的应用研究 用。 2 0 世纪8 0 年代后期随着面向对象技术的兴起,分类机制、信息隐藏( 封装) 、 消息通信机制等技术为人们解决复杂应用软件系统提供了新的概念和模型,同时 也为基于规则程序提供了更好的集成和实现方式。可以说,面向对象机制很好地 解决了数据与数据操作的关系,而业务规则管理技术为对象之间的消息通信提供 了( 以业务规则数据形态处理业务逻辑的) 触发机制,使对象模型和业务规则模 型较完美地结合在一起。此外,丰富的图形化的业务规则管理工具也是业务规则 管理技术得到广泛应用的重要基础。 规则引擎技术经过了前几个阶段的发展和铺垫,到2 0 世纪9 0 年代和2 1 世 纪初,出现了较多的相关产品,它们之中有商用的,如j r u l e s 等,也不乏很多 优秀的开源产品如d r o o l s 等等。可以说规则引擎技术在现代软件技术中的应用 和研究已经进入一个新的阶段。 2 1 4 事实模型 事实模型【1 5 刀】是基本业务知识的一种蓝图,是表达业务规则的基本词汇,是 组织关于操作结果的基本知识,而不是关于这些操作如何实际发生的知识。事实 模型具有业务意义并且是基于某一领域的,从本质上说它来源于现实世界,是使 用面向对象的方法抽象得出的。 事实模型与传统的数据模型有一些相似之处【1 5 】,而且两者在一定程度上可以 等同,前者可以作为后者设计实现时参考的依据,反过来设计事实模型时也可以 参照数据模型。然而事实模型和数据模型面对的使用者和用途都是不相同的。事 实模型必须能全面地反映企业的业务模式,因此在设计事实模型时需要有专业的 企业业务人员的参与。在企业的运营过程中,随着市场的变化,企业的业务模式 也会产生相应的改变。企业业务模式的改变决定了事实模型也必须做出相应的改 变,这就要求事实模型在系统生命周期内专业的企业业务人员的一直参与。 事实模型由两种基本的组件组成,即术语和事实。 ( 1 ) 术语 术语在韦氏高级字典第1 0 版中术语的定义是指在某种使用中具有精确 含义,或者是科学、艺术、职业或者学科专用的单词或表达e l y 。术语包含特定的 8 规则引擎在新型农村合作医疗系统中的应用研究 业务含义,而且不应该有歧义,术语在业务规则表达中实际指任何给定规则中的 每个个体的命名元素,如“老师 、“学生 、“课程 、“教室”等等都是术语。术 语需要满足三个条件。 基本性:事实模型中的术语表示业务中最基本的事情,即术语不可通过 其他术语推导出来。 原子性:事实模型中的术语表示个体事情,而不是组合事情。从业务规 则的角度看,具有集合意义的术语都应该被分解为原子形式。 可知性:事实模型中的术语表示人们了解的事情,也就是说事实模型是 关于知识的,而不是关于产生这些知识的行动或者过程。 在业务规则中所有这些术语都要求有一个明确的定义,例如“老师”是指在 学校担任教学工作的人,这里的老师属于是学校这个特定领域。 ( 2 ) 事实 业务规则中的事实不同于哲学范畴中的事实,在业务规则中的事实是连接表 达业务规则所需的相关术语之间的描述,它有以下一些特点。 事实是表示业务的公共或共享动词或动词短语。 每个事实总是采用完整的语句表示,一般严格遵循“主语谓语宾语 这种结构。 所有这些语句的集合,能全面地表达企业的业务模式。 例如“老师教数据结构 ,就是一种事实,其中的“老师”和“数据结构 则是属于术语,这条语句描述了“老师 和“数据结构 的连接。 2 2 规则引擎概述 2 - 2 1 什么是规则引擎 对于什么是规则引擎的问题,在j s r - 9 4 规范【2 】中没有给出具体的定义,它 只是把规则引擎描述为一种用来解析传统程序中i f - t h e n 声明的解析器。而把这 种经过翻译的i f - t h e n 声明称为规则,在i f 部分中声明了规则的条件,比如s t u d e n t g e t a v e r a g e m a r k 0 9 0 就是一个条件,t h e n 部分中声明了规则执行的动作,比如 s t u d e n t s e t s t u d e n t r a n k ( “e x c e l l e n c e ) 就是一个动作。规则引擎的输入是一组规 则集合和一些事实对象,而输出是由这些输入来决定的,可能是那些经过规则引 9 规则引擎在新型农村合作医疗系统中的应用研究 擎修改过的事实对象,也可能是一些提示信息。 m a l c o l mc h i s h o l m 在( h o wt ob u i l dab u s i n e s sr u l e se n g i n e ) 一文中指出规 则引擎这个术语是很不明确的,因为以任意形式使用、能够应用于数据生成结果 的规则系统都可以称为规则引擎,包括表单验证和动态表达式引擎这样的简单系 统都可以称为规则引擎【2 0 1 。m a l c o l mc h i s h o l m 把d r o o l s 这类规则引擎称为产生 式规则引擎,它们既是一种规则引擎,也是一种专家系统,它们和表单验证、动 态表达式这类引擎的主要区别就是后者不属于专家系统。产生式规则系统是一种 完全关注于命题的精确表达和一阶逻辑的知识表示,不存在含糊不清的定义。产 生式规则系统的核心是一个能够处理大量规则和事实的推理引擎。推理引擎将事 实、数据与产生式规则( 也可以叫做产生式,或叫规则) 进行匹配,以推出结论。 产生式规则是一个用一阶逻辑进行知识呈现的二元结构,如图2 1 。 w h e n t h e n 图2 - 1 规贝f j - - 元结构图 产生式规则系统有两种执行方法一正向推理和逆向推理,两种方法都使用 的系统称为混合型产生式规则系统。理解这两种操作方法是理解产生式规则系统 之所以不同和怎样从中选择最合适的系统的关键。正向推理是数据驱动的,事实 被传递到工作空间中,在那里有一个或者有多个规则与这些事实匹配,并由推理 机中的议程安排执行规则的执行顺序。逆向推理是由目标驱动的,推理引擎需要 从满足的结论开始进行推理。在这个结论不能满足时,将搜索一些能够满足的结 论来推理,这些结论称为子目标,这些子目标将帮助完成当前目标的某些未知部 分一引擎持续这个过程,直到最初的结论被证明或没有可证明的子目标。 2 2 2 规则引擎的优点 规则引擎改变了传统的编程方式,让我们可以从不同的角度观察问题。规则 引擎实现了业务逻辑和应用逻辑的分离,固化了企业的业务规则,和传统的软件 系统相比,规则引擎具有以下一些优点。 清晰软件架构 很多框架为软件开发提供了支持,表现层框架有s t r u t s ,w e b w o r k ,j s f 和 1 0 规则引擎在新型农村合作医疗系统中的应用研究 s p r i n g 等,持久层框架有j d o ,h i b e r n a t e 和e n t i t yb e a n s 等,业务层框架有e j b , s p r i n g 等。但是这些框架没有提供怎么去组织系统的业务规则,规则引擎弥补了 这一个缺口。它把业务规则从应用逻辑中分离出来进行单独管理,使得整个应用 系统的架构变得更加清晰。 声明式编程 规则引擎把业务规则描述为“做什么”而不是“如何去做 ,这样做的好处 是可以用比传统的i f - e l s e 编码更加容易的方式表达各种复杂的业务规则,也更加 容易验证和测试业务规则,因为规则比编码更容易阅读。 逻辑与数据分离 系统数据保存在事实对象中,业务逻辑保存在规则中。这样做的结果是,将 来业务逻辑发生改变时系统更容易适应,因为业务逻辑保存在规则中,而不必再 去修改程序代码。这在逻辑是跨领域或多领域中使用时尤其有用。通过将逻辑集 中在一个或多个清晰的规则文件中,取代了之前分散在代码中的局面。 速度及可测量性 r e t e 算法、l e a p s 算法等,以及由此衍生出来的d r o o l s 的r e t e o o 算法,提 供了对系统事实对象和规则之间非常有效率的匹配。这些都是高效率的,尤其当 这些进入规则引擎的事实对象处于不完全改变的状态时( 规则引擎能够记得之前 的匹配) 。这些匹配算法的效率都是经过大量实践的证明。 知识集中化 业务规则是一个企业很重要的知识财富,通过使用规则,将建立一个可执行 的规则库,可以对这些企业财富进行很好的管理,而不会随着企业人员的流失而 消亡。而且建立完成的规则库代表着企业现实中的业务策略的唯一对应,理想情 况下可读性高的规则还可以被当作文档使用。 工具集成 现在很多规则引擎产品都已经开发出独立的或者集成的规则操作和管理工 具,例如和e c l i p s e ( g i 来可能出现在基于w e b 的界面上) 这样的工具集成的规 则修改与管理插件,可以即时对规则文件进行审查、调试、内容验证与修补。 解释机制 通过把规则引擎做出的决断与决断的原因一起记录下来,规则系统提供了有 效的“解释机制”。 规则引擎在新型农村合作医疗系统中的应用研究 易懂的规则 通过建立事实对象模型以及d s l ( 域定义语言) ,软件可以使用自然语言 的方式来编写规则。这让非技术人员与领域专家可以用他们自己的逻辑来理解规 则 2 1 】。 加快开发、测试和上线周期 由于业务规则被单独处理,而且使用规则引擎专门的规则语言定义规则,使 得规则简单而且直观,所以提高了软件开发速度。在测试和维护时,也可以可视 化地监视每条规则运行的状况,不用再去考虑由于程序或者别的因素造成业务逻 辑的错误了。规则引擎的使用很大程度上弥合了企业业务人员和软件开发人员之 间存在的鸿沟,规则引擎为企业业务人员和软件开发人员提供了一种基本统一的 业务规则的视图。 2 2 3 规则引擎的原理 j a v a 规则引擎起源于基于规则的专家系统( r b e s ,r u l e b a s e de x p e r t s y s t e m ) ,而基于规则的专家系统又是专家系统的其中一个分支【3 3 , 3 4 1 。专家系统 属于人工智能( a r t i f i c i a li n t e l l i g e n c e ) 的范畴,它模仿人类的推理方式,使用试 探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。 基于规则的专家系统r b e s 包括三部分【刀规则库( r u l eb a s e ) 、工作内存 ( w o r k i n g m e m o r y ) 和推理引擎( h f e r e n c ce n g i n e ) 。它们的结构如图2 2 所示。 图2 - 2 基于规则的专家系统结构 图2 - 2 中,推理引擎包括三部分:模式匹配器( p a t t e r nm a r c h e r ) 、议程( a g e n d a ) 和执行引擎( e x e c u t i o ne n g i n e ) 。推理引擎通过决定哪些规则满足事实或目标, 并授予规则优先级,满足事实或目标的规则被加入议程。模式匹配器决定选择执 1 2 规则引擎在新型农村合作医疗系统中的应用研究 行哪个规则,何时执行规则。议程管理模式匹配器挑选出来的规则的执行次序。 执行引擎负责执行规则和其他动作。 ( 1 ) 推理引擎的推理步骤 将初始数据( f a c t ) 输入工作内存。 使用模式匹配器比较规则库中的规则( r u l e ) 和数据。 如果执行规则存在冲突( c o n f l i c t ) ,即同时激活了多个规则,将冲突的 规则放入冲突集合。 解决冲突,将激活的规则按顺序放入议程。 使用执行引擎执行议程中的规则。重复步骤2 至5 ,直到执行完毕所有议 程中的规则。 ( 2 ) 规则引擎相关构件 规则引擎是一种根据规则中包含的指定过滤条件,判断其能否匹配运行时刻 的实时条件来执行规则中所规定的动作的引擎。与规则引擎相关的有以下四个基 本概念。 信息元( i n f o r m a t i o n 埘t ) 信息元是规则引擎的基本建筑块,它是一个包含了特定事件的所有信息的对 象。这些信息包括:消息、产生事件的应用程序标识、事件产生事件、信息元类 型、相关规则集、通用方法、通用属性以及一些系统相关信息等等。 信息服务( i n f o r m a t i o ns e r v i c e s ) 信息服务产生信息元对象。每个信息服务产生与它自己类型相对应的信息元 对象。即特定信息服务根据信息元所产生的每个信息元对象有相同的格式,但可 以有不同的属性和规则集。需要注意的是,在一台机器上可以运行许多不同的信 息服务,还可以运行同一信息服务的不同实例。但无论如何,每个信息服务只产 生与它自己类型相对应的信息元。 规则集( i e s e t ) 规则集是许多规则组成的集合。每条规则包含一个条件过滤器和多个动作。 一个条件过滤器可以包含多个过滤条件。条件过滤器是多个布尔表达式的组合, 其组合结果仍然是一个布尔类型的。在程序运行时,动作将会在条件过滤器值为 真的情况下执行。除了一般的执行动作外,还有三类比较特别的动作,它们分别 是:放弃动作( d i s c a r da c t i o n ) 、包含动作( i n c l u d ea c t i o n ) 和使信息元对象内 1 3 规则引擎在新型农村合作医疗系统中的应用研究 容持久化的动作。 队列管理器( q u e u em a n a g e r ) 队列管理器用来管理来自不同信息服务的信息元对象的队列。 2 2 4 规则引擎算法 ( 1 ) r e t e 算法简介 规则引擎的算法大都来源于推理机所采用的模式匹配算法,主要有下列几 种:l i n e a r 、r e t e 、t r e a t 和l e a p s 。大部分规则引擎产品的算法,基本上都基于 d r c h a r l e sf o r g y 在1 9 7 9 年博士论文上提出的r e t e 算法及其变体,r e t e 算法( 除 了私有的r e t ei i ) 是目前效率最高的一个f o r w a r d c h a i n i n g 推理算法。r e t e 算 法其核心思想是将分离的匹配项根据内容动态构造匹配树,以达到显著降低计算 量的效果。许多j a v a 规则引擎都是基于r e t e 算法来进行推理计算的,r e t e 是唯 一的、效率与执行规则数目无关的决策支持算法。 r e t e 算法【7 l o 二2 1 是一个用来实现产生式规则系统的高效模式匹配算法,它通 过存储关于规则的信息而获得速度。r e t e 算法可以分为两部分:规则编译( r u l e c o m p i l a t i o n ) 和运行时执行( r u n t i m e e x e c u t i o n ) 。 r e t e 算法设计两种逻辑存储结构,一种称为生产内存( p r o d u c t i o nm e m o r y ) , 一种称为工作内存。规则编译算法描述了在生产内存中的规则如何构造一个有效 的判别网络,该网络表示了规则中各个条件之间的数据依赖关系。算法原理是通 过对在网络间传递的数据进行过滤,首先在网络顶部进行数据过滤,这时节点可 能匹配到许多数据,其次再逐层进行数据过滤,最后到了网络底部得到较少的匹 配数据。运行时执行算法描述了事实对象从r o o t 节点输入,并沿着判别网络一直 向下流动的这样一个过程,当数据匹配到过程中的某个节点的条件时,节点就把 它记录到相应的内存中。 在d r c h a r l e sf o r g y1 9 8 2 年的文章中,他描述了四种基本的节点:r o o t 节点、 卜i n p u t 节点、2 - i n p u t 节点和t e r m i n a l 节点【1 0 】。 r o o t 节点 r o o t 节点是整个判别网络的根节点,是所有事实对象的进入判别网络的入 口。 1 4 规则引擎在新型农村合作医疗系统中的应用研究 i n p u t 节点 1 - i n p u t 节点又被称为a l p h a 节点,是用来对字符串进行求值测试( 对如数字 常量、字符常量等的检测) 。 2 - i n p u t 节点 2 - i n p u t 节点也称为b e t a 节点,b e t a 节点用于比较两个对象和它们的字段。 两个对象可能是相同或不同的类型。我们将这两个输入称为左输入和右输入。 b e t a 的左输入通常是一组对象的列表,右输入是单个的对象。左输入和右输入能 够使用“e x i s t 进行对比检查,而且b e t a 节点具有记忆功能,左输入被称为b e t a 内存,会记住所有到达过的对象列表。右边的输入成为a l p h a 内存,会记住所有 到达过的对象。 t e r m i n a l 节点 t e r m i n a l 节点是整个判别网络的出口,表示进入判别网络的所有规则已经匹 配了所有的条件,即这些规则有了一个完全匹配,通常一条规则对应一个终端节 点。 ( 2 ) r e t e 算法基本思想 r e t e 算法的基本思想是保存过去匹配过程中留下的全部信息,以空间代价来 换取产生式系统的执行效率。r e t e 算法的核心是建立r e t e 匹配网络结构,由模 式网络和连接网络两部分构成。其中,模式网络记录每一模式各域的测试条件, 每一测试条件对应于网络的一个域结点,每一模式的所有域结点依次连起来,构 成模式网络的一条匹配链。在每一模式匹配链的终结点上都有一个口寄存器来记 录所有能与该模式匹配的实例集合。模式网络是一棵可以使用典型遍历算法进行 测试的二叉树。连接网络则用于将同一规则的不同模式结合起来,实现模式的 “与”关系。 r e t e 算法快速匹配的一个重要依据是时间冗余性,工作存储器中的内容在推 理过程中的变化是缓慢的,即在每个执行周期中,增删的事实只占很小的比例, 因此,受工作内存变化而影响的规则也只占很小的比例,只要在每个执行周期中 记住哪些事实是已经匹配的,需要考虑的就仅仅是修改的事实对匹配过程的影 响。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第21课 清朝前期的文学艺术说课稿-2023-2024学年初中历史中国历史 第二册统编版(五四学制)
- 人教版高中 必修二教学设计1.3 人口的合理容量
- 2025供电合同范本(律师)
- 2025中小学食堂承包合同样本
- 8.3 俄罗斯(说课稿)2023-2024学年七年级地理下册同步教学(湘教版河北专版)
- Unit 5 Fun Clubs Section A 1a~1d 说课稿 2024-2025学年人教版(2024)七年级英语上册
- 山西公务员真题试卷
- 5.1.1 合成高分子的基本方法- 加聚反应(教学设计)高二化学同步高效课堂(人教版2019选择性必修3)
- 机械厂员工奖励申请执行规章
- 印刷厂员工生日补贴管理规定
- 《保密意识培训》课件
- 2025年“物业管理及公共服务”等知识考试题库附完整答案【历年真题】
- 新时代大学生劳动教育 课件 第1章 劳动和劳动形态
- 生鲜店加盟合同模板
- 电影刮痧课件教学课件
- 游戏厅转让合同范本样本
- DB34∕T 4253-2022 公路水运工程质量监督规程
- 人教版数学四年级上册第二单元习题
- 预包装食品标签审核表
- 《中国诗词大会》必背经典古诗词100首
- 第5课《用发展的观点看问题》第1框《世界是永恒发展的》-【中职专用】《哲学与人生》同步课堂课件
评论
0/150
提交评论