我们的系统(异国商品衍生品贸易捕获和风险管理)很快就会重新开发。我听到的一个建议是,将引入一个规则引擎,使最终用户(商品交易者,如此相当复杂)更容易对业务逻辑进行某些更改。

我对规则引擎有点怀疑。我的敏捷主义者想知道它们是否只是一个过程问题的技术解决方案......即。我们的开发人员需要很长时间来响应业务变更的需求。该问题的解决方案应该是更加协作的开发方法,更好的测试覆盖范围,更全面的敏捷实践。

听取规则引擎真正成为福音的情况(特别是在交易环境中)肯定会有所帮助。

有帮助吗?

解决方案

我见过两个使用Fair Issac的Blaze Rete引擎的应用程序。

一个应用程序将成千上万的规则抨击到一个知识库中,有可怕的内存问题,已成为一个很少理解的黑匣子。我不会称之为成功,但它正在投入生产。

另一个应用程序使用决策树来表示医疗表单上数百个问题的顺序来处理客户。它做得非常优雅,业务人员可以根据需要更新规则,而无需涉及开发人员。 (但仍然必须由一个人部署。)我称之为非常成功。

因此,这取决于问题的重点,规则集的大小,开发人员的知识。我的偏见是,简单地将规则引擎作为单点故障并将规则倾倒到其中可能不是一个好方法。我将从数据驱动或表驱动方法开始,并在需要规则引擎之前进行扩展。我还会努力将规则引擎封装为对象行为的一部分。我会从用户隐藏规则引擎,并尝试将规则空间划分为域模型。

其他提示

我不知道我是否说他们真的是一个福音,但我认为他们肯定是有价值的。我在保险行业工作了几年,其中规则引擎非常成功地运用,允许业务用户创建规则,确定哪些政策合法,具体取决于州。

例如,如果您必须在某些州拥有自付额,或者某些免赔额和自付费组合不被允许,或者是出于产品考虑,或者因为州法而完全是非法的。

该公司经营的州数量,以及规则的不断变化(季度)将使这成为令人眼花缭乱的编码实践。更重要的是,它不是程序员的专业知识。它增加了额外的无意义的沟通,最终用户正在描述规则,使其不是像他们那样的保险行业专家。

正确设计,规则引擎仍然可以启用允许进行良好测试的工作流程系统。在这种情况下,规则存储在数据库中,并且有QA和PROD数据库。因此BA可以在质量保证中测试他们的规则,然后将它们推广到PROD。

与任何事情一样,它通常与实施有关,而不是实际技术。

是的,Microsoft在BizTalk中有一个成功使用多年的业务规则引擎(BRE)。我听说他们曾经让客户为BRE购买BizTalk(非常昂贵)。

根据我的经验,让业务用户更新规则的实用性很小。通常需要技术人员来处理业务规则编辑器。

规则引擎只不过是执行声明性语句的东西。它们有两个主要优点(我看到):

  1. 您的业务逻辑从一个地方维护,而不是整个应用程序代码。从技术上讲,设计良好的应用程序应该已经在架构中执行此操作,无论是否存在规则引擎。
  2. 您需要担心[less]关于声明性语句之间的依赖关系。规则引擎应足够智能,以根据依赖关系决定运行规则的顺序。您可能会发现某些规则引擎支持规则集内的规则的顺序排序或以特定顺序调用规则集(规则组),但这并非真正具有声明性编程的精神。许多规则引擎使用Rete(算法)来决定何时安排执行声明性语句。
  3. 我怀疑大多数(如果不是全部)规则引擎增加了比编写不使用规则引擎的最佳程序更多的开销。这类似于在汇编中编写代码通常比编译器更快的方式(但是你通常不编写汇编,因为使用更高级别的抽象更方便和更有效率。)

    如果你要停在这里,那么你可能会使用程序员来维护规则并使用规则引擎作为在应用程序中构建业务逻辑层的便捷方式。一些规则引擎提供了一些称为模板的模板,可用于定义规则模板。这里的优点是非技术用户应该能够编写自己的规则并修改现有规则。

    规则引擎是您工具箱中的另一个工具,如果使用得当,它可能很有价值。

许多这些规则引擎的问题在于缺乏速度以及替换或扩充规则可能以微妙的方式破坏现有工作规则的事实。因此,在每次更改规则后,您仍需要彻底重新测试系统。所以你基本上只是将一种计算机语言换成另一种计算机语言 - 一种用户基数要小得多。正如另一张海报所提到的,我还没有看到业务分析师成功使用规则引擎。无论如何你需要一个程序员。

我当然有,但不能公开谈论它们,但可能你今年已多次与它进行过互动;)

我在两个阵营中看到它:逻辑程序员和业务用户。不同的工具针对不同的设置,有些都是。业务用户的成功案例仅在它是逻辑的子集时才起作用,并且他们还有一种方法来定义测试用例并自己运行它们(并且他们准备逻辑思考)。 逻辑程序员很少见,但通常可以从非命令式编程背景中找到它们(他们也是那种发现函数式编程直观的人)。

即使使用可视化工具,也要记住在一天结束时,如果您告诉计算机执行某些操作仍在进行编程。

我在这个领域与很多供应商合作,其中一个很棒的事情就是我可以和很多客户交谈。所以,是的,数百家公司已经完全他们承诺的好处 - 提高敏捷性,更好的业务/ IT协作,更容易的法规遵从性,更好的决策一致性,更低的维护成本,更快的上市时间等。

一遍又一遍,在所有主要供应商和开源参与者之间,我看到正确使用 - 使用许多规则自动化和改进大批量运营决策,规则变化很大,规则以复杂的方式进行交互或具有高业务域内容的规则 - 业务规则管理系统可以工作。

真。

我的经验仅限于(i)不多,(ii)prolog;但我可以肯定地说,规则引擎可以帮助你表达比程序代码更清晰的命题概念。

规则引擎通常用于保险业务。我已经研究过在规则引擎中实现的数百(600)规则的系统。它工作得非常好。

你有信用评级吗?也许是 FICO 得分?这是 F air I saac CO rporation,Blaze规则引擎的开发者。

有一段时间,我在PEATE分布式计算项目工作,该项目正在开发一个用于计算大规模,大量大气数据的系统。系统有三个部分:数据管理器,调度程序和算法执行组件。这些组件中的任何一个都可以通过Web服务完成,但它允许不同的研究人员针对任意数据执行任意作业,并允许在需求发生变化时插入不同的调度机制。 / p>

我离开项目之前离开了地面太远,但这似乎可能适合这种情况,并作为某种规则引擎的另一个例子。然而,话虽如此,如果原始开发人员仍然是那个使算法运行的人,我不能看到有一个规则引擎的太多好处,除非它处理了每个规则或算法会产生的大量开销它是自己的。

这听起来比简单的规则引擎更复杂,但这样的架构也可以适用于规则引擎。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top