2010-03-16 258 views

回答

6

规则引擎可以封装业务逻辑,通常以声明方式。这避免了在软件中定制编码业务逻辑的需要。

规则引擎的算法是怎样的规则匹配和触发实现的,所以它的实现细节,而实际解决问题本身。算法可能有不同的非功能优势或劣势。规则引擎算法的常见示例是Rete Algorithm,用于Java规则引擎JESSDrools中。

+0

+1不错的定义 – JohnIdol 2010-03-16 22:01:13

1
  • 的问题仅仅是 传统代码过于繁琐:这个问题可能不是很复杂,但你不能看到它建立的非易碎的方式。

  • 问题是超越了任何明显的算法基于解决方案:这是解决一个复杂的问题,有没有明显的传统解决方案或基本问题还没有完全理解。

  • 逻辑经常变化:逻辑本身可能很简单(但并非必须),但规则经常变化。在很多组织中,软件发布很少,而且规则可以帮助提供合理安全的方式所需和预期的“敏捷性”。

  • 域专家(或业务分析师)是随时可用的,但是非技术性的。

this site

0

采取了规则引擎计算的决定,基于一个或多个输入参数。

0

规则引擎往往试图解决经常变更或有时快速,轻松地定义不清的问题。

它们并不十分复杂,许多实现都表现出严重的性能和扩展性问题。

1

在最低水平,向前链规则引擎可以在大致有以下几种方式构建的规则集(通常是大的规则集):

if (Condition A) {assert (Condition B)} 
if (Condition C) {assert (Condition B)} 
if (Condition B) {do something} 

的条件下也可以有参数:

if (Condition A (X, Y)) {assert (Condition B (X)} 
if (Condition C (X)) {assert (Condition B (X)} 
if (Condition B (X)) {do something with X} 

这些链条可以像你想要的一样深。 Rete algorithm及其变体允许大规则集的高效处理。

规则引擎解决的问题是将规则集的维护与应用程序分离 - 无需重新编译应用程序即可重新配置规则。虽然(理论上)非技术分析师或中小企业能够保持规则集自己,在实践中需要一点技术知识,以避免搬起石头砸自己的脚在一个复杂的规则集 - 和规则引擎是位毫无意义,如果你不没有一个很大的规则集。

如果规则引擎的闪光点就是规则集大且经常变化,或在那里它们被内置到打包的应用程序和用于配置以支持客户的具体业务规则或工作流程触发的应用。