资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中国XXXXXXXX系统 for J2EE规则引擎处理方案调研汇报Version 1.0Revision HistoryDateVersionDescriptionAuthor4/21/1.0-目录1.规则引擎41.1概述42.应用方案通常实现42.1建立规则集42.2布署规则集42.3规则服务接口JSR9452.4对规则计算52.5规则过滤52.6使用计算结果53.现有商业处理方案63.1新产品63.2操作人员已经显示提单列表64.其它处理方案64.1提单和报检单完成对碰65.评定6规则引擎处理方案调研汇报 1. 规则引擎 规则引擎是处理可变商业规则问题1.1 概述规则引擎(Rules Engine)运作机制是在内存中向对象应用一套规则。首先内存使用来自调用对象输入,比如用户档案请求会话。这么,在任何规则实际激活之前,在内存中就已经有了一份用户档案内容。规则只能在一个上下文环境中实施,上下文环境把规则集和内存关联起来。该环境提供了到Rules Engine接口,Rules Engine控制着应用程序规则部分和内存之间关系。内存由生产规则(production rules)负责操作,生产规则包含在规则集里。,依据规则左半边(left-hand sides,LHS)针对内存中对象进行计算。假如内存中对象和LHS中描述模式匹配,就会触发规则右半边(right-hand side,RHS)指定操作。 另外一些操作可能会在内存中加入新对象。比如,规则 Classifier 对用户年纪进行测试,假如 USER.age 45,就在内存中加入一个新Classification 对象。生产系统运行,要实施以下操作:1. 匹配: 估量规则LHS,判定哪个规则和目前内存中内容匹配。 2. 冲突处理:选择一个LHS匹配规则。假如没有规则匹配,就停止解释。 3. 操作: 实施选中规则RHS中指定动作。 4. 返回第1步。 规则会一直在内存中实施,直到冲突处理集变为0时才停止(也就是没有规则能激活了)。在Rules Engine停止以后,规则管理器组件会返回一个对象列表,列表中包含内存中仍然存在对象。一个可能场景就是,还剩下一个类型为“Classification”或“ContentQuery”对象。Rules Manager接着对剩下对象进行迭代,用可选对象过滤器过滤它们。过滤器能够有选择地忽略一些对象或对一些对象进行变换。1.2 规则引擎分类值得注意是,存在不一样类型规则引擎,在决定怎样应用一个工具之前了解这种工具用途是极其关键。当您跨业务规则领域进行调查研究时,您将注意到这些工具能够分为以下几类: 简单业务规则(simple business rule) 经过一张简化、直观词汇表来表示而且是在应用程序或业务步骤可变性情况下调用一个业务规则。这种规则引擎一个很好例子就是 ilog、Blaze 和 IBM BRBeans。 人工智能规则(artificial intelligence rule) 管理 AI 和数据挖掘(Data Mining)产品中算法行为规则。这种类型规则引擎一个例子就是 DB2 Intelligent Miner 产品。 事件相关规则(event correlation rule) 在事件相关性中用到规则,用于将一套各自独立事件聚合成一个聚合(aggregated)有意义形态。这种类型规则一个很好例子就是 Tivoli Event Console 系统管理产品。 数据为中心规则(data-centric rule) 这些是约束对数据检索和更新规则。这些约束控制着怎样转换数据和谁能够访问数据,并经过加强语法、语义和上下文保留了数据完整性。这种规则引擎一个很好例子就是 Versata。 转换和验证规则(transformation & validation rules) 这些是应用集成或信息集成场景中定义对数据修改规则。这些规则定义数据是怎样修改、净化或验证。提供了这种规则产品包含 WebSphere Business Integration 和 DB2 Warehouse Manager。2. 应用方案通常实现要使用规则服务(Rules Service),有多个步骤。首先,必需预先建立规则,然后把规则布署到一个正在运行规则服务器实例中。接着,规则被计算,而计算结果在返回用户之前,有可能先被过滤。最终,用户在应用程序代码里利用经过规则处理结果。通常应用环境:J2EE应用环境:2.1 建立规则集规则集是符合特定模式规则文件或规则库。2.2 布署规则集每个应用程序全部和自己数据实例相关联,这些数据能够存放于文件,或数据库系统。这些数据,全部能经过数据同时机制进行布署。作为最好实践,大型规则应用系统采取数据库存放规则。规则服务使用数据同时机制(Data Sync)来把规则集布署到运行服务器。也就是说,用户只需把规则集保留在规则库,规则集就会自动被布署。假如规则库里已经存在相同规则集,那么数据同时机制会自动检验规则集改变,规则服务数据库会自动刷新规则集实例。 这意味着我们能够在服务器运行时候调整规则,或对解析错误进行调试。修改规则集以后,无需重新开启服务器。2.3 规则服务接口JSR94规则引擎调用接口能够参考2.4 对规则计算对规则集进行计算,能够考虑经过以下步骤: 规则引擎初始化,建立“内存”。 规则控件指明要使用哪个规则集,而且还能够深入指定要对哪个规则进行计算 (默认是全部规则全部计算),和是否过滤计算结果。全部这些参数全部能够经过Rules控件进行配置,并传输给规则引擎,用于对规则进行计算。 开发人员建立对象,并把对象加入“内存”。示例对象可能是用户档案、Request对象等。 这些参数会作为变量传输给规则控件evaluate() 方法 经过RulesExecutorControl调用规则引擎。 规则引擎依据输入规则集和输入对象创建工作区 规则引擎反复触发,依据输入对象状态和规则条件实施规则。 当规则引擎碰到没有规则能够触发时候,计算结果和全部原始输入对象一起存在于内存里。 因为输入对象也是结果一部分,所以能够依据一个类对结果进行过滤。2.5 规则过滤假如现在已经有了一个规则,就像前面例子里简单规则一样。应用程序目标是输入用户档案,检验用户一些属性,依据这些属性来触发部分规则,假如规则计算结果为真,则初始化一个新Integer对象。然后在页面流(page flow)里,能够使用Integer值进行决议。在规则引擎已经触发完全部规则并完成全部预定工作结束以后,会返回一个 Iterator对象,它描述了仍然保留在内存里全部对象。可能没有必需关注内存里有哪些对象,比如用户档案、Request对象等,真正想从结果中得到,可能只是Integer对象。所以我们需要对结果进行过滤。对象过滤器是一个参数,能够在计算规则时传输给规则。假如使用规则控件,参数在控件属性里指定。假如直接使用控制管理器 ,参数在 evaluate() 方法参数中指定。2.6 使用计算结果现在,假设你已经建立了上面简单规则,用RulesExecutorControl计算了规则,而且还过滤了计算结果。那么,就能够在程序中直接使用该结果了。3. 现有商业处理方案3.1 企业新产品ILOG JRules(商业规则工具) 提供一个软件组件,用户能够用规则来描述她商业逻辑, 而且能够正确运行这些规则。ILOG JRules利用五个功效组件来构建整套业务管理系统。一是规则开发环境,用于完整开发、调试、公布和管理商务规则系统图形环境;二是商务规则库,存 放规则及其相关数据,它是商务规则管理基石,能依据工业标准被扩展;三是商务规则管理,能够实现规则查询、规则历史读取、规则版本控制、规则读写权限 设置和规则状态管理;四是商务规则语言,让用户使用习惯商务语言预定义商务规则;五是规则编辑器,它含有直观友好图形界面,非技术人员能够经过很简 单操作等方法创建或修改商务规则。案例:Resource at 3.2 JESSJess是1995年由美国Sandia国家试验室分布式系统计算组组员Ernest J. Friedman-Hill用Java实现一个经过扩充CLIPS版本。它以CLIPS设计原理为基础进行编写,除继承了CLIPS优点外,还具 有很多自己独特特征,如支持正向和逆向推理,能够在系统运行环境下直接调用Java类库等,这些特点将教授系统开发过程同功效强大Java语言结 合起来,使采取Jess语言开发教授系统含有良好移植性、嵌入性,能够方便地应用到网络上不一样机器中。另外,Java多线程机制使Jess能够和其 她应用程序并发实施,同时机制确保了对共享数据正确操作,经过使用不一样线程完成特定行为,就能够很轻易地实现网络上实时交互行为。现在,Jess 被广泛用于学术、工业、商业等领域,是一个有着宽广发展前景教授系统开发平台。 Jess基础组成和知识表示同大多数教授系统工具一样,Jess关键也是由事实库、规则库、推理机三大部分组成,并采取产生式规则作为基础知识表示模式。在Jess中,事实包含简单事实和对象事实。简单事实就是一个描述事物断言,而对象事实除此之外还封装了方法,能够接收外界信息改变本身特征。这一概 念本身并不是Jess首次提出,ART-IM、CLIPS全部支持这一概念。但Jess表示对象事实方法确实别具一格:它用Java而非系统本身语言 来定义对象。在CLIPS 6.0中,对象事实经过系统本身语句defclass和make-instance来定义,但在Jess中,类定义由Java语言书写,编译经过后即 可动态地加入系统中。用Java虚拟机编译经过后,经过defclass命令将该类加入系统,它就能够实施类似于CLIPS中对类多种操作,如生成它 一个实例、调用它方法等。由此可见,Jess能够方便地调用Java中类库,使用Java中多种数据结构和方法,从而含有其它系统不可比拟优良 嵌入能力。Jess经过模式匹配语言对事实进行操作。在Jess中,模式匹配操作符类型有很多,从能够同任意事实进行匹配单一操作符到只能同满足特定约束值事 实进行匹配复杂操作符。尤其要指出是,Jess中有“unique”条件元素,它告诉系统同该模式匹配事实是惟一。这么,当模式发觉一条事实同它 匹配后,就会停止对事实库检索,在实际应用中,这能够将系统性能提升2030,而CLIPS系统不支持这一条件元素。在Jess中,规则表示形式沿用了CLIPS语法结构,经过对规则前件和后件限定,它能够支持内容丰富模式匹配语言。另外,Jess支持面向过程 编程方法,它提供了部分语句来控制规则后件操作步骤,如使用ifthenelse和whiledo语句,这么它就能很有效地利用面向过程编程 优势。总
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号