为什么我应该使用Drools?

38

我不是Drools的专家,但我通过试验对它有一定了解。 我无法理解为什么需要使用它。

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

我的业务用户永远不会使用(Drools)脚本语言来修改任何东西。更不用说修改规则了。他们非常乐意使用UI界面来修改规则。如果让他们接近Drools文件,他们可能会犯数百个语法错误。

再次提问:
- 在这种情况下,我为什么要使用Drools?
- 我曾经遇到过一些Drools发烧友,坚称我应该改变所有的代码以利用Drools。

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


1
请注意,这是一个非常古老的问题,但我想指出Drools确实有一些UI界面,可以以“友好”的方式修改规则,而不必担心脚本语法。 - Captain Man
3个回答

21

无论狂热者对什么话题兴奋不已,都应该进行质疑。

基于数据驱动的决策表是实现复杂行为的完全可靠方法。但是,在它不能满足您的要求时,也许您需要考虑其他选择。

我不想在工作生产代码中进行技术交换,除非我有充分的理由。这需要远比热心粉丝游说更多的事情。

如果您真的感兴趣,请进行概念验证并获取一些真实数据。否则,请学会礼貌地微笑并忽略他们。

我之前回答过关于此的问题:

规则引擎-优缺点

更新:如果这是你的老板,并且你无法拒绝,请将其设置为接口,并尝试在概念验证中使用Drools实现。如果您正在使用Spring,请注入一个,然后再注入另一个,并在生产负载下测量性能。获取一些真实数据-也许您都会学到一些东西。


1
如何对老板微笑? :) - Jasper
Duffymo,我有兴趣开始学习Drools,请问您能指点我一些教程吗? - OCB
2
Drools 项目页面不是你应该寻找教程的第一个地方吗?http://www.jboss.org/drools/ - duffymo

8

规则引擎的优势如下:

  • 声明式编程:规则使得解决难题并验证解决方案变得更加容易。与代码不同,规则使用较为简洁的语言编写,业务分析员可以轻松阅读和验证一组规则。
  • 逻辑和数据分离:数据存储在领域对象中,业务逻辑存储在规则中。这种分离方式对于不同类型的项目都有很大的优势。
  • 速度和可扩展性:Drools 内部采用 Rete OO 算法,该算法已经成熟可靠。使用 Drools,您的应用程序将变得非常可扩展。如果有频繁的更改请求,可以添加新的规则而无需修改现有规则。
  • 知识集中化:通过使用规则,您可以创建一个可执行的知识库(知识库),该库是业务策略的真实单点。理想情况下,规则足够易读,也可以作为文档使用。 工具集成:Eclipse 等工具提供了编辑和管理规则以及获取即时反馈、验证和内容支持的方式。还提供审计和调试工具。
  • 解释功能:规则系统通过能够记录规则引擎所做决策以及决策原因的日志,有效地提供了“解释功能”。
  • 易于理解的规则:通过创建对象模型和可选的特定领域语言来建模您的问题领域,您可以为自己设置编写接近自然语言的规则的条件。这些规则适合于逻辑由可能是非技术性的领域专家表达的语言组成,所有程序管道和技术知识都隐藏在常规代码中。

5
  • Drools是开源的。
  • 它提供规则执行的前向和后向链接。
  • 它提供基于模板的规则定义。
  • 它使用JSR-94实现。
  • 它具有决策表功能。
  • 它的规则易于人类阅读。
  • 它与Spring集成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接