规则引擎算法解决了什么问题?

时间:2010-03-16 20:36:54

标签: algorithm design-patterns

规则引擎算法解决了什么问题? 哪些是推荐的?

5 个答案:

答案 0 :(得分:6)

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

规则引擎算法是如何实现规则匹配和触发的,因此它是一个实现细节,而不是实际解决问题本身。算法可能具有不同的非功能性优势或劣势。规则引擎算法的一个常见示例是Rete Algorithm,在Java规则引擎JESSDrools中使用。

答案 1 :(得分:1)

  • 问题太过于繁琐 传统代码:问题可能并不复杂,但您无法看到构建它的非脆弱方式。

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

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

  • 域专家(或业务分析师)随时可用,但不具备技术性。

取自this site

答案 2 :(得分: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及其变体允许有效处理大型规则集。

规则引擎解决的问题是将规则集的维护与应用程序分开 - 可以重新配置规则而无需重新构建应用程序。虽然(理论上)非技术分析师或中小企业可以自己维护规则集,但实际上需要一点技术悟性才能避免在复杂的规则集中闯入自己 - 如果你不遵守规则引擎则有点无意义没有大规则集。

规则引擎确实闪耀的地方是规则集很大并经常更改,或者它们被构建到打包的应用程序中并用于配置应用程序以支持客户特定的业务规则或工作流触发器。

答案 3 :(得分:0)

规则引擎根据一个或多个输入参数计算决策。

答案 4 :(得分:0)

规则引擎倾向于尝试解决经常变化的问题,或者有时很难快速轻松地定义问题。

它们并不复杂,许多实现都存在严重的性能和扩展挑战。