我为什么要使用流氓?

2022-09-01 05:27:51

我不是流氓专家。不过,通过尝试,我对它有一些熟悉。我无法欣赏,为什么我需要它。

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

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

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

那么,流口水有用吗?我不确定。


答案 1

形形色色的狂热分子都应该受到质疑,无论他们喜欢什么话题。

数据驱动的决策表是实现复杂行为的完美方式。在它没有按照您的要求扩展或执行的那一天,也许您需要考虑其他事情。

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

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

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

规则引擎 - 优点和缺点

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


答案 2

规则引擎的优点是;

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

推荐