Jboss在Web应用程序中流口水

时间:2013-04-03 06:02:59

标签: java spring web-applications struts2 drools

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

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

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

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

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

1 个答案:

答案 0 :(得分:6)

尝试扩展上面的评论:我帮助一些同事根据Struts2 / Spring和大量.drl文件(133个文件)发展和部署庞大,丑陋的Web应用程序,每一行500至3000行。

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

Jboss Drools不是垃圾。 Jboss Drools是一个很棒的工具......如果用于它的设计目的:帮助您处理应用程序的LOGIC规则。

问题在于,人们通常会根据这些技术看起来很酷,或者说名称高,而不是真正需要使用它们,或者在某些优点之后选择将哪些技术放入堆栈中(或者至少,进行了侦察。

Drools它不是(所以)快速学习,(绝对)不能快速整合,不能(很容易)保护,如果它被用于错误的目的,它将吞噬数周/月的工作,结果可能与预期不同(可能更低)。

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

  

<强> 1.2.2。什么时候应该使用规则引擎?

     

最简单的答案是&#34;当没有令人满意的时候   传统的编程方法来解决问题。&#34;。鉴于   简短的回答,需要更多的解释。之所以有   不是传统的&#34;方法可能是以下之一:

     
      
  • 这个问题对传统代码来说太小了。

         

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

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

         

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

  •   
  • 逻辑经常更改

         

    逻辑本身甚至可能很简单,但规则经常发生变化。在许多组织中,软件版本很少   和可插拔的规则可以帮助提供敏捷性&#34;这是必要的   以合理安全的方式预期。

  •   
  • 领域专家(或业务分析师)随时可用,但不具备技术性。

         

    领域专家通常拥有丰富的业务规则和流程知识。他们通常是非技术性的,但可能非常   逻辑。规则可以允许他们用自己的术语表达逻辑。   当然,他们仍然需要批判性地思考并且有能力   逻辑思维。许多非技术职位的人没有   在形式逻辑上进行训练,所以要小心并与他们一起工作,如同   在规则中编纂商业知识,你经常会暴露出来   目前了解业务规则和流程的方式。

  •   

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

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

规则需要相当好的分析技能,除了编程技巧,还有imho&#34; Java&#34;很容易。 非技术(通常由PM表示)通常无法掌握修改所需的知识,也无法理解规则。

相反,粗体点是真实的值。

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

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

在做出决定之前,我建议至少进行几周的侦察;这种情况可能会在你手中自动:/

从上面链接的相同文档:

  

<强> 1.2.3。何时不使用规则引擎

     

引用Drools邮件列表:

     
     

在我看来,在使用规则引擎的兴奋中,人们忘记了规则引擎只是复杂的一部分   应用或解决方案。规则引擎并非真正意图   处理工作流程或流程执行,也不是工作流引擎或   旨在制定规则的流程管理工具。使用正确的工具   工作。当然,一把钳子可以用作锤子工具   捏,但这不是它为设计的。         --Dave Hamu

     
     

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

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

1)用户选择一个对象

2)用户选择多个对象

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

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

这不是Drools的意思,在我的谦卑,谦逊的意见中。