http://www.bstek.com第1页共74页Drools5Drools5Drools5Drools5规则引擎规则引擎规则引擎规则引擎开发开发开发开发教程教程教程教程高杰高杰高杰高杰上海锐道信息技术有限公司上海锐道信息技术有限公司上海锐道信息技术有限公司上海锐道信息技术有限公司2009-8-20http://www.bstek.com第2页共74页1.学习前的准备学习前的准备学习前的准备学习前的准备Drools是一款基于Java的开源规则引擎,所以在使用Drools之前需要在开发机器上安装好JDK环境,Drools5要求的JDK版本要在1.5或以上。1.1.开发环境搭建开发环境搭建开发环境搭建开发环境搭建大多数软件学习的第一步就是搭建这个软件的开发环境,Drools也不例外。本小节的内容就是介绍如何搭建一个Drools5的开发、运行、调试环境。1.1.1.下载开发工具下载开发工具下载开发工具下载开发工具Drools5提供了一个基于Eclipse3.4的一个IDE开发工具,所以在使用之前需要到http://eclipse.org网站下载一个3.4.x版本的Eclipse,下载完成之后,再到http://jboss.org/drools/downloads.html网站,下载Drools5的Eclipse插件版IDE及Drools5的开发工具包,如图1-1所示。http://www.bstek.com第3页共74页图1-1除这两个下载包以外,还可以把Drools5的相关文档、源码和示例的包下载下来参考学习使用。将下载的开发工具包及IDE包解压到一个非中文目录下,解压完成后就可以在Eclipse3.4上安装Drools5提供的开发工具IDE了。1.1.2.安装安装安装安装DroolsIDE打开Eclipse3.4所在目录下的links目录(如果该目录不存在可以手工在其目录下创建一个links目录),在links目录下创建一个文本文件,并改名为drools5-ide.link,用记事本打开该文件,按照下面的版本输入Drools5EclipsePlugin文件所在目录:path=D:\\eclipse\\drools-5.0-eclipse-all这个值表示Drools5EclipsePlugin文件位于D盘eclipse目录下的drools-5.0-eclipse-all下面,这里有一点需要注意,那就是drools-5.0-eclipse-all文件夹下必须再包含一个eclipse目录,所有的插件文件都应该位于该eclipse目录之下,接下来要在windos下重启Eclipse3.4,检验Drools5IDE是否安装成功。进入windos,进入Eclipes3.4所在目录,输入eclipse–clean启动Eclipse3.4。启动完成http://www.bstek.com第4页共74页后打开菜单Window�Preferences,在弹出的窗口当中如果能在左边导航树中发现Drools节点就表示Drools5IDE安装成功了,如图1-2所示。图1-2IDE安装完成后,接下来需要对Drools5的IDE环境进行简单的配置,打开菜单Window�Preferences,在弹出的窗口当中选择左边导航树菜单Drools�InstalledDroolsRuntimes设置Drools5IDE运行时依赖的开发工具包,点击“Add…”按钮添加一个开发工具包,如图1-3所示。http://www.bstek.com第5页共74页图1-3图1-3当中添加了一个开发工具包,名称为“drools-5.0.0”,对应的工具包目录为D盘doc\aboutrule\drools5.x\drools-5.0-bin目录。添加完成后这样Drools5的开发环境就搭好了。下面我们就来利用这个环境编写一个规则看看运行效果。1.2.编写第一个规则编写第一个规则编写第一个规则编写第一个规则1.3.规则的编译与运行规则的编译与运行规则的编译与运行规则的编译与运行在Drools当中,规则的编译与运行要通过Drools提供的各种API来实现,这些API总体来讲可以分为三类:规则编译、规则收集和规则的执行。完成这些工作的API主要有http://www.bstek.com第6页共74页KnowledgeBuilder、KnowledgeBase、StatefulKnowledgeSession、StatelessKnowledgeSession、、等,它们起到了对规则文件进行收集、编译、查错、插入fact、设置global、执行规则或规则流等作用,在正式接触各种类型的规则文件编写方式及语法讲解之前,我们有必要先熟悉一下这些API的基本含义及使用方法。1.3.1.KnowledgeBuilder规则编写完成之后,接下来的工作就是在应用的代码当中调用这些规则,利用这些编写好的规则帮助我们处理业务问题。KnowledgeBuilder的作用就是用来在业务代码当中收集已经编写好的规则,然后对这些规则文件进行编译,最终产生一批编译好的规则包(KnowledgePackage)给其它的应用程序使用。Knowle...