




已阅读5页,还剩47页未读, 继续免费阅读
(计算机应用技术专业论文)基于规则软件开发的研究及其在医疗保险系统中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 使用传统的软件开发方法,在软件开发和后期维护中,大量频繁的需求变化 需消耗大量的时间金钱来满足变化的需要。问题的存在引出了新的开发模式 基于规则的软件开发。基于规则的软件开发,其本质是将业务逻辑和业务数据分 离开来,使得逻辑部分,通常也是系统需求变化的主要部分,从凌乱的代码中分 离出来,成为独立可维护部分。 我国法律体制和公民生活保障体系的日益完善,使得其重要组成部分医疗保 险与越来越多的人拉近了距离。但是医疗保险的法律法规尚不够成熟,其细节仍 处于不断更新和完善中,而繁琐晦涩的条款使得一般百姓很难清楚了解自己相关 的权利和义务,更无法及时了解相关条款的更新。 本文针对复杂多变的医疗保险,使用基于规则的软件开发方法和开源规则引 擎d r o o l s 开发了医疗保险查询系统,使得一般用户能够方便的对相关保险内容 进行查询,对相对简单的业务逻辑部分为相关维护人员提供了简单易行的规则管 理模块。该模块针对医疗保险系统自身特点,给出了自己的规则冲突处理模式, 提高冲突检测和处理的速度和方便性。最后,对使用基于规则开发和一般开发方 式的系统性能进行比较,分析规则引擎应用在性能上的利弊。结果表明,使用基 于规则方法开发的系统具有良好的需求变更适应性和扩展性:对特定的系统使用 针对性的规则设计,能有效提高规则系统的性能。 关键词:基于规则软件开发规则引擎d r o o ls 规则冲突医疗保险系统 a b s t r a c t f o rt h ec l a s s i cs o t t w a r ed e v e l o p m e n t s ,i nt h ep e r i o do fs o f t w a r ed e v e l o p m e n ta n d m a i n t e n a n c e ,t h ec h a n g e so fs o f t w a r er e q u i r e m e n t si n v o l v e dt o om u c ht i m ea n d m o n e y t of i ti t w h e nt h ep r o b l e m sc o m eo u t ,an e wd e v e l o pm o d e lp u tf o r w a r d t h e b a s i ci d e ao fr u l e b a s e ds o f t w a r ed e v e l o p m e n ti st o s e p a r a t eb u s i n e s sl o g i c sa n d b u s i n e s sd a t a t h e nt h eb u s i n e s sl o g i c sw h i c ha r eu s u a l l yt h em a i np a r to fc h a n g e sc a n b ep i c k e do u tf r o mt h em a s sc o d e st ob eas o l om a i n t e n a n c ep a r t a l o n gw i t ht h ei m p r o v e m e n to fl e g a ls y s t e ma n dc i v i cl i f eg u a r a n t e es y s t e m , m e d i c a li n s u r a n c ei sc l o s e rt ot h ec i t i z e n s h o w e v e r , t h el a w sa n dr e g u l a t i o n so f m e d i c a li n s u r a n c ea r es t i l ln o tm a t u r ee n o u g h ,a n di t sd e t a i l sa r es t i l lu p d a t i n ga n d i m p r o v i n gc o n t i n u o u s l y t h ec o m p l i c a t e dp r o v i s i o n sm a k ei t d i f f i c u l tf o ru s e r st o u n d e r s t a n dt h e i rr i g h t sa n do b l i g a t i o n sa n dt h e ya r ea l s on o ta b l et ok e e pt r a c ko ft h e u p d a t e a i ma tc o m p l e xa n dm u t a b l ep r o v i s i o n so fh e a l t hi n s u r a n c e ,t h i sp a p e ru s e s r u l e - b a s e ds o f t w a r ed e v e l o p m e n ta n dt h eo p e ns o u r c ed r o o l sr u l ee n g i n et od e v e l o pa m e d i c a li n s u r a n c eq u e r ys y s t e m t h i ss y s t e mm a k e si t e a s yt oq u e r yt h er e l e v a n t c o n t e n t so fi n s u r a n c ep r o v i s i o n sf o ru s e r s f o rt h er e l a t i v e l ys i m p l ep a r to fb u s i n e s s l o g i c ,w ep r o v i d ear u l em a n a g e m e n tm o d u l ef o rb u s i n e s sm a n a g e r st oe a s i l yc h a n g e t h e m t h i sm o d u l ed e a l sw i t hr u l ec o n f l i c tb yi t so w nm e t h o dw h i c hc a n i m p r o v et h e s p e e da n dc o n v e n i e n c eo f c o n f l i c td e t e c t i o n f i n a l l y , w em a k eac o m p a r i s o no fs y s t e m p e r f o r m a n c eb yr u l e b a s e ds y s t e ma n dg e n e r a ls y s t e mt oa n a l y s i st h ep r o sa n dc o n so f r u l ee n g i n e t h er e s u l t ss h o w e dt h a tt h es y s t e md e v e l o p e db yr u l e - b a s e dm e t h o dh a s g o o da d a p t a b i l i t yf o rr e q u i r e m e n tc h a n g e sa n ds c a l a b i l i t y t h eu s eo fs p e c i f i cd e s i g n f o rs p e c i a ls y s t e mc a ne f f e c t i v e l yi m p r o v et h ep e r f o r m a n c eo fr u l es y s t e m k e yw o r d s :r u l e b a s e ds o f t w a r ed e v e l o p m e n t ,r u l ee n g i n e ,d r o o l s ,r u l e c o n f l i c t ,h e a l t hi n s u r a n c es y s t e m 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得墨鲞盘鲎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:汪毒 签字日期:矽口7 年月 ,曰 学位论文版权使用授权书 本学位论文作者完全了解苤盗盘堂 有关保留、使用学位论文的规定。 特授权叁鲞盘堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:面靡 i , 签字r 期:如口穹年f 月- y 日 导师签名: 考铀刁 签字日期:。川年厂月z 日 第一章绪论 1 1 研究背景 第一章绪论 二十一世纪,人类全面进入信息时代。计算机技术和信息技术的飞速发展及 其在各行各业的广泛应用,使得人们的日常生活时时刻刻都离不开计算机软件。 比尔盖茨说:“二十一世纪要么电子商务要么无商可务”。计算机技术极大的简化 了商务办公的复杂性,提高了便捷性。可以说计算机的每一步发展都伴随着其应 用领域的发展。同样,二十一世纪还是个日新月异的时代,变化成了时代的主旋 律。具体到商务领域表现在从市场到产品,从客户需求到领导决策,从生产工艺 到产品规格,处处都伴随着变化的身影。“唯一不变的就是变化”【】j 。随时随地 存在的变化,反映到计算机软件开发过程中,就变成了大量复杂的软件需求变化 而变化的主体是业务逻辑。在传统的软件开发过程中,依照软件工程规范1 3 j ,将 开发过程分成需求分析,概要设计,详细设计,编码实现,测试重构,后期维护 等步骤。由于传统的开发方法普遍将业务数据和业务逻辑耦合在一起,以过程化 的功能模块或者封装的业务功能对象为基本开发单位;当需求发生变化,需要在 系统中各处寻找需求变化可能会影响的业务逻辑单位并一一修改,更糟糕的是这 些修改还可能使得需要同时修改相应的业务流程、系统界面和系统文档;稍大的 变化甚至会直接影响整体设计,使得部分本来可能花费大量精力进行优化的模块 需要重新设计,从而极大增加开发和维护成本。因此对于传统开发方法而言,需 求的变化出现得越早对整个系统开发的影响越小,而当需求变化出现在测试及维 护阶段时,其影响比变化发生在需求阶段时要大数十倍甚至更多。随着开发的推 进,需求变化的影响将呈指数级增长,使得开发进程步履维艰。为了在需求分析 阶段就尽可能得使得业务需求清晰明了,并尽可能避免在后续开发阶段出现需求 变更,传统的开发方法在需求分析阶段会花费大量时间和精力。而如今的很多企 业级系统的规模庞大、开发时间长,系统客户很难在整个开发阶段中始终保证需 求的一致性,详尽的需求分析只能保证业务需求的正确性,并不能解决需求变更 的问题【4 1 。矛盾显而易见:需求变化越多越频繁,传统的软件开发方法将越难堪 重负。事实也证明,很多大型项目的失败,并不是因为系统本身复杂度过高或者 项目管理上的失误,而是业务需求的大量频繁变更带来的成本剧增,使得开发方 难堪重负而不得不放弃1 5 】。 第一章绪论 传统的软件开发方法很难处理需求频繁变化的问题,使得迫切需要新的开发 方法来提高需求频繁大量变化系统的复用性及开发的效率。普遍存在的矛盾使得 各种方法应运而生,敏捷编程可以算是一种解决方案。其实敏捷编程包括它的一 个热门分支极限编程都只是一种编程思想。主张简单、递增的变化、拥抱变 化是敏捷建模方法的核心原则。从本质上说,敏捷编程并不是编程方法,它只能 在一定程度上被动地减轻需求变化的影响而不能从根本上解决问题。而基于规则 的软件开发方法则最大程度的满足了这个需要。基于规则的软件开发,其本质是 将业务逻辑和业务数据分离开来,使得逻辑部分,通常也是系统需求变化的主要 部分,从凌乱的代码中分离出来,成为独立可维护部分。当业务逻辑发生变化时, 无需大量寻找散落的逻辑代码和修改主程序,程序员可以集中处理业务逻辑变 更。基于规则的软件开发的工作模式使得业务逻辑的变更变得简单且不会影响系 统整体架构和业务数据部分的设计【6 l 。同时,针对某些系统,业务逻辑相对简单 易懂,可以通过提供业务规则管理系统将业务逻辑的变化交由业务专家进行管 理,避免开发程序员的介入,这将极大降低需求变更发生后的管理维护的成本和 便捷性。 1 2 研究现状 基于规则的开发方法,其历史可以追溯到上世纪八十年代。伴随着当时处于 研究热潮的人工智能得到了快速发展,基于规则的开发作为人工智能的一个重要 分支专家系统的开发工具也得到了迅速发展。其后,面向对象的开发方法及 其编程语言的广泛流行,业务规则模型与业务对象模型得到了完美的结合。作为 基于规则开发方法的主要功能模块规则引擎,充分利用了面向对象的系统分 析优势和规则模型的逻辑与数据相分离的结构优势,功能和实用性大大提升。此 时,自动化的业务规则管理显示出了特别显著的优势,包括强大的可控制性、系 统扩展的灵活性以及在各种应用中快速部署业务规则的能力。在计算机应用领 域,对于业务规则的研究也十分活跃,包括规则编程、数据建模、规则提炼、规 则使用接口、规则引擎以及规则在面向服务架构中的应用角色等方面。基于规则 的开发方法开始走出人工智能的小范围,广泛应用在各个级别的系统开发中。规 则引擎作为基于规则开发的核心部分,受到了最广泛的关注。如今的规则引擎大 都和某一个或多个面向对象语言结合使用,使得开发过程清晰简便,并开始拓宽 其在企业级信息管理系统中的市场。在全球范围内,有5 0 多个商家在出售规则 引擎,业务规则引擎在每年的产品销售中取得了5 0 0 万美元的销售成绩,其影响 可见一斑。在j a v a 规则引擎领域,最著名的商业产品有:p s t 的o p s j ,s a n d i a 第一章绪论 国家实验室的j e s s 和i l o g 的j r u l e s 等,它们在功能和效率上都已经十分完备。 除商业产品外,开源社区中也有不少优秀的规则引擎,具有代表性的有j - b o s s r u l e s ( d r o o l s ) ,m a n d a r a x 8 1 ,j - l i s a ,o p e n r u l e s 等阿7 1 。这些规则引擎虽然功能上 不如商业化规则引擎完备,但大都拥有很好的推理效率和性能,并处于不断更新 优化中,发展前景亦不容小觑。 大量的规则引擎产品的出现,带来了相互兼容的问题。为协调不同厂商规则 引擎产品之间在接口和a p i 调用方面的一致性,提高规则引擎间的互操作性和移 植能力,在i l o g ,b e a ,b l a z e 等公司的发起下,j c p ( j a v ac o m m u n i t yp r o c e s s ) 于2 0 0 4 年8 月发布了规则引擎领域的第一个正式标准j a v a 规则引擎a p i 规 范,即j s r 9 4 。如今大部分的规则引擎都提供了对j s r 9 4 的支持。统一的接口 和a p i 规范在一定程度上加速了规则引擎的发展速度【9 】。 总体来说,对基于规则的开发方法、规则引擎以及规则管理平台的研究已经 有二十年左右的历史,商业化产品的推出也有了近十年的历史,并形成了一个新 的产业。其强大的业务逻辑管理特点使得规则引擎在金融、保险、电力等行业系 统、e r p 、电子商务以及专家系统等大型应用领域有广泛应用前景;但是由于业 务逻辑处理的简便性也带来了由复杂的规则匹配所带来的较大系统效率开销,因 此在中小型应用中还很少见到它的身影。 规则引擎的核心部分本质上是一个复杂的逻辑推理系统。在实际应用中,想 要很好地将规则引擎引入到开发系统中并不是一件容易的事情。因此,虽然规则 引擎有很吸引人的优势,但事实上即使在非常适合规则引擎发挥威力的领域中通 过使用规则引擎取得成功的系统所占比例依然很小。规则引擎仍然处于其发展史 的初期阶段,需要大量技术改进才能使其优势得以有效发挥而得到广泛应用,其 良好的发展前景值得我们期待【1 0 】【1 3 】。 1 3 研究内容和本文工作 我国法律体制和公民生活保证体系的日益完善,使得其重要组成部分医 疗保险与越来越多的人拉近了距离。党的十七大报告指出:健康是人全面发展的 基础,关系千家万户幸福,并强调“建设覆盖城乡居民的公共卫生服务体系、医 疗服务体系、医疗保障体系、药品供应保障体系,为群众提供安全、有效、方便、 价廉的医疗卫生服务。”建设医疗保障体系,事关人民群众的切身利益,是深入 贯彻落实科学发展观、全面建设小康社会的必然要求和重要内容。大力发展商业 健康保险,对于完善医疗保障体系、促进科学发展和社会和谐具有重要意义。医 疗保险与民计民生之间有着密切关系,其重要性显而易见。 第一章绪论 然而目前我国医疗保险的法律法规尚不够成熟,其细节仍处于不断更新和完 善中,而繁琐晦涩的条款使得一般百姓仅仅通过阅读医疗保险法律法规条款很难 清楚了解自己相关的权利和义务,更无法及时了解到相关条款的更新。医疗保险 的执行,仍需要一些对法律法规条款相当熟悉的专业人员进行处理,并需要他们 随时关注学习条款的变更,整个过程十分容易出现差错。通过引入计算机技术实 现的一般医疗保险系统,由于对需求变更处理能力的局限,仅仅针对开发时的法 律法规有较好的处理能力。当法律法规条款发生变化时,正如前文所述,程序员 将陷入大量变更带来的巨大程序修改工作量,使得系统的实用价值大大降低。 大量的业务逻辑,频繁的需求变更,使得医疗保险系统成为使用基于规则开 发方法的很好实例。出于这种考虑,本文通过尝试使用规则引擎开发一个医疗保 险查询系统,使用规则引擎将业务逻辑和业务数据分离开来。当法律法规条款发 生变化时,集中处理业务逻辑将使得对系统的修改快速易行,提高维护效率;针 对部分相对简单的规则实现简单的规则管理模块,使得一般的业务逻辑变更可以 通过友好的用户交互界面,由非程序员操作执行。这本身也是将基于规则开发方 法和规则引擎应用于较大系统韵一次有益的尝试。 本文的主要研究工作有: ( 1 ) 对基于规则开发方法的原理、规则引擎原理以及业务规则管理系统进行 深入研究,希望能对读者有所启示。 ( 2 ) 选择开源规则引擎j b o s sr u l e s ( d r o o l s ) , 掌握其原理、结构及相关使用 技术,作为后续开发的技术基础。 ( 3 ) 结合基于规则开发方法和d r o o l s 规则引擎,采用成熟的j 2 e e 框架结构实 现基于w e b 应用的医疗保险查询系统,提供如下功能:医疗保险用户缴费及个 人账户查询,医疗项目报销比例查询。 ( 4 ) 对规则冲突进行研究,熟悉现有的各种规则冲突检测及处理方法。对系 统中相对简单的业务规则部分实现规则管理模块,由业务管理人员进行规则添 加,删除,更新等操作,并适时进行规则冲突检测提示。针对医疗保险系统实际 情况,给出自己的规则冲突处理模式,希望对本实例在效率上有所提高。 ( 5 ) 对业务逻辑相对复杂的部分,分别使用基于规则的开发方法和一般开发 方法实现,对比分析实际应用中,基于规则引擎开发的系统的利弊。 1 4 论文的结构安排 第二章,通过介绍基于规则开发思想和规则引擎的相关理论和技术,为后文 的实际开发提供理论依据和技术支持。 第一章绪论 第三章,在第二章的基础上,利用基于规则开发思想,使用规则引擎技术, 针对医疗保险系统的实际需求,提出系统的总体架构设计。 第四章,在第三章提出的框架结构上,细化各组成模块。介绍医疗保险系统 的详细设计和针对该系统的业务规则管理模块的详细设计。另外使用面向对象的 j a v a 语言开发部分模块与本系统对应模块通过对比分析基于规则引擎系统的性 能。在详细阐述系统的主要功能和实现方法的基础上,对实际效果进行总结,给 出实验数据和结果。 第五章,对全文进行总结,讨论全文工作的实际意义和下一步需要完善的部 分。 第二章相关理论和技术研究 2 1 业务规则 第二章相关理论和技术研究 作为新的软件开发思想和方法,二十世纪九十年代中期提出的基于规则的软 件开发,经过近二十年的发展,其理论方法已经被业界认可并走向成熟,相关技 术也日趋完善,开始在一些实际项目中发挥威力】。本小节将介绍业务规则的概 念和表达形式以及基于规则开发方法的基本思想。 2 1 1 业务规则的概念 业务规则本身并没有统一的概念,对其定义有很多种说法,综合各种说法可 以总结如下:业务规则,通常被人们描述为业务逻辑的外部化或业务自动化,是 一种实现和强制实施业务策略的方法,它对业务中某些定义和限制,如组织中有 关状态转变和过程处理进行描述,用于维持业务结构或控制和影响业务的行为: 用最简单的话来说,业务规则是与特定行业中的特定业务功能有关的决策逻辑的 表示形式【1 4 】。 一条业务规则可以使用形式化定义为一个五元组( e ,c ,a t ,a f , l ) 。其 中e 是规则触发执行的实体对象,c 是规则中对e 的行为是否得以执行的判断 条件,a t 是在c 判断结果为真时e 的执行动作,a f 是在c 判断结果为假时的执 行动作,l 是规则的优先级,用于控制e 同时触发多个业务规则时的规则执行顺 序【16 1 。 大量的业务规则组成了企业的整体业务逻辑,企业在世纪运行中将按照其积累 的业务规则对各种业务情况进行判断和处理,并总结实际经验改进其业务逻辑。 2 1 。2 业务规则的表达 业务规则的表达源于人工智能领域中的知识表达。知识是人类文明的主要构 成,通过使用知识表达将其转换为计算机能识别处理的数据结构,可以辅助人类 有条理的高效管理大量存在的知识【l8 1 。知识的表示方法有很多,通常可分类为: 自然语言直接表示、逻辑表示、产生式表示、语义网络表示、框架表示、脚本表 示、过程表示、混合型知识表示、面向对象的表示等方法【19 1 。 业务规则本身也是一种知识。对于业务专家来说,业务规则使用一般的自然 第二章相关理论和技术研究 语言来描述。业务专家将企业的核心决断方法描述成不同环境条件下的应对措 施,从而形成自然语言的业务规则。可对业务规则简单举例说明为:当企业的某 种产品供不应求时,增加生产量;当某种产品供大于求时,则减少生产量。除了 这种全局型的重大逻辑决策外,在企业内部各个细处,也存在大量的业务规则。 一切决断标准都可以使用业务规则进行表达。 自然语言描述的业务规则虽然简单易懂,却不能被计算机识别。因此在基于 规则的开发中,也存在将业务规则处理成计算机能识别的模式的问题。由于业务 规则本身是一种断言式结构,最合适的是产生式表示方法。产生式知识表示方法 易于描述事实和规则以及它们之间的不确定性度量的特点,使得它可以方便地表 示业务规则。实际上,主流的规则引擎中都使用产生式表示方法表示业务规则。 在产生式知识表示方法中,事实描述为断言一个具有特定属性值的对象或者 多个对象间属性值关系的陈述句,可用形式化的三元组( 对象,属性,值) 进行 简化表示。业务规则定义为事件的因果关系,以“当( 条件为真) 则( 执行动作) ” 的单一形式进行描述。条件部分称为规则的前件,动作部分称为规则的后件,从 而将规则简单表示为“前件一后件”。这种表达方式可以将业务规则最大程度的 细化,便于对其进行组织和管理【1 7 】。 2 1 3 基于规则开发的基本思想 基于规则的开发,其基本思想就是将本来强耦合于程序中的业务数据和业务 逻辑分离开来,使得逻辑部分独立形成业务规则,可集中进行管理维护。当业务 逻辑发生变化时,无需大量寻找散落的逻辑代码和修改主程序,提高系统管理和 维护的效率。集中管理的业务规则将形成一个规则库,这意味着规则库代表着现 实中业务策略的唯一对应,成为企业的一个知识库。理想状态下,精心设计且可 读性高的规则甚至可以直接当作文档使用。 基于规则的开发方法的如上特点,使得其非常适合业务逻辑数量庞大且频繁 变更的系统开发。但由于规则匹配执行带来的效率消耗,中小型应用中使用此方 法可能得不偿失1 1 7 j 。 2 2 规则引擎 规则引擎作为基于规则开发方法的软件系统中的核心部分被业界所普遍接 受。它伴随着基于规则开发方法的发展在行业内快速成长。市场上存在大量研究 规则引擎的厂商和产品。本小节将对规则引擎进行详细介绍。 第二章相关理论和技术研究 2 2 1 规则引擎的定义 规则引擎这个术语并没有十分明确的定义。任何应用由数据生成结果的规则 系统都可以称为规则引擎。包括像表单验证和动态表达式引擎这样的简单系统都 可以称之为规则引擎。而基于规则开发的系统中提到的规则引擎通常指的是产生 式规则系统,用于处理业务规则这一特例。产生式规则系统既是一种规则引擎, 又是一个专家系统,而之前提到的校验器和表达式求值规则引擎不是专家系统。 沿用行业内的普遍叫法,后文中所提到的规则引擎无特殊声明,均指的是产生式 规则系统。产生式规则系统关注于精确表达事实和一阶逻辑的知识表示,不存在 含糊不清的定义1 1 7 j 。 规则引擎的核心结构如图2 1 所示。 in f e r e n c e 厂、 e n g i n e 、 、r e t e o o l e a p s )、 p r o du c t i o n p a t t e r n w o r k i n g m a t c h e r m e m o r ym e m o r y 、一一一 、 r ( r u l e s )( f a c t s ) a g e n d a 一 图2 - 1 规则引擎的核心结构 如图所示,规则引擎的核心是一个模式匹配器,通过分别加载参与匹配的事 实和规则采用某种模式匹配算法进行模式匹配,并将结果交予议程执行。 2 2 2 规则引擎的特点 我们可以通过对比规则引擎和其他相关解决方案来解答何时应该使用规则 引擎和何时不应该使用规则引擎的问题。解释的过程就等同于介绍了规则引擎的 特点。 规则引擎的优点【7 】 f t ) 声明式编程 规则引擎中,只需描述做什么而不用关心如何去做,这将更容易对复杂问题 进行表述,通过规则引擎运行得到验证。 b ) 数据和逻辑分离 第二章相关理论和技术研究 数据保存在系统对象中,逻辑保存在规则中,从根本上打破面向对象系统中 将数据和逻辑耦合起来的局面,使得当逻辑发生改变时更容易被维护。 c ) 速度和可测量性 r e t e 算法、l e a p s 算法以及由其衍生出来的优化算法,使得系统数据对象的 匹配十分高效。规则引擎甚至能够存储之前的匹配,当数据不完全改变时,这种 高效率更为明显,而数据不完全变更是最常见的情况。 d ) 知识集中化 通过使用规则,将建立一个可执行的规则库。规则库代表着现实中业务策略 的唯一对应,成为企业的一个知识库,可以为以后其他系统的开发打下基础。理 想状态下,精心设计且可读性高的规则甚至可以直接当作文档使用。 e ) 解释机制 通过将规则引擎的决断与决断的原因一起记录下来,规则系统提供了良好的 解释机制”。用户可以通过分析这些记录,辅助改进今后的决策。 何时应该使用规则引擎 对这个问题的最简短回答是:没有令人满意的传统的程序设计方法能够解决 这个问题。对没有传统解决方法的解释如下:对于传统方法来说,问题需要的精 确度太高,问题不复杂,但是没有稳定的方案去建立;问题超越了任何有明显运 算法则的方案,问题本身很复杂,问题本身没有一个准确的定论;业务逻辑经常 发生变化,逻辑本身是简单的,但是规则经常变化;业务专家不是技术人员,他 们很熟悉业务规则和流程,但不了解软件技术等情况。 何时不应该使用规则引擎 规则引擎只是一个复杂的应用或者方法中的一部分,它不是用于规则的工作 流引擎或者进程管理工具,对特定的工作要使用恰当的工具。因为规则引擎是动 态的,动态意味着规则可以像数据一样保存、管理和更新。他们通常被看作发布 软件系统的一种解决方案。因此,你应该优先考虑使用更简单的数据驱动设计或 者带有能够在数据库中管理并能够动态更新的脚本流程引擎。 对比其它解决方案 通过控制数据表中保存的元数据来影响应用的行为的数据驱动系统在一定 控制范围内时也能够很好的工作。但是当超过了允许范围的行为太多这将很快失 控或者导致应用停滞不前。 通常为工作流的流程引擎允许你使用绘图或编程的方式描述过程步骤,这些 步骤也能够带有包含简单规则的策略决策点。流程引擎和规则通常能够很好的在 一起工作,它们之间并不矛盾。 脚本引擎下你能够很简单的开始实现规则并迅速得到反馈。但使用脚本引擎 第二章相关理论和技术研究 开发的程序将被牢牢绑定在脚本上,哪里存在规则,就必须直接调用。这导致未 来维护更加困难,因为脚本趋向于越来越复杂。 2 2 3 规则引擎的工作原理 规则引擎的基本组成结构及交互如图2 - 2 所示: r u l ee n g i n ec o r e b a s k e 辟厦州:兰羔:! ! c o n f li c t s t r a t e g y r u l e e x e c u t i o n w o r k i n gm e m o r y r u l ee n g i n ea p ! 图2 - 2 规则引擎基本组成结构及交互图 规则引擎主要由规则库( r u l eb a s e ) 、- i - 作内存( w o r k i n gm e m o r y ) 、模式 匹配器( r u l ee x e c u t i o n ) 、议程( a g e n d a ) 、冲突解决策略( c o n f l i c ts t r a t e g y ) 、 规则执行器( r u l ee x e c u t i o n ) 和规则引擎a p i ( r u l ee n g i n ea p i ) 等组成。 各组成部分的功能简介如下【1 7 】: 规则库( r u l eb a s e ) :存放系统使用的所有规则的集合容器,它代表了 业务逻辑,是最核心的内容之一。 工作内存( w o r k i n gm e m o r y ) :存放所有加载到规则引擎中的事实对象的 内存空间,它也由规则引擎进行管理。 规则匹配器( p a t t e r nm a t c h e r ) :负责从规则库加载用户指定的规则子 集和从工作内存中加载用户指定的实施对象,通过匹配算法进行逻辑推理,得到 一个对象的属性值与规则的条件部分相匹配的子集。并将此规则子集交给议程进 行下一步操作。 议程( a g e n d a ) :通过冲突解决策略对从规则匹配器传来的规则子集进行 冲突处理,决定匹配的规则是否执行以及执行顺序,将最后结果交给规则执行器 执行规则的结论部分。 冲突解决策略( c o n f li c ts t r a t e g y ) :为议程提供指定的冲突解决方案。 规则执行器( r u l ee x e c u t i o n ) :执行议程传来的规则的结论部分。 规则引擎a p i ( r u l ee n g i n ea p i ) :用户与规则引擎进行交互的接口部 分,包括了操作规则引擎的方法调用。 第二章相关理论和技术研究 用户为了使用规则引擎,首先需要为其提供业务对象( f a c t 事实部分) 和 编写业务逻辑( r u l e 规则部分) 。在具体执行一个操作时,用户通过规则引擎a p i 指定参与的对象和规则子集,规则引擎将它们分别从规则库和工作内存中加载到 模式匹配器中,执行高效的规则匹配算法,匹配对象属性和规则的条件,得到一 个符合条件的规则子集。该子集被送入议程中,对存在冲突的规则子集,议程通 过调用用户通过规则引擎a p i 指定的冲突解决策略或使用默认冲突解决策略,决 定每条规则是否执行,以及其执行顺序。由于规则的执行部分可能改变对象属性 而使得有些规则失效同时使得新的规则满足条件得到激活,使得议程中的待执行 规则得到更新。规则引擎支持这种动态的规则匹配执行链,而整个过程完全由工 作内存中的数据对象来驱动,最大程度上简化了用户的工作复杂度。用户也可以 通过设定规则引擎的匹配方式为静态模式,即不进行动态规则更新。这种方式下, 可以提高规则系统的执行预见性,但同时会提高规则库设计的复杂性。 2 2 4 规则引擎的模式匹配算法 将新的或已存在的事实与规则进行匹配的过程被称为模式匹配,这个过程由 推理机完成。推理机使用的用于模式匹配的算法有很多,包括:l i n e a r 线性、r e t e 网状、l e a p s 叶状等。l i n e a r 是个非常新的算法,还处于实验状态。1 9 8 2 年美 国卡内基梅隆大学的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 e t e 算法还针对规则的结构相似性进行优化。当若干个规则包含相似的模 式时,r e t e 算法将其公共部分单独计算来提高效率,而不用进行多次重复计算。 总体来说,r e t e 算法的优化措施都是针对匹配速度进行的,在减少时间消 第二章相关理论和技术研究 耗的同时,由于需要保存各种状态值,会增加内存的消耗。 2 2 5 规则引擎的推理执行方法 规则引擎有两种推理执行方法一正向推理和逆向推理,两种方法都使用的 称为混合式规则引擎。不同的规则引擎最根本的区别在于使用何种推理执行方 法,它是根据需要选择规则引擎的最主要根据。 正向推理是使用事实对象驱动推理过程的。它将事实对象加载到工作内存 中,从规则库中寻找匹配规则,并执行规则的结论部分。结论部分如果产生事实 对象的变化则继续寻找匹配规则,执行新匹配规则。整个过程循环进行到没有新 的变化,得到一个稳定结论为止。 逆向推理和正向推理正好相反。逆向推理从目标开始,在规则库中寻找目标 是否可以直接实现。如果不能,则寻找能够使目标实现的子目标。整个过程循环 进行到目标实现或者不能获得更多的子目标,目标无法实现为止。 2 2 6d r o o l s 规则引擎 d r o o l s 规则引擎是由j b o s s 开发的优秀的开源规则引擎,也称作j b o s sr u l e s , 是开源规则引擎中使用最广的产品之一。除具有一般规则引擎的优点外,还具有 如下特点: 匹配算法的优化:d r o o l s 使用优化的r e t e 算法进行模式匹配,称为 r e t e o o 算法,表明其对面向对象的支持和优化。 工具集成:d r o o l s 提供了对e c l i p s e 等i d e 的支持,方便开发。 易懂的规则:d r o o l s 支持使用非常接近自然语言的规则定义,使得规则 本身易读易懂。 决策表支持:d r o o l s 可以直接读取使用e x c e l 表格编辑的决策表,生成 规则文件。 b r m s ( 业务规则管理系统) :d r o o l s 官方提供了一个简单的基于w e b 的b r m s ,实现简单的规则管理可视化操作。 d r o o l s 使用正向推理,这是适应大部分应用的推理方式。 d r o o l s 提供了强大的用户a p i ,操作简单。又因为它是开源的,用户可 以方便得根据自身需要对其底层代码进行修改优化。 综合以上原因,本文选择d r o o l s 作为系统的规则引擎进行开发。 第二章相关理论和技术研究 2 3 规则冲突 2 3 1 规则冲突的概念和产生原因 简单的说,当特定事实对象参与模式匹配的过程中,从规则库中得到了多条 匹配规则,且这些规则的不同执行顺序将影响最终结果,但现有信息尚无法明确 规则的执行顺序时,就称为产生了规则冲突【l 5 1 。 规则冲突的产生根本上源自规则库的设计和变更管理。规则本身是一个逻辑 系统,实现逻辑的完备性和一致性本身就是件很复杂的事,程序员设计规则库时 很难真正做到。初始设计的规则库,是由程序员根据业务专家的自然语言描述进 行设计,自然语言本身的冗余性和多义性也可能导致程序员设计出现漏洞。在系 统运行过程中,规则的更改变化,很可能破坏规则库的逻辑完备性和一致性,而 产生规则冲突。某些系统提供了相应的规则管理系统,修改规则的操作对系统规 则不熟悉或者不够专业将极大增加规则变更导致破坏规则库逻辑完备性和一致 性的可能。 2 3 2 规则冲突的解决办法 规则冲突设计到整个规则库的逻辑完备性和一致性问题。为了避开这个复杂 问题,避免对系统效率造成过大影响,现有的规则冲突解决办法都仅针对规则匹 配执行本身,给用户提供自己决定冲突规则执行顺序的方法。现有的规则冲突解 决方法并不能完美解决问题,这也是规则引擎以后需要发展改进的部分。 常见的解决方法列举如下【1 7 j : 依照规则存储顺序执行,不处理也应该算是一种解决方法。 根据规则定义的优先级高低执行,此方法简单易行,但对规则的编制者 要求较高。 优先执行内容较具体的规则,即最长匹配策略。具体的规则作为特例规 则理应具有较高优先级。解决范围有限,因此通常配合其它方法使用,对执行效 率有较大影响。 先入先出策略,即对规则增加时间标签,越新的规则越优先执行。简单 易行,但不是每个系统都能使用它得到预想的结果,通用性有限。 元知识,就是规则的规则。对规则的执行定义总体原则,能够提高处理 效率,但无法细致到具体问题的解决,通常配合其他方法使用。 总结上述方法,最为简单实用的是根据优先级执行,选用的d r o o l s 规则引 擎提供了对此策略的支持。本文实现的规则管理模块拥有自己的特点,将使用自 第二章相关理论和技术研究 己定义的规则冲突解决办法,后文将有介绍。 2 4 本章小结 本章介绍了系统开发相关的理论知识和技术背景,对后续的设计实现提供了 有力的理论根据和技术支持。基于规则的开发和规则引擎仍计算机应用中较新的 领域,希望较为详尽的介绍能对读者有所启发。 第三章医疗保险实验系统的总体设计 3 1 项目背景 第三章医疗保险实验系统的总体设计 对于医疗保险这个词,大多数人并不陌生。随着我国法律体制和社会保障制 度的日益完善,医疗保险和越来越多的人拉近了距离。本着组织全社会力量,保 障人民群众医疗支付能力,解决看病难等实际问题的思想,实行医疗保险对保障 群众利益,解决群众具体生活困难有着举足轻重的意义。全民参保既是一种愿望, 也是医疗保险发展的趋势。 按照建立社会主义市场经济体制的需要和配套推进国有企业改革的要求,根 据现阶段我国社会主义初级阶段的基本国情,以基本保障、广泛覆盖、双方负担、 统账结合作为建立城镇职工基本医疗保险制度的基本思路。九十年代中后期,作 为我国国有企业改革的一项举措,医疗保险得以正式推广实施,相关规章制度还 处于起步阶段。各地方根据自己地方情况分别制定和执行医疗保险相关法规。通 过发现现实执行中的问题和不足,医疗保险的相关法律法规也在不断更新完善 中。当前医疗保险针对的对象主要为国家机关、事业单位、社会团体、民办非企 业单位、城镇企业及其职工和退休人员。随着近期新的医药卫生体制改革方案的 正式面世,其目标“基本医疗保障制度全面覆盖城乡居民,3 年内城镇职工基本 医疗保险、城镇居民基本医疗保险和新型合作医疗参保( 合) 率均达到9 0 以上” 可望实现。“实现全民医疗保险是历史性进步”。 医疗保险实际操作流程为:由用人单位和职工个人共同缴纳医疗保险费,将 统筹的资金以一定比例分别建立社会保障统筹基金和个人医疗保险账户基金。职 工个人需要医疗消费时,将根据医疗保险相关规定按照一定比例分别从个人医疗 保险账户和社会保障基金中报销费用,并由医疗保险经办机构负责结算。医疗保 险由基本医疗保险、门( 急) 诊大额医疗费补助、大额医疗费救助、补充医疗保 险和国家公务员医疗补助等部分组成,既保证一般看病就医的费用,针对大额费 用进行额外救助,又针对特殊人群给予特殊照顾。 由于医疗保险涉及的企事业单位和个人的类型繁多,我国的医疗保险尚未成 熟,医疗保险的条款内容繁杂,各省市情况又不尽相同,而且其内容会根据实际 情况处于不断调整和完善中。正如前文中提到的,在实际执行中,需要大量熟悉 相关法律法规条款的专业人员人工地对不同情况进行分析处理,并及时了解法律 第三章医疗保险实验系统的总体设计 法规条款的变更,进行相应调整,处理过程繁琐费时且极易出错。一般百姓对医 疗保险的具体内容更是只知皮毛,无法及时准确得了解自己的权利和义务。而通 过引入计算机技术使用一般开发方法实现的医疗保险系统面对频繁变更的需求 也力不从心,很难达到预期的效果。 为了研究基于规则开发和规则引擎相关技术,作为一种尝试,本文使用基于 规则的开发方法,引入d r o o l s 规则引擎,实现医疗保险查询系统。具体内容包 括以下三个方面:通过实际开发,熟悉规则引擎开发的详细过程,实现医疗保险 查询系统,为一般百姓提供相关查询服务;针对目前尚难以完美解决的规则冲突 问题,在本系统中提出一种新的解决思想和方案,降低规则冲突检测和处理的复 杂度,从而提高
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第5课 做一次电影市场分析说课稿-2025-2026学年初中信息技术粤高教版2018七年级下册-粤高教版2018
- 2025商业合作合同书范本
- 2025企业违约、强制解雇、裁员均触犯合同法规定
- 2025二手简单装修购房合同书
- 2024-2025学年高中历史 第四单元 王安石变法 第2课 王安石变法的主要内容(2)教学说课稿 新人教版选修1
- 4.2 设计制作用集成电路制作收音机说课稿-2025-2026学年高中物理上海科教版选修2-1-沪教版2007
- 绍兴事业单位笔试真题2025
- 2025【合同范本】建筑材料采购合同范本
- 2025退休人员劳务合同模板
- 2025博骜丽景春天项目商品房销售代理合同
- 半导体车间安全培训课件
- 2025-2030中国聚酯TPU薄膜行业运营态势与前景动态预测报告
- 慢性结肠炎的诊断治疗讲课件
- pos机收款管理制度
- 公司电瓶车车棚管理制度
- 儿童游乐园活动方案
- 朗格汉斯细胞病诊疗研究进展
- 2025-2030中国钙钛矿光伏产业运行态势展望与投资前景规模研究研究报告
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- 理性思维的重要性试题及答案
- 2024江苏苏州市常熟农商银行网络金融部招聘4人笔试历年典型考题及考点剖析附带答案详解
评论
0/150
提交评论