Java规则引擎-Drools

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

InfoQ发布了一个关于规则引擎的介绍Real-World Rule Engines,原文 http://www.infoq.com/articles/Rule-Engines

ONjava上也有两篇文章:

Give Your Business Logic a Framework with Drools http://www.onjava.com/lpt/a/6093

Using Drools in Your EnterPRise Java application http://www.onjava.com/lpt/a/6160

下面总结一下其中的精华:

大多数web和企业Java应用可以分成三个部分:一个和用户交互的前台, 一个和后台系统,例如数据库交互的服务层,以及他们中间的业务逻辑。 现在使用框架构建前台和后台系统已经成为普遍共识(例如, Struts, Cocoon, Spring, Hibernate, JDO, 和 Entity Beans), 但却没有一个标准的方法来构建业务逻辑。一些框架,例如 EJB 和 Spring 只在一个高层实现业务逻辑,但对于我们组织逻辑代码没有任何帮助,所以,为什么没有一个框架来替换冗繁,易错的if...then语句呢,这个框架应该和其它前台或后台框架一样,易于配置,具有可读性和重用性。下面我们将介绍Drools 规则引擎,这个来解决我们问题的框架。

下面是一个典型的Java业务逻辑的代码

if ((user.isMemberOf(AdministratorGroup)

&& user.isMemberOf(teleworkerGroup))

user.isSuperUser(){

// more checks for specific cases

if((eXPenseRequest.code().equals("B203")

(expenseRequest.code().equals("A903")

&&(totalExpenses<200)

&&(bossSignOff> totalExpenses))

&&(deptBudget.notExceeded)) {

//issue payments

} else if {

//check lots of other conditions

}

} else {

// even more business logic

}

这是大多数程序员写业务逻辑的方法,但是有以下的问题:

假如用户有另一个选项,例如("C987") ,那么需要修改上面的代码,当代码很长的时候,修改代码是难于维护的

我们如何保证代码的正确性,这个代码只有程序员能够看到,真正的使用者,业务人员无法看到这个代码

很多应用程序有相同的业务逻辑,假如某个业务改变了,如何保证其他业务逻辑的一致性

业务逻辑能否不合java语言绑定?

业务逻辑能否用其他的脚本语言。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航