gpt4 book ai didi

java - Web 应用程序中的 Jboss Drools

转载 作者:行者123 更新时间:2023-12-03 08:20:32 28 4
gpt4 key购买 nike

我们有庞大的网络应用程序,我们正在为其添加新功能。由于它是 Web 应用程序,因此使用 Struts2、Spring 框架。

我用谷歌搜索了很多,找不到任何关于在 Web 应用程序中使用 Jboss Drools 的教程。

任何人都可以向我展示基于 Web 应用程序/项目的 Drools 教程。

是否可以配置 Drools,如果用户根据所选选项在 JSP 中选择几个选项,我可以启动 Drools 引擎吗?通过触发,我应该能够动态更改 View 。

假设购物车 [查看页面] 中有三种产品。如果用户选择 A 产品,我应该向他显示更多选项,如果用户同时选择 A 和 B,则禁用选择第三个产品等...[从 Drools 进行 View 控制]

最佳答案

尝试扩展我上面的评论:我帮助一些同事开发和部署了一个基于 Struts2 的巨大、丑陋的 Web 应用程序。/Spring和吨 .drl文件(133 个文件,每个文件 500 到 3000 行)。

我可以肯定地说我现在知道如何不使用 Jboss Drools :表示逻辑、工作流管理等。

Jboss Drools不是垃圾。 Jboss Drools是一个很棒的工具...如果它用于它的设计:帮助您制定应用程序的逻辑规则。

问题在于,人们常常根据这些技术看起来很酷,或者有一个冠冕堂皇的名字来选择需要将哪些技术放入他们的技术栈中,而不是真正需要使用它们,也不是在一些好的(或至少,进行了)侦察。

Drools它学习起来不(那么)快,集成起来(绝对)不快,维护起来也不(那么)容易,如果将其用于错误的目的,它将吞噬数周/数月的工作结果可能与预期不同(可能较低)。

来自官方Drools Expert文档(还有其他的 Drools,请查看),您可以在其中找到示例以及您在这个问题中提出的所有问题:http://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html/ch01.html

1.2.2. When should you use a Rule Engine?

The shortest answer to this is "when there is no satisfactory traditional programming approach to solve the problem.". Given that short answer, some more explanation is required. The reason why there is no "traditional" approach is possibly one of the following:

  • The problem is just too fiddle for traditional code.

    The problem may not be complex, but you can't see a non-fragile way of building a solution for it.

  • The problem is beyond any obvious algorithmic solution.

    It is a complex problem to solve, there are no obvious traditional solutions, or basically the problem isn't fully understood.

  • The logic changes often

    The logic itself may even be simple but the rules change quite often. In many organizations software releases are few and far between and pluggable rules can help provide the "agility" that is needed and expected in a reasonably safe way.

  • Domain experts (or business analysts) are readily available, but are nontechnical.

    Domain experts often possess a wealth of knowledge about business rules and processes. They typically are nontechnical, but can be very logical. Rules can allow them to express the logic in their own terms. Of course, they still have to think critically and be capable of logical thinking. Many people in nontechnical positions do not have training in formal logic, so be careful and work with them, as by codifying business knowledge in rules, you will often expose holes in the way the business rules and processes are currently understood.

最后一句跟三 block 钱一样假。

如果您认为项目经理或秘书会在没有开发人员参与的情况下更改规则,因为“它们只是规则,而不是 Java 文件”...继续希望 :D

除了编程技能之外,规则还需要很好的分析技能,恕我直言,“Java”要容易得多。 非技术人员(通常是 PM 的意思)通常无法掌握修改所需的知识,也无法理解规则。

相反,粗体点是真正的增加值。

如果您正在开发一个处理抵押贷款的应用程序,其数学规则每个月都会变化(利息税、系数等),那么请使用 Drools很好。您无需更改应用程序的逻辑,只需更改公式,奇迹就会发生。

但是如果你使用 Drools因为你认为它会阻止你的 webapp 被部署(阅读:降低发布管理的成本),那么你应该三思而后行。

我建议在做出决定之前至少进行几周的考察;这是一种可能会自动在你手中爆炸的东西:/

来自上面链接的同一文档:

1.2.3. When not to use a Rule Engine

To quote a Drools mailing list regular:


It seems to me that in the excitement of working with rules engines, that people forget that a rules engine is only one piece of a complex application or solution. Rules engines are not really intended to handle workflow or process executions nor are workflow engines or process management tools designed to do rules. Use the right tool for the job. Sure, a pair of pliers can be used as a hammering tool in a pinch, but that's not what it's designed for. --Dave Hamu


As rule engines are dynamic (dynamic in the sense that the rules can be stored and managed and updated as data), they are often looked at as a solution to the problem of deploying software. (Most IT departments seem to exist for the purpose of preventing software being rolled out.) If this is the reason you wish to use a rule engine, be aware that rule engines work best when you are able to write declarative rules. As an alternative, you can consider data-driven designs (lookup tables), or script processing engines where the scripts are managed in a database and are able to be updated on the fly.

作为最后的想法,您描述的需求在我看来是相当静态的,不能那么发展

1) 用户选择一个对象

2) 用户选择多个对象

这几乎不会变得不同,我从未见过应用程序或网站以不同方式处理 2 之间的多选。 , 310元素。是==1 ,或者它是 >1 .

如果它会发展,那么您也需要更改代码;如果今天你将对 >1 执行一项操作,明天您将为 >1 && <=5 执行两个不同的操作和 >5 ...然后您还必须编写这些新操作的代码。

这不是 Drools 的本意,以我的拙见。

关于java - Web 应用程序中的 Jboss Drools,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com