规则引擎解决方案调研报告V1 0讲解

发布 2021-12-24 10:51:28 阅读 5705

中国xxxxxxxx系统 for j2ee

version 1.0

revision history

目录。1. 规则引擎 4

1.1 概述 4

2. 应用方案的一般实现 4

2.1 建立规则集 4

2.2 部署规则集 4

2.3 规则服务接口-jsr94 5

2.4 对规则的计算 5

2.5 规则的过滤 5

2.6 使用计算结果 5

3. 现有的商业解决方案 6

3.1 il新产品6

3.2 操作人员已经显示提单列表 6

4. 其它解决方案 6

4.1 提单和报检单完成对碰 6

5. 评估 6

规则引擎解决方案调研报告

规则引擎是解决可变的商业规则的问题的。

规则引擎(rules engine)的运作机制是在内存中向对象应用一套规则。首先内存使用来自调用对象的输入,例如用户档案请求会话。这样,在任何规则实际激活之前,在内存中就已经有了一份用户档案的内容。

规则只能在一个上下文环境中执行,上下文环境把规则集和内存关联起来。该环境提供了到rules engine的接口,rules engine控制着应用程序的规则部分与内存之间的关系。

内存由生产规则(production rules)负责操作,生产规则包含在规则集里。,依照规则的左半边(left-hand sides,lhs)针对内存中的对象进行计算。如果内存中的对象与lhs中描述的模式匹配,就会触发规则的右半边(right-hand side,rhs)指定的操作。

此外某些操作可能会在内存中加入新的对象。例如,规则 classifier 对用户年龄进行测试,如果 > 45,就在内存中加入一个新的classification 对象。

生产系统的运行,要执行以下操作:

1. 匹配: 估计规则的lhs,判断哪个规则与当前内存中的内容匹配。

2. 冲突解决:选择一个lhs匹配的规则。如果没有规则匹配,就停止解释。

3. 操作: 执行选中规则rhs中指定的动作。

4. 返回第1步。

规则会一直在内存中执行,直到冲突解决集变为0时才停止(也就是没有规则能激活了)。

在rules engine停止之后,规则管理器组件会返回一个对象列表,列表中包含内存中仍然存在的对象。一个可能的场景就是,还剩下一个类型为“classification”或“contentquery”的对象。

rules manager接着对剩下的对象进行迭代,用可选的对象过滤器过滤它们。过滤器可以有选择地忽略某些对象或者对某些对象进行变换。

值得注意的是,存在不同类型的规则引擎,在决定如何应用一种工具之前理解这种工具的用途是极其重要的。当您跨业务规则领域进行调查研究时,您将注意到这些工具可以分为以下几类:

简单业务规则(****** 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。

要使用规则服务(rules service),有几个步骤。首先,必须预先建立规则,然后把规则部署到一个正在运行的规则服务器实例中。接着,规则被计算,而计算结果在返回用户之前,有可能先被过滤。

最后,用户在应用程序**里利用经过规则处理的结果。

一般的应用环境:

j2ee应用环境:

规则集是符合特定模式的规则文件或者规则库。

每个应用程序都与自己的数据实例相关联,这些数据的可以存储于文件,或者数据库系统。这些数据,都能通过数据同步机制进行部署。作为最佳实践,大型的规则应用系统采用数据库存储规则。

规则服务使用数据同步机制(data sync)来把规则集部署到运行服务器。也就是说,用户只需把规则集保存在规则库,规则集就会自动被部署。如果规则库里已经存在相同的规则集,那么数据同步机制会自动检查规则集的变化,规则服务数据库会自动刷新规则集的实例。

这意味着我们可以在服务器运行的时候调整规则,或者对解析错误进行调试。修改规则集之后,无需重新启动服务器。

规则引擎的调用接口可以参照jsr

对规则集进行计算,可以考虑通过以下步骤:

规则引擎初始化,建立“内存”。

规则控件指明要使用哪个规则集,并且还可以进一步指定要对哪个规则进行计算 (默认是全部规则都计算),以及是否过滤计算结果。所有这些参数都可以通过rules控件进行配置,并传递给规则引擎,用于对规则进行计算。

开发人员建立对象,并把对象加入“内存”。示例对象可能是用户的档案、request对象等。 这些参数会作为变量传递给规则控件的evaluate() 方法

通过rulesexecutorcontrol调用规则引擎。

规则引擎根据输入的规则集和输入的对象创建工作区

规则引擎反复触发,根据输入对象的状态和规则条件执行规则。

当规则引擎遇到没有规则可以触发的时候,计算结果和所有的原始输入对象一起存在于内存里。

由于输入对象也是结果的一部分,因此可以根据一个类对结果进行过滤。

假如现在已经有了一个规则,就像前面例子里的简单规则一样。应用程序的目标是输入用户的档案,检查用户的某些属性,根据这些属性来触发一些规则,如果规则的计算结果为真,则初始化一个新的integer对象。然后在页面流(page flow)里,可以使用integer值进行决策。

在规则引擎已经触发完所有规则并完成所有预定工作结束之后,会返回一个 iterator对象,它描述了仍然保留在内存里的所有对象。可能没有必要关注内存里有哪些对象,例如用户档案、request对象等,真正想从结果中得到的,可能只是integer对象。所以我们需要对结果进行过滤。

对象过滤器是一个参数,可以在计算规则时传递给规则。如果使用规则控件,参数在控件的属性里指定。如果直接使用控制管理器 ,参数在 evaluate() 方法的参数中指定。

现在,假设你已经建立了上面的简单规则,用rulesexecutorcontrol计算了规则,而且还过滤了计算结果。那么,就可以在程序中直接使用该结果了。

ilog jrules(商业规则工具) 提供一个软件组件,用户可以用规则来描述他的商业逻辑, 并且可以正确运行这些规则。

10年违法建筑成因与解决方案调研报告

2010年违法建筑成因与解决方案调研报告。近年来,随着经济的快速发展,农村违法建筑也呈现快速发展的势头,并屡禁不止。究其原因,无外乎以下几条 一 利益驱动。一是房价的快速增长,使人们认识到做房子比存钱好,房子的储蓄收益功能远远大于银行储蓄收益功能,不仅升值快,而且能出租收益。二是县城工业园的建设使城...

餐厅解决方案

一 对酒店的看法。我们酒店主要是以客房为龙头,是酒店的利润增长点,要稳定增长,而餐厅起到为客房保驾护航的作用,而现在的餐厅恰恰是我们酒店的软肋,二 目前酒店存在什么问题?该问题如何解决?答,目前酒店主要问题当然是如何做到持平并盈利,那就涉及到大的方面开源节流,在节流已经开始进行并有一定成果,当然还有...

轮胎解决方案

篇一 常见轮胎问题 原因及处理方法。鼓包。车辆的轮胎侧鼓起来一块,看着是有点别扭,但用起来似乎没有影响,而且也没有漏气。鼓包的原因 目前市场上的轿车用真空胎绝大部分是子午线轮胎,胎体帘线一般为1 2层,这种结构为车辆提供了舒适,但负面的是轮胎的强度也相对差些。特别是胎侧部位是一个软肋。从一定的意义上...