规则引擎解决方案调研报告-V1.0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国XXXXXXXX系统 for J2EE 规则引擎解决方案调研报告
Version 1.0
目录
1.规则引擎4
1.1概述4
2.应用方案的一般实现5
2.1建立规则集7
2.2部署规则集7
2.3规则服务接口-JSR94 7
2.4对规则的计算7
2.5规则的过滤8
2.6使用计算结果8
3.现有的商业解决方案8
3.1ILOG新产品ILOGJRules8
3.2操作人员已经显示提单列表错误!未定义书签。
4.其它解决方案10
4.1提单和报检单完成对碰10
5.评估11
规则引擎解决方案调研报告
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
规则引擎的调用接口可以参照JSR94
2.4 对规则的计算
对规则集进行计算,可以考虑通过以下步骤:
•规则引擎初始化,建立“内存”。
•规则控件指明要使用哪个规则集,并且还可以进一步指定要对哪个规则进行计算(默认是全部规则都计算),以及是否过滤计算结果。所有这些参数都可以通过Rules控件进行配置,并传递给规则引擎,用于对规则进行计算。
•开发人员建立对象,并把对象加入“内存”。示例对象可能是用户的档案、Request对象等。这些参数会作为变量传递给规则控件的evaluate() 方法
•通过RulesExecutorControl调用规则引擎。
•规则引擎根据输入的规则集和输入的对象创建工作区
•规则引擎反复触发,根据输入对象的状态和规则条件执行规则。
•当规则引擎遇到没有规则可以触发的时候,计算结果和所有的原始输入对象一起存在于内存里。
•由于输入对象也是结果的一部分,因此可以根据一个类对结果进行过滤。