drools源码下载_drools 教程

hacker|
112

文章目录:

怎样用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这个标准改变了,那么只要修改这个规则文件,而不用去修改源代码了

2条大神的评论

  • avatar
    访客 2022-07-03 上午 10:00:27

    总结一下其中的精华:大多数web和企业Java应用可以分成三个部分:一个和用户交互的前台, 一个和后台系统,例如数据库交互的服务层,以及他们中间的业务逻辑。 现在使用框架构建前台和后台系统已经成为普遍共识(例如, Struts, Cocoon, Spring,

  • avatar
    访客 2022-07-03 上午 05:46:39

    cific cases if((expenseRequest.code().equals("B203") ||(expenseRequest.code().equals("A903

发表评论