收藏 分享(赏)

规则引擎概况20150519.pptx

上传人:天天快乐 文档编号:592515 上传时间:2018-04-13 格式:PPTX 页数:34 大小:1.42MB
下载 相关 举报
规则引擎概况20150519.pptx_第1页
第1页 / 共34页
规则引擎概况20150519.pptx_第2页
第2页 / 共34页
规则引擎概况20150519.pptx_第3页
第3页 / 共34页
规则引擎概况20150519.pptx_第4页
第4页 / 共34页
规则引擎概况20150519.pptx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、规则引擎概况,2015.05.19,规则引擎简介,1规则引擎的历史 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。2应用背景编辑企业级管理者对企业IT系统的开发有着如下的要求:1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。3.为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。,规则引擎简介,3产品优点编辑使用规则引擎可以

2、通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本,其优点如下: 分离商业决策者的商业决策逻辑和应用开发者的技术决策; 能有效的提高实现复杂逻辑的代码的可维护性; 在开发期间或部署后修复代码缺陷; 应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内; 符合组织对敏捷或迭代开发过程的使用;4代表企业编辑大多数规则引擎都支持规则的次序和规则冲突检验,支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。目前业内有多个规则引擎可供使用,其中包括商业和开放源码选择。开源的代表是Drools,商业的代表是VisualRules ,iLog,是否开源的比较,开源规则引擎,JBo

3、ss DroolsMandarax OpenRules JEOPS InfoSapient Roolie Apache Camel,商业规则引擎,Ilog JrulesOracle Business RulesVisual Rules Jess(可研究,商用收费),开源业务规则引擎入门介绍,1.1 现状在很多行业应用中比如银行、保险领域,业务规则往往非常复杂,并且规则处于不断更新变化中,而现有很多系统做法基本上都是将业务规则绑定在程序代码中。1.2 问题主要存在的问题有以下几个方面:1) 当业务规则变更时,对应的代码也得跟着更改,每次即使是小的变更都需要经历开发、测试验证上线等过程,变更成本比

4、较大。2) 长时间系统变得越来越难以维护。3) 开发团队一般是由一个熟悉业务的BA(业务分析人员)和若干个熟悉技术的开发人员组成,开发人员对业务规则的把握能力远不及BA,但实际上却承担了将业务规则准确无误实现的重任。4) 系统僵化,新需求插入困难。5) 新需求上线周期较长。,开源业务规则引擎入门介绍,1.3 解决方案能否让我们的业务系统更灵活一点呢?思路:将业务规则从技术实现中提取出来,实现技术和业务分离,开发人员处理 技术、业务分析人员定义业务规则,各自做自己所擅长的事情。方案:目前已经有比较成熟的开源产品支持,这就是本文所要介绍的Drools,我们将业务规则定义在Database或者BRM

5、S(Business Rule Management System)中,通过管理DB或者BRMS实现业务逻辑的动态改变。1.4 适用情景什么时候应该使用规则引擎?虽然规则引擎能解决我们的许多问题,但我们还需要认真考虑一下规则引擎对我们的项目本身是否是合适的。需要关注的点有:我的应用程序有多复杂?我的应用的生命周期有多久?对于那些只是把数据从数据库中传入传出,并不做更多事情的应用程序,最好不要使用规则引擎。但是,当在Java中有一定量的商业逻辑处理的话,可以考虑规则引擎的使用。这是因为很多应用随着时间的推移越来越复杂,而规则引擎可以让你更轻松应对这一切。如果我们应用的生命周期很短,也没有必要使用

6、规则引擎,使用规则引擎将会在中长期得到好处。 我的应用需要改变吗?这个答案一般情况下是肯定的,“这世界唯一不变的只有变化”,我们需求也是这样的,无论是在开发过程中或是在开发完成以后,规则引擎能从频繁变化的需求中获得好处。,开源业务规则引擎入门介绍,2 什么是规则引擎规则引擎是基于规则的专家系统的核心部分,主要由三部分组成:规则库(Knowledge base)+Working Memory(Fact base)+推理机(规则引擎),规则引擎根据既定事实和知识库按照一定的算法执行推理逻辑得到正确的结果。3 Drools简介Drools 是一个基于Charles Forgys的RETE算法的,易于

7、访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师人员或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。,4 竞争产品比较与Drools功能类似的同类开源产品主要有:OpenRules、OpenLexicon等,商业产品功能比较强也比较贵,这里不做比较,主要差别如下表:,JBoss Drools,Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务

8、规则。JBoss Rules 的前身是Codehaus的一个开源项目叫Drools。最近被纳入JBoss门下,更名为JBoss Rules,成为了JBoss应用服务器的规则引擎。Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。具有了OO接口的RETE,使得商业规则有了更自然的表达。Drools的用XML的、 节点表达If-Then句式,而里面可以嵌入上述语言的代码作为判断语句和执行语句。其中Java代码会使用Antlr进行解释,而Groovy和Python本身就是脚本语言,可以直接调用。Drools的聪明之处在于,用XML节点来规范If-Then

9、句式和事实的定义,使引擎干起活来很舒服。而使用Java,Groovy等原生语言来做判断和执行语句,让程序员很容易过渡、移植,学习曲线很低。,议程,什么是规则引擎?Drools规则引擎介绍信用卡申请实例介绍Drools实现信用卡申请规则编写客户端测试信用卡申请规则,10,JBoss Drools,什么是规则引擎?,规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来。规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则、并根据业务规则做出相应的决策。,11,引入规则引擎后带来的好处:实现业务逻辑与业务规则的分离,实现业务规则的集中管理可以动态修改

10、业务规则,从而快速响应需求变更使业务分析人员也可以参与编辑、维护系统的业务规则使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单,JBoss Drools,Drools规则引擎介绍,Drools是Jboss公司旗下一款开源的规则引擎,它完整的实现了Rete 算法;提供了强大的Eclipse Plugin开发支持; 通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析人员也可以看懂业务规则代码。最新版本Drools5提供了基于WEB的BRMSGuvnor,Guvnor提供了规则管理的知识库,通过它可以实现规则的版

11、本控制,及规则的在线修改与编译,使得开发人员和系统管理人员可以在线管理业务规则。,12,Eclipse Plugin版规则设计器,Drools的Guvnor,JBoss Drools,信用卡申请实例,用户填写申请的个人信息。然后提交到系统进行初审。初审的职责是通过已有的规则对用户信息合法性和真实性进行检查。对于合法的用户提交到信用卡发放部门,使用规则来决定要发放的信用卡额度等信息。通知申请人申请结果,13,申请流程图,信息提交,检查通过,检查不通过,发送通知,JBoss Drools,用户需要输入的个人信息,用户需要输入的信息包括:姓名、性别、年龄、学历、电话、所在公司、职位、月收入、是否有房

12、、是否有车、是否有信用卡等。,14,点击“申请”按钮将申请信息提交到后台,后台启动审批流程,通过规则先对信息的合法性进行验证,对于验证合格申请系统将调用相关规则发放相关的信用卡。,JBoss Drools,用户信息合法性检查规则,15,申请人信息提交到系统后,首先调用这些规则进行验证,只有这些规则全部通过,才能进入发放信用卡的流程,否则申请结果就是不通过。,JBoss Drools,合法用户的信用卡发放规则,16,以上5条规则为验证通过的用户发放信用卡时使用,主要是用来决定信用卡的发放额度,JBoss Drools,Drools实现信用卡申请规则,采用Drools规则引擎来计算复杂的信用卡审批

13、与发放规则通过Drools提供的BRMSGuvnor实现规则的管理与动态更新通过Drools提供的RuleFlow(规则流)实现对信用卡审批规则的编排与执行,17,系统架构,JBoss Drools,Drools实现的信用卡自动审批流程,“检查申请人信息是否合法”:用来存放检查申请人信息是否合法的四条规则,对申请人信息进行合法性检查。“判断是否合法”:判断当前申请人信息是否合法,如果合法那么将选择“合法”线路,否则选择“非法”线路。“合法申请人信用卡发放”:存放发放信用卡的五条规则,对申请人的信息进行检查,从而为申请人提供合适的信用卡额度。两个结束节点分别用来结束合法与非法的信用卡申请信息。,

14、18,利用Drools提供的Rule Flow设计的信用卡审批流程,该流程的主要作用是用来对信用卡的合法性检查规则及信用卡发放规则的执行顺序进行编排。,JBoss Drools,Drools实现的用户信息合法性检查规则,点击查看用户信息合法性检查规则的完整源文件,19,/*如果申请人既没房也没车,同时学历为大专及以下,并且月薪少于5000,那么不通过。*/rule 检查学历与薪水1ruleflow-group applychecklock-on-active truesalience 1whenCurrent user-degree is 1-has car is false-has hous

15、e is false-salary is less then 5000then So current user apply is invalidend/*如果申请人既没房也没车,同时学历为大专或本科,并且月薪少于3000,那么不通过。*/rule 检查学历与薪水2ruleflow-group applychecklock-on-active truesalience 2whenCurrent user-has car is false-has house is false-salary is less then 3000-current user degree is 2 or 3then So

16、 current user apply is invalidEnd,JBoss Drools,Drools实现的合法用户的信用卡发放规则,/*如果申请人有房有车,那么发放的信用卡信用额度为15000。*/rule 规则1salience 1ruleflow-group creditcardpaymentlock-on-active truewhenCurrent user-has car is true-has house is truethen Payment credit card and credit limit is 15000end/*月收入在20000以上,那么发放的信用卡信用额度

17、为15000。*/rule 规则2salience 2ruleflow-group creditcardpaymentlock-on-active truewhenCurrent user-salary is greate then 20000then Payment credit card and credit limit is 15000End,20,点击查看信用发放规则完整源文件,JBoss Drools,将相关规则文件部署到Guvnor,21,申请人信息合法性检查规则在Guvnor里查看的效果,在Guvnor里查看信用卡审批的规则流程图,可以将编写好的信用卡申请规则及编排规则执行的规则

18、流文件一起发布到Guvnor,通过Guvnor可以实现对规则的管理与动态编译,以快速的响应业务变化需求。通过使用Guvnor提供的Eclipse-plugin可以将规则文件直接部署到Guvnor当中。,JBoss Drools,编写客户端测试信用卡申请规则,为了可以更加真实的反映Drools的使用方法,我们用一个B/S架构的应用来作为规则调用的客户端。Drools的客户端采用Dorado实现,通过Dorado客户端提供申请人申请信息,再这些信息交给Drools进行合法性检查,对于合法的申请再进行信用卡的发放,最将结果返回给Dorado。,22,Dorado客户端调用规则引擎进行信用卡申请,JB

19、oss Drools,Mandarax,Mandarax 基于反向推理(归纳法)。能够较容易地实现多个数据源的集成。例如,数据库记录能方便地集成为事实集(facts sets),reflection用来集成对象模型中的功能。目前不支持JSR 94。JSR-94是Java规则引擎API的Java规范请求。它由Java Community Process (JCP)制定。定义了规则引擎的Java运行时API,使规则引擎可以通过简单的API被Java平台访问。这个标准提供了JSR-94的综览和如何让商业规则技术和Java应用程序结合运行。同时它也提供了开发基于规则的应用程序的示例代码。,OpenRu

20、les,OpenRules是公司提供了一个通用的业务规则和决策管理系统(BRDMS),它允许您使用上述组件和常用软件,配置自己的决策管理系统。 OpenRules自带的方法和成熟的开源工具,使业务分析师能够创建一个企业级的业务规则库。这样的存储库可在整个企业中作为与复杂的业务逻辑各种决策服务的基础。OpenRules客户创造和利用MSExcel电子或OpenOffice提供熟悉的图形界面维护自己的统治库。被集成与谷歌Docs,OpenRules支持协作规则管理。使用标准工具,为客户提供了方便地访问非常强大的功能,包括编辑,搜索和整合能力。OpenRules项目可能被部署为普通的Java程序,如

21、Web服务或云。它们可以自然地融入基于Java或.NET现有软件的基础设施。提供了一个非常详细的文档和多个例子。OpenRules使得规则为基础的系统,不仅更便宜,更重要的是,更容易开发和管理,以及更可持续。从价值数十亿的公司,以儿童医院和创新的初创企业,OpenRules客户利用他们熟悉流行的工具如MS Excel中,谷歌文档,和Eclipse IDE,以有效地降低他们的学习曲线。,OpenRules,OpenRules提供Decision Tables快速地加入应用软件,JBoss Rules对于专家系统来说是非常好的,如果开发业务事物中的UseCase,客户或者合作伙伴集成的软件,则Op

22、enLexicon比较合适。官网为:http:/ Java Embedded Object Production System)是一个基于Java的演绎法(Forward-Chaining)规则引擎.这个规则引擎被用于在Java 应用服务器,Java客户端程序,和Servlets中通过规则来提高它们的商业处理能力.,InfoSapient,InfoSapient是一个开源的,普通许可证0.5,Java的1.2及以上,计划为方便表达,执行和业务规则maintenence在公司内。查看InfoSapient在SourceForge项目页面在这里: - 当然,这是用来维持servlet和框架之间的状

23、态复合材料 - 游客战略正面工厂方法观察员迭代器测试的应用程序服务器使用Apache Tomcat和IBM WebSphere 3.5高级应用服务器InfoSapient已通过测试成功。,Roolie,一个简单的Java规则引擎Roolie是一个非常简单的Java规则引擎(非JSR94),使用您在Java中创建规则。只需创建你的基本规则,实行单一的“通行证”的方法对每个,然后把它们结合在一起在一个XML文件来创建更复杂的规则。产品特点简单的Java规则EnginePure的Java6 - 否其他DependenciesNon-JSR94(这是一个功能!)链中的规则一起在一个XML文件来创建复杂

24、的rulesNo学习曲线 - 用Java编写规则和实施一个methodUses短路和/或逻辑评估为高performanceUnlike JSR94规则时,订货事宜!把简单的规则向顶部增加performanceCritical注:的OR-ing的规则定义规则周围创建了一个隐含的括号,Apache Camel,Apache Camel 是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了一个基于POJO的 企业应用模式(Enterprise Integration Patterns)的实现,你可以采用其异常强大且十分易用的API (可以说是一种Java的领域定义语言 Domain Specif

25、ic Language)来配置其路由或者中介的规则。 通过这种领域定义语言,你可以在你的IDE中用简单的Java Code就可以写出一个类型安全并具有一定智能的规则描述文件。这与那种复杂的XML配置相比极大简化了规则定义开发。 当然ApacheCamel也提供了一个对Spring 配置文件的支持。ApacheCamel采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有 HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API。 这些模块是采用可插拔的方式进行工作的。Apache Camel的核心十分小巧你可以

26、很容易地将其集成在各种Java应用中。Apache Camel是Apache基金会下的一个开源项目,它是一个基于规则路由和中介引擎,提供企业集成模式的Java对象的实现,通过应用程序接口(或称为陈述式的Java领域特定语言(DSL)来配置路由和中介的规则。领域特定语言意味着Apache Camel支持你在的集成开发工具中使用平常的,类型安全的,可自动补全的Java代码来编写路由规则,而不需要大量的XML配置文件。同时,也支持在Spring中使用XML配置定义路由和中介规则。,Apache Camel,骆驼,使您能够在各种领域特定语言,其中包括一个基于Java的API流利,Spring或蓝图XM

27、L配置文件,以及斯卡拉DSL的定义路由和调解规则。这意味着你的智能完成路由规则在IDE中,无论是在Java中,斯卡拉或XML编辑器。Apache的骆驼使用URI直接与任何一种ofTransport或消息模型的工作,如HTTP,ActiveMQ的,JMS,JBI,SCA,MINA或CXF,以及pluggableComponents和数据格式选项。 Apache的骆驼是一个小型图书馆以最小的依赖,便于嵌入在任何Java应用程序。阿帕奇骆驼让你用相同的API工作无论哪种ofTransport使用 - 所以要学会API的一次,你可以与所有提供开箱即用的组件进行交互。Apache的骆驼提供了豆绑定的支持

28、,并与流行的框架,例如asSpring,蓝图和吉斯无缝集成。骆驼也有单元测试你的路由的广泛支持。下面的项目可以利用Apache的骆驼作为一个路由和中介引擎:Apache的ServiceMix的 - 一个流行的分布式开源ESB和JBI containerApache ActiveMQ的 - 一个成熟的,广泛使用的开源消息brokerApache CXF - 智能网络服务套件(JAX-WS和JAX-RS)的Apache Karaf - 一个小型的OSGi运行时根据其应用可以deployedApache MINA - 高性能NIO驱动的网络框架,Oracle Business Rules,Oracl

29、e Business Rules 是一个高性能的轻型业务规则产品,它能满足敏捷性、业务控制 和透明性方面的需求。它是融合中间件系列的组成部分,可以跨整个 Oracle SOA Suite 和 BPM Suite 体系 进行无缝集成。它还是当前和以后 Oracle 融合中间件和融合应用产品的核心组成部分。Oracle Business Rules 能够提高客户的敏捷性。Oracle Business Rules 是SOA Suite和BPM Suite的组件。需要ORACLE数据库支持,Visual Rules,旗正商业规则定制平台又称Visual Rules Solution(后续介绍用:“V

30、RS”代替“Visual Rules Solution”),是一个基于规则引擎实现的可视化定制业务逻辑的商业规则管理系统,同时又具有快速开发java软件项目的功能。VRS可以在程序外部对软件项目中所涉及的业务逻辑进行单独管理,并且提供多种语言的API接口供外部程序调用。VRS可以集成到现有的软件项目中,将软件中经常容易发生变化的部分,独立出来由规则库进行管理。可以用于直接开发web项目,Visual Rules可以为软件项目生成90%以上的程序代码,节约50%以上的软件开发时间以及减少80%以上的软件维护工作量。VRS是开发B/S结构软件项目的利器,特别适用于快速开发基于J2EE结构的软件项目

31、。其原理是对于J2EE项目,一般其架构分为界面层、业务逻辑层和数据层。VRS提供了数据库管理器,可以生成几乎全部的数据库层代码;提供了规则编辑器可视化快速开发业务逻辑;提供了规则引擎可以动态加载和执行业务逻辑;提供了页面模版编辑器以及页面生成器可以生成大部分界面层代码;提供了在线的业务逻辑管理平台,可以直接供客户(包括非技术人员)直接修改软件项目中实现的业务逻辑。VRS优势在于可以解决了软件开发中一直以来业务逻辑层只能手工书写代码的问题为业务逻辑层的实现提供了采用类自然语言(业务人员可以理解的语言)的可视化开发工具,以及在线方式的业务逻辑编辑工具直供,Visual Rules,旗正VRS是由国家科技部和财政部的创新基金支持,专门针对国内规则引擎市场空白的情况,结合国内项目的特点而开发的一款业务规则管理系统(BRMS)产品。具有全中文配置、学习曲线度低、执行速度快、动态热部署、易集成等特点!VRS以规则库为基础,规则编辑器为规则录入窗口,规则引擎为动力,辅以规则协同管理、远程项目与服务管理、集群规则同步等功能模块。帮助企业打造一套完整的商业规则定制与管理平台。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经济财会 > 贸易

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报