ruleengine (规则引擎学习介绍)

上传人:第*** 文档编号:49174637 上传时间:2018-07-25 格式:PPT 页数:43 大小:302.50KB
返回 下载 相关 举报
ruleengine (规则引擎学习介绍)_第1页
第1页 / 共43页
ruleengine (规则引擎学习介绍)_第2页
第2页 / 共43页
ruleengine (规则引擎学习介绍)_第3页
第3页 / 共43页
ruleengine (规则引擎学习介绍)_第4页
第4页 / 共43页
ruleengine (规则引擎学习介绍)_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《ruleengine (规则引擎学习介绍)》由会员分享,可在线阅读,更多相关《ruleengine (规则引擎学习介绍)(43页珍藏版)》请在金锄头文库上搜索。

1、RuleEngine学习讨论 陈华Java规则引擎与其API (JSR-94)JSR-94规定了规则引擎的Java API,但没有 规定用哪种语言描述规则。现在已经实现 的规则描述语言有JESS、XML和Groovy等 规则引擎产生背景 (1)为提高效率,管理流程必须自动化 (2)市场要求业务规则经常变化,IT系统必 须依据业务规则的变化快速、低成本的更 新 (3)为了快速、低成本的更新,业务人员应 能直接管理IT系统中的规则,不需要程序开 发人员参与 碰到的问题()有些复杂的商业规则很难推导出算 法和抽象出数据模型 ()规则在设计和编码后还在变化,业 务规则往往嵌在系统各处代码中 ,很难维

2、护基于规则的专家系统规则引擎由基于规则的专家系统中的推理 引擎发展而来 专家系统专家系统是人工智能的一个分支 它模仿人类的推理方式,使用试探性的方 法进行推理。并使用人类能理解的术语解 释和证明它的推理结论 专家系统有很多分类 神经网络 基于案例推理和基于规则系统等。 包括三部分 Rule Base(knowledge base) Working Memory(fact base) Inference Engine(推理引擎) 基于规则的专家系统组成 如上图所示 推理引擎包括三部分: Pattern Matcher、Agenda和Execution Engine。 Pattern Matche

3、r何时执行哪个规则; Agenda管理PatternMatcher挑选出来的规 则的执行次序;Execution Engine负责执行 规则和其他动作。 原理推理引擎通过决定哪些规则满足事实或目 标并授予规则优先级,满足事实或目标的 规则被加入议程。 存在两者推理方式:演 绎法(Forward-Chaining正向链)和归纳法 (Backward-Chaining反向链)。演绎法从 一个初始的事实出 发,不断地应用规则得 出结论(或执行指定的动作)。而归纳法 则是从假设出发,不断地寻找符合假设的 事实。 规则引擎 业务规则 业务规则的理论基础是: 设置一个或多个条件,当满足这些条件时 会触发一

4、个或多个操作。 规则引擎 (定义)规则引擎由推理引擎发展而来,是一种嵌 入在应用程序中的组件,实现了将业务决 策从应用程序代码中分离出来,并使用预 定义的语义模块编写业务决策。接受数据 输入,解释业务规则,并根据规则做出业 务决策。 规则引擎的使用方式 规则引擎的程序接口至少包含以下几种 API 加载和卸载规则集的API; 数据操作的API; 引擎执行的API 5个典型的步骤 1创建规则引擎对象 2向引擎中加载规则集或更换规则集 3向引擎提交需要被规则集处理的数据对象 集合 4命令引擎执行 5导出引擎执行结果,从引擎中撤出处理过 的数据 标准一个开放的业务规则引擎应该可以“嵌入”在 应用程序的

5、任何位置,不同位置的规则引 擎可以使用不同的规则集,用于处理不同 的数据对象。 此外,对使用引擎的数 量没有限制。 业务规则引擎架构 规则引擎的推理步骤如下 a. 将初始数据(fact)输入至工作内存(Working Memory) b. 使用Pattern Matcher将规则库(Rules repository)中的规则(rule)和数据(fact)比较 c. 如果执行规则存在冲突(conflict),即同时激 活了多个规则,将冲突的规则放入冲突集合。 d. 解决冲突,将激活的规则按顺序放入Agenda。 e. 执行Agenda中的规则。重复步骤b至e,直到执 行完毕Agenda中的所有规

6、则。 效率问题 任何一个规则引擎都需要很好地解决规则 的推理机制和规则条件匹配的效率问题 当引擎执行时当引擎执行时,会根据规则执行队列中的优先顺 序逐条执行规则执行实例,由于规则的执行部分 可能会改变工作区的数据对象,从而会使队列中 的某些规则执行实例 因为条件改变而失效,必须 从队列中撤销,也可能会激活原来不满足条件的 规则,生成新的规则执行实例进入队列。于是就 产生了一种“动态“的规则执行链,形成 规则的推 理机制。这种规则的“链式“反应完全是由工作区 中的数据驱动的。 规则条件匹配的效率决定了引擎的性能 规则条件匹配的效率决定了引擎的性能, 引擎需要迅速测试工作区中的数据对象, 从加载的

7、规则集中发现符合条件的规则, 生成规则执行实例。1982年美 国卡耐基梅 隆大学的Charles L. Forgy发明了一种叫 Rete算法,很好地解决了这方面的问题。 目前世界顶尖的商用业务规则引擎产品基 本上都使用Rete算法。Rete算法其核心Rete算法其核心思想是将分离的匹配项根 据内容动态构造匹配树,以达到显著降低 计算量的效果 Java规则引擎 目前主流的规则引擎组件多是基于Java和 C+程序语言环境 Java规则引擎商业产品 Java规则引擎商业产品主要有(Jess不是开 源项目,它可以免费用于学术研究,但用 于商业用途则要收费)Java规则引擎商业产品主要有 Java规则引

8、擎开源项目JBoss Rules(Drools ) 具有一个易于访问企业策略、易于调整以 及易于管理的开源业务规则引擎,符合业 内标准,速度快、效率高。业务分析师或 审核人员可以利用它轻松查看业务规则, 从而检验是否已编码的规则执行了所需的 业务规则。 Java规则引擎开源项目Mandarax是一个规则引擎的纯Java实现。 它支持多类型的事实和基于反映的规则, 数据库,EJB等等,支持XML标准(RuleML 0.8)。它提供了一个兼容J2EE的使用反向链 接的接口引擎。 JLisa是一个利用java构建商业规则的强大框 架。它实现了JSR94 Rule Engine API。 Java规则

9、引擎开源项目OpenRules OpenRules基于java完全开放源代码的商业 规则管理框架。它有效的利用了MS Excel, Eclipse IDE 和其它java开源类库去构造, 维护,部署,执行不同的复杂商业逻辑的 规则引擎。 Java规则引擎开源项目JEOPS(The Java Embedded Object Production System)是一个基于Java的演绎 法(Forward-Chaining)规则引擎.这个规则引 擎被用于在Java 应用服务器,Java客户端程 序,和Servlets中通过规则来提高它们的商业 处理能力. Java规则引擎开源项目 InfoSapi

10、ent InfoSapient是一个开源的规则引擎.它设计 用来表达,执行和维护在同一个公司中商业 规则.InfoSapient基于纯Java开发,使用到 MVC,Visitor,Strategy,Facade,Factory Method,Observer,Iterator等设计模式. JRuleEngine JRuleEngine基于JSR94规范的java规则引擎 。 Java规则引擎API(JSR-94) ava规则引擎API由javax.rules包定义,是访 问规则引擎的标准企业级API。Java规则引 擎API允许客户程序使用统一的方式和不同 厂商 的规则引擎产品交互,就像使用J

11、DBC 编写独立于厂商访问不同的数据库产品一 样。Java规则引擎API包括创建和管理规则 集合的机制,在Working Memory中添加, 删除和修改对象的机制,以及初始化,重 置和执行规则引擎的机制。 Java规则引擎API体系结构 Java规则引擎API分为两个主要部分: 运行时客户API(the Runtime client API) 规则管理API(the rules administration API) 。 异常与日志 规则引擎API定义了 javax.rules.RuleException作为规则引擎异 常层次的根类.所有其它异常都继承于这个 根类.规则引擎中定义的 异常都是

12、受控制的 异常(checked exceptions),所以捕获异常的 任务就交给了规则引擎。 规则引擎API没有 提供明确的日志机制,但是它建议将Java Logging API用于规则引擎API。 规则语言 JSR 94中没有涉及用来创建规则和动作的 语言.规则语言是规则引擎应用程序的重要 组成部分,所有的业务规则都必须用某种语 言定义并且存储于规则执行集中,从而 规则 引擎可以装载和处理他们。名称及其网址列出如下 Rule Markup language (RuleML) http:/www.ruleml.org/ Simple Rule Markup Language (SRML) h

13、ttp:/xml.coverpages.org/srml.html Business Rules Markup Language (BRML) http:/xml.coverpages.org/brml.html SWRL: A Semantic Web Rule Language Combining OWL and RuleML http:/www.daml.org/2003/11/swrl/ Java规则引擎API使用示例 设置规则引擎 Java规则引擎的管理活动阶段开始于查找 一个合适的javax.rules.RuleServiceProvider 对象,这个对象是应用程序访问规则 引擎

14、 的入口。在J2EE环境中,你可能可以通过 JNDI获得RuleServiceProvider。否则,你可 以使用 javax.rules.RuleServiceProviderManager类 : java codejavax.rules.RuleServiceProviderManager class: String implName = “org.jcp.jsr94.ri.RuleServiceProvider“; Class.forName(implName); RuleServiceProvider serviceProvider = RuleServiceProviderManag

15、er.getRuleServic eProvider(implName); 描述拥有了RuleServiceProvider对象,你就可以获得一个 javax.rules.admin.RuleAdministrator 类。从RuleAdministrator类中, 你可以得到一个RuleExecutionSetProvider,从类名可以知道,它用于 创建 javax.rules.RuleExecutionSets对象。RuleExecutionSet基本上是 一个装入内存的,准备好执行的规则集合。 包javax.rules.admin包括两个不同的RuleExecutionSetProvi

16、der类。 RuleExecutionSetProvider类本身包括了从Serializable对象创建 RuleExecutionSets的方法,因此在规 则引擎位于远程服务器的情况 下,仍然可以使用RuleExecutionSetProvider类,构造器的参数可以通 过RMI来传递。另一个类是 LocalRuleExecutionSetProvider,包含了 其他方法,用于从非Serializable资源(如 java.io.Reader本地文件 )创建RuleExectionSets。假设拥有了一个RuleServiceProvider对象, 你可以从 本地文件rules.xml文件创建一个RuleExectionSet对象。如 以下的代码所示:java codeRuleAdministrator admin = serviceP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号