为什么不使用Rule Engine?或规则引擎的开销

时间:2013-04-24 12:12:55

标签: rule-engine

我已经阅读了几篇文章,其中讨论了使用规则引擎的用例。其中许多人说你不应该用它来进行工作流管理。

我提到的帖子:

  1. Pros and Cons of Rule Engine
  2. When you should not use the Rule Engine
  3. Guidelines on using Rule Engine
  4. 但我还没有得到任何简单的解释,说明规则引擎在使用时添加到系统的所有开销是什么?

    如果我将它用于工作流程管理怎么办?它会成为记忆的开销吗?

    有人可以专注于此吗?

    我还将介绍我们将使用Rule Engine的场景:

    我们有一个竞价引擎,根据业务分析师的预测,其输入频繁变化。因此,简单来说,我们将对基于规则提供的某些值采取行动。例如:如果业务分析师将价值定为2美元,那么规则引擎将决定要发送给客户的出价值。

3 个答案:

答案 0 :(得分:2)

简而言之:规则引擎用于做出决策;工作流用于运行流程。

您需要一个rues引擎来替换已编译代码中的部分或全部“IF”和“ELSE”,其中“软”逻辑可以在不更改/重新编译主代码的情况下进行更改。您提供规则和数据(称为“事实对象”或“源对象”),引擎根据该规则评估该数据。这是规则引擎的唯一目的。大多数引擎可以将针对您的数据的规则评估的输出返回为True或False,或者调用“action”(代码中的方法)来进一步处理您的数据。

您使用工作流程来运行工厂,仓库或军事设施。工作流程允许您停止传送带并等待事件发生,或者如果老板签名则继续批准过程。等等。通常,工作流在内部使用规则引擎作为其核心的一部分,以决定下一步该做什么。

希望这能澄清一些事情:)

答案 1 :(得分:1)

由于没有标准的规则引擎,并且根据您使用的语言和平台,该实现的实现和后果可能变化很大,因此无法直接回答您的问题。不过,我会尽力为你投光。

规则引擎所做的是提供一种在代码中实现一组条件的方法,或者更重要的是,允许在代码之外设置条件并由其解释,以便其他利益相关者可以改变根据需要制定规则。

您需要查看您要解决的确切问题,您要尝试解决的平台,然后在特定情况下确定规则引擎是否是最佳解决方案。相关问题在这方面提供了一些很好的指导。

请记住,如果您遇到可以通过这种方式解决的问题,或者可以通过其他方式解决问题,则每个解决方案都会产生一些开销 - 一些可能会影响性能,另一些会影响开发时间或可维护性。您需要确定用户对您的系统的重要性,并允许它指导您找到解决方案。

答案 2 :(得分:0)

为了完全披露,我为InRule Technology工作,InRule Technology是一家业务规则管理系统供应商。

在其中一个链接帖子中提到了一个事实,即当您使用任何第三方解决方案时,当然会有开销。规则引擎也不例外。然而,关键是通过仔细规划和建模(1)将传递到规则引擎的对象和数据以及(2)规则本身的复杂性来最大化规则引擎执行的效率。

如果您在代码而不是规则引擎中执行此操作,则开销也不例外。在低端,对象/数据和规则具有中等复杂性,我们将这些分类为短期运行决策,并且如预期的那样,开销最小。随着数据和/或那些规则的复杂性增加,执行时间将增加。但是,就性能而言,我们看到的指标没有出现任何危险信号。