文章目录:
怎样用eclipse配置drools开发环境
将下载好的drools-distribution-6.2.0.Final包和droolsjbpm-tools-distribution-6.2.0.Final包解压放到自己想要的安排目录中,路径中最好不要有中文,我这里是在D:\ProgramFiles2 目录下。
怎样用eclipse配置drools开发环境
怎样用eclipse配置drools开发环境
然后打开Eclipse(我这里是4.4.1版本),单击“Help”,然后点击“Install New Software…”出现如下界面,点击“ADD”在出现的框中点击local。选择drools插件droolsjbpm-tools-distribution-6.2.0.Final位置,填一个名字;然后就是OK ,保存,next。一路安装重启,就可以完成插件的安装
怎样用eclipse配置drools开发环境
怎样用eclipse配置drools开发环境
插件安装后还需要配置Drools的运行环境,先单击“Window”,然后点击“Preference”,(下图1),再找到Drools=Installed Drools Runtimes(下图2);
怎样用eclipse配置drools开发环境
怎样用eclipse配置drools开发环境
在上面弹出框中,点击ADD ,再选择Drools6的路径,填一个名字。点击OK保存即可。到这里基本的环境就配置完成了,右键New 再other选择Drools project ,建一个测试项目试试。
怎样用eclipse配置drools开发环境
怎样用eclipse配置drools开发环境
到这里项目不报错能够运行基本上就OK了。
什么时候使用规则引擎drools
规则引擎一般是一下情况使用
1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。
2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。
3.为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。
使用规则引擎后有哪些好处
分离商业决策者的商业决策逻辑和应用开发者的技术决策;
能有效的提高实现复杂逻辑的代码的可维护性;
在开发期间或部署后修复代码缺陷;
应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内;
符合组织对敏捷或迭代开发过程的使用;
规则引擎产品的代表
大多数规则引擎都支持规则的次序和规则冲突检验,支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。目前业内有多个规则引擎可供使用,其中包括商业和开放源码选择。开源的代表是Drools,商业的代表是旗正规则引擎VisualRules ,iLog。
drools的.drl文件能通过写java代码生成吗?如何实现
一般 drl 不是手工写好的么?怎么你是用 Java 生成的?
我知道 JBoss 有一个 Studio (开发工具啦),用来编写 drools 源文件,有语法格式提示。不过下载起来比较大,几百个M。
drools的规则实例到底指的是什么?
InfoQ发布了一个关于规则引擎的介绍Real-World Rule Engines,原文
ONJava上也有两篇文章:
Give Your Business Logic a Framework with Drools
Using Drools in Your Enterprise Java Application
下面总结一下其中的精华:
大多数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")
(totalExpenses200)
(bossSignOff totalExpenses))
(deptBudget.notExceeded)) {
//issue payments
} else if {
//check lots of other conditions
}
} else {
// even more business logic
}
这是大多数程序员写业务逻辑的方法,但是有以下的问题:
如果用户有另一个选项,例如("C987") ,那么需要修改上面的代码,当代码很长的时候,修改代码是难于维护的
我们如何保证代码的正确性,这个代码只有程序员能够看到,真正的使用者,业务人员无法看到这个代码
很多应用程序有相同的业务逻辑,如果某个业务改变了,如何保证其他业务逻辑的一致性
业务逻辑能否不合java语言绑定?
业务逻辑能否用其他的脚本语言。
Java下的规则引擎标准就是JSR94,它的实现主要有Jess Jena Drools
Drools中,一个典型的业务逻辑的配置,如下
?xml version="1.0"?
rule-set name="BusinessRulesSample"
xmlns=""
xmlns:java=""
xmlns:xs
=""
xs:schemaLocation
=" rules.xsd
java.xsd"
!-- Import the Java Objects that we refer
to in our rules --
java:import
java.lang.Object
/java:import
java:import
java.lang.String
/java:import
java:import
net.firstpartners.rp.StockOffer
/java:import
!-- A Java (Utility) function we reference
in our rules--
java:functions
public void printStock(
net.firstpartners.rp.StockOffer stock)
{
System.out.println("Name:"
+stock.getStockName()
+" Price: "+stock.getStockPrice()
+" BUY:"
+stock.getRecommendPurchase());
}
/java:functions
rule-set
!-- Ensure stock price is not too high--
rule name="Stock Price Low Enough"
!-- Params to pass to business rule --
parameter identifier="stockOffer"
classStockOffer/class
/parameter
!-- Conditions or 'Left Hand Side'
(LHS) that must be met for
business rule to fire --
!-- note markup --
java:condition
stockOffer.getRecommendPurchase() == null
/java:condition
java:condition
stockOffer.getStockPrice() 100
/java:condition
!-- What happens when the business
rule is activated --
java:consequence
stockOffer.setRecommendPurchase(
StockOffer.YES);
printStock(stockOffer);
/java:consequence
/rule
/rule-set
一条规则就是rule-set中的rule,如果有很多规则,就要写很多的rule。
上面规则的意思是判断股票价格是否小于100,如果100这个标准改变了,那么只要修改这个规则文件,而不用去修改源代码了
总结一下其中的精华:大多数web和企业Java应用可以分成三个部分:一个和用户交互的前台, 一个和后台系统,例如数据库交互的服务层,以及他们中间的业务逻辑。 现在使用框架构建前台和后台系统已经成为普遍共识(例如, Struts, Cocoon, Spring,
cific cases if((expenseRequest.code().equals("B203") ||(expenseRequest.code().equals("A903