我为什么要使用Drools?

时间:2012-10-03 09:30:21

标签: java scripting drools rules rule-engine

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

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

My Business Users永远不会使用(Drools)脚本语言来修改任何内容。单独修改规则。他们非常高兴使用UI屏幕来修改规则。另外,如果我让它们靠近它,它们可以在Drools文件中产生大量的语法错误。

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

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

3 个答案:

答案 0 :(得分:17)

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

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

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

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

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

Rules Engine - pros and cons

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

规则引擎的优点是;

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