37

我不是 Drools 专家。不过,通过实验,我对它有些熟悉。我无法欣赏,我为什么需要它。

我的典型应用程序是商业 Web 应用程序。是的,他们确实有一些规则。但是这些是使用数据库表、SQL 查询和一个漂亮的 UI 来实现的,供业务用户修改规则。规则不是任意的,它们在投入生产之前经过深思熟虑。

我的业务用户永远不会使用(Drools)脚本语言来修改任何东西。更不用说修改规则了。他们非常乐意使用 UI 屏幕来修改规则。另外,如果我让它们靠近它,它们可能会在 Drools 文件中犯无数的语法错误。

再一次
- 为什么我应该在这种情况下使用 Drools?
- 我遇到了一些 Drools 狂热分子,他们坚持我应该更改所有代码以使用 Drools。

那么,Drools 有用吗?我不确定。

4

3 回答 3

20

各式各样的狂热分子都应该受到质疑,无论他们热衷于什么话题。

数据驱动的决策表是实现复杂行为的绝佳方式。在它无法扩展或无法满足您的要求的那一天,也许您会想要考虑其他东西。

除非我有令人信服的理由,否则我不想在工作生产代码中进行技术交换。这将比粉丝男孩游说更多。

如果您真的有兴趣,请做一个 PoC 并获取一些真实数据。如果没有,请学习如何礼貌地微笑并忽略它们。

我之前已经回答过这个问题:

规则引擎 - 优点和缺点

更新:如果它是你的老板,并且你不能解雇,那么让它基于接口并在 PoC 中尝试 Drools 实现。如果您使用的是 Spring,请先注入一个,然后再注入另一个,在有意义的生产额定负载下测量性能。获取一些真实数据——也许你们都会学到一些东西。

于 2012-10-03T09:34:49.363 回答
7

规则引擎的优点是;

  • 声明式编程:规则可以很容易地表达对困难问题的解决方案,并得到验证的解决方案。与代码不同,规则是用不太复杂的语言编写的;业务分析师可以轻松阅读和验证一组规则。
  • 逻辑和数据分离:数据位于域对象中,业务逻辑位于规则中。根据项目的类型,这种分离可能非常有利。
  • 速度和可扩展性:编写 Drools 的 Rete OO 算法已经是一种经过验证的算法。在 Drools 的帮助下,您的应用程序变得非常可扩展。如果有频繁的更改请求,可以添加新规则而无需修改现有规则。
  • 知识集中化:通过使用规则,您可以创建可执行的知识库(知识库)。这是商业政策的单一真理。理想情况下,规则的可读性很强,它们也可以用作文档。工具集成:Eclipse 等工具提供了编辑和管理规则以及获得即时反馈、验证和内容帮助的方法。还提供审计和调试工具。
  • 解释工具:规则系统能够有效地提供“解释工具”,因为它能够记录规则引擎做出的决定以及做出决定的原因。
  • 可理解的规则:通过创建对象模型和(可选)为您的问题域建模的领域特定语言,您可以设置自己以编写非常接近自然语言的规则。它们适用于可能是非技术领域专家可以理解的逻辑,因为它们用他们的语言表达,所有的程序管道,技术知识都隐藏在通常的代码中。
于 2019-02-13T22:56:04.220 回答
5
  • Drools 是开源的。
  • 它提供规则执行的前向和后向链接
  • 它提供模板基本规则定义
  • 它是使用 JSR-94 实现的
  • 它有决策表设施
  • 它的规则是人类可读的
  • 它与 Spring 集成
于 2014-05-24T23:12:59.740 回答