3

我已经阅读了几篇讨论使用规则引擎的用例的帖子。他们中的许多人说您不应该将其用于工作流程管理。

我参考的帖子:

  1. 规则引擎的优缺点
  2. 何时不应使用规则引擎
  3. 使用规则引擎的指南

但是我还没有得到任何关于规则引擎在使用时添加到系统的所有开销的简单解释?

如果我将它用于工作流管理怎么办?会不会是内存开销?

有人可以关注一下吗?

我还将介绍我们将使用规则引擎的场景:

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

4

3 回答 3

2

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

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

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

希望这能澄清一点:)

于 2013-04-24T12:46:42.703 回答
1

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

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

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

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

于 2013-04-24T12:23:30.230 回答
0

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

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

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

于 2013-04-26T20:16:16.450 回答