我为什么要使用Drools?

问题描述 投票:30回答:3

我不是Drools专家。不过,我对它有一些熟悉,通过试验它。我无法理解,为什么我需要它。

我的典型应用是商业Web应用程序。是的,他们确实有一些规则。但这些是使用数据库表,SQL查询和一个很好的用户界面实现的,以便业务用户修改规则。规则不是任意的,它们在投入生产之前都经过仔细考虑。

我的商业用户永远不会使用(Drools)脚本语言来修改任何东西。单独修改规则。他们非常高兴使用UI屏幕来修改规则。另外,如果我让它们靠近它,它们可以在Drools文件中产生无数的语法错误。

再次 - 为什么我应该在这种情况下使用Drools? - 我见过的Drools狂热分子坚持认为我应该改变我的所有代码以利用Drools。

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

java scripting drools rules rule-engine
3个回答
18
投票

无论他们热衷于什么话题,都应该质疑所有条纹的狂热分子。

数据驱动的决策表是实现复杂行为的完美方式。在它不能按照您的要求进行扩展或执行的那一天,也许您会想要考虑别的事情。

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

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

我以前回答过这个问题:

Rules Engine - pros and cons

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


4
投票
  • Drools是开源的。
  • 它提供规则执行的前向和后向链接
  • 它提供模板基本规则定义
  • 它是使用JSR-94实现的
  • 它有决策表设施
  • 它的规则是人类可读的
  • 它与Spring集成在一起

3
投票

规则引擎的优点是;

  • 声明性编程:规则可以很容易地表达难题的解决方案并验证解决方案。与代码不同,规则是用不太复杂的语言编写的;业务分析师可以轻松阅读和验证一组规则。
  • 逻辑和数据分离:数据驻留在域对象中,业务逻辑驻留在规则中。根据项目的类型,这种分离可能是非常有利的。
  • 速度和可伸缩性:编写Drools的Rete OO算法已经是一种经过验证的算法。在Drools的帮助下,您的应用程序变得非常可扩展。如果存在频繁的更改请求,则可以添加新规则而无需修改现有规则。
  • 知识集中化:通过使用规则,您可以创建可执行的知识库(知识库)。这是商业政策的单一事实。理想情况下,规则是如此可读,它们也可以作为文档。工具集成:Eclipse等工具提供了编辑和管理规则并获得即时反馈,验证和内容帮助的方法。还提供审计和调试工具。
  • 解释工具:规则系统通过记录规则引擎做出的决策以及做出决策的原因,有效地提供了“解释工具”。
  • 可理解的规则:通过创建对象模型以及可选的域特定语言来为您的问题域建模,您可以自己编写非常接近自然语言的规则。它们适用于可能是非技术领域专家的逻辑,因为它们以他们的语言表达,所有程序管道,技术知识都隐藏在通常的代码中。
© www.soinside.com 2019 - 2024. All rights reserved.