Jboss在Web应用程序中流口水

Red*_*ddy 2 java spring struts2 web-applications drools

我们有庞大的Web应用程序,我们正在为其添加新功能.作为Web应用程序,它使用的是Struts2,Spring框架.

我google了很多,在Web应用程序中找不到任何Jboss Drools使用教程.

任何人都可以告诉我基于Web应用程序/项目的Drools Tutotial.

是否可以配置Drools,以便如果用户在JSP中选择几个选项,基于所选选项,我可以解雇Drools引擎吗?通过触发,我应该能够动态地更改视图.

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

And*_*ios 6

试图扩展我的评论:我帮助一些同事在基于Struts2/ Spring和大量.drl文件(133个文件,每个500到3000行)的基础上发展和部署一个庞大,丑陋的Web应用程序.

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

Jboss Drools不是垃圾.Jboss Drools是一个很棒的工具......如果它被用于它的设计:帮助你应用你的LOGIC规则.

问题在于,人们通常会根据这些技术看起来很酷,或者说名声很高而不是真正需要使用这些技术来选择需要放入堆栈的技术,而不是在一些好的(或者至少是进行侦察.

Drools它不是(如此)快速学习,(绝对)不能快速整合,而不是(易)保持,如果它被用于错误的目的,它将吞噬数周/数月的工作结果可能不同(可能更低)超出预期.

从官方Drools Expert文档(还有其他文章Drools,查看它们),您可以在这里找到示例以及您在此问题中提出的所有问题:http://docs.jboss.org/drools/release/5.2.0.Final/drools -专家-DOCS/HTML/ch01.html

1.2.2.什么时候应该使用规则引擎?

最简单的答案是"当没有令人满意的传统编程方法来解决问题时".鉴于答案简短,需要进一步解释.没有"传统"方法的原因可能是以下之一:

  • 这个问题对于传统代码来说太过分了.

    问题可能并不复杂,但您无法看到为其构建解决方案的非脆弱方式.

  • 问题超出了任何明显的算法解决方案.

    这是一个需要解决的复杂问题,没有明显的传统解决方案,或者基本上问题还没有完全理解.

  • 逻辑经常改变

    逻辑本身甚至可能很简单,但规则经常发生变化.在许多组织中,软件版本很少,而且可插拔的规则可以帮助以合理安全的方式提供所需和期望的"敏捷性".

  • 领域专家(或业务分析师)随时可用,但非技术性.

    领域专家通常拥有丰富的业务规则和流程知识.它们通常是非技术性的,但可能非常符合逻辑.规则可以允许他们用自己的术语表达逻辑.当然,他们仍然需要批判性地思考并且能够进行逻辑思考.非技术职位的许多人没有正式逻辑方面的培训,所以要小心并与他们合作,因为通过在规则中编纂业务知识,您将经常暴露出当前理解业务规则和流程的方式.

最后一句话与三美元钞票一样假.

如果您认为项目经理或秘书将在不涉及开发人员的情况下更改规则,因为"他们只是规则,而不是Java文件"...继续希望:D

规则需要相当好的分析技能,除了编程技巧,imho"Java"也相当容易.非技术人员(通常由PM指代)通常无法掌握修改或理解规则所需的知识.

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

如果您正在开发一个处理抵押贷款的应用程序,并且每月都会更改数学规则(利息税,系数等),那么使用Drools是好的.你不需要改变你的应用程序的逻辑,你只需要改变公式,魔术就会发生.

但是如果您正在使用,Drools因为您认为它将阻止您的Web应用程序再次部署(阅读:降低发布管理的成本),那么您应该考虑两次.

在做出决定之前,我建议至少进行几周的侦察; 这种东西可能会自动炸毁:/

从上面链接的相同文档:

1.2.3.何时不使用规则引擎

引用Drools邮件列表定期:


在我看来,在使用规则引擎的兴奋中,人们忘记了规则引擎只是复杂应用程序或解决方案的一部分.规则引擎并非真正用于处理工作流或流程执行,也不是用于执行规则的工作流引擎或流程管理工具.使用正确的工具完成工作.当然,一把钳子可以用作夹紧中的锤击工具,但这不是它的设计目的. - 戴哈姆


由于规则引擎是动态的(在规则可以存储和管理并作为数据更新的意义上是动态的),它们通常被视为部署软件问题的解决方案.(大多数IT部门似乎都是为了阻止软件推出而存在.)如果这是您希望使用规则引擎的原因,请注意当您能够编写声明性规则时,规则引擎最有效.作为替代方案,您可以考虑数据驱动设计(查找表)或脚本处理引擎,其中脚本在数据库中管理并且能够即时更新.

作为最后的想法,你所描述的要求在我看来是非常静态的,不能发展那么

1)用户选择一个对象

2)用户选择多个对象

这将很难成为不同的东西,我从来没有见过一个应用程序或网站之间的不同的方式来处理一个多选2,310元素.它是==1,或者是>1.

如果它会发展,那么你也需要改变代码; 如果今天您将执行一个动作>1,而明天你将执行两种不同的操作对于>1 && <=5>5......那么你就必须得那些代码的新行动.

这不是Drools的意思,In Humble,Humble Opinion.