1、什么是Drools
Drools是用Java语言编写的开放源码的规则引擎。
那什么是规则引擎呢?
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。
Drools使用RETE算法对规则进行求值,在Drools6.0(当前最新版本)中还引进了PHREAK算法,Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则,从而便于学习和理解。并且,还可以将 Java 代码直接嵌入到规则文件中,这令 Drools 的学习更加吸引人。Drools 还具有其他优点:
- 非常活跃的社区支持
- 易用
- 快速的执行速度
- 在 Java 开发人员中流行
- 与 Java Rule Engine API(JSR 94)兼容
2、一些说明
目前本人正在学习Drools过程中,准备编写一个系列文章,来记录自己的学习过程和学习心得。由于本人目前也是新手,因而文章中不可避免有着一些错误的理解,这个只有希望读者自己来判断了。
https://github.com/bluntwang/drools
本系列文章基于当前最新版本Drools 6.0.1 Final版本。
然后我会通过一些tag来标记一些例子,读者可以自己checkout相应的tag来查看例子,一般这些tag都会有相应的注释的。
这个列子也是我之前在git里找的,原作者讲解的满仔细的。
Git入门学习可以参考:Git入门资料
3、Hello World
从GitHub上下载nut-drools工程(使用上节里面的地址),checkout training_1标签,就可以看到HelloWorld的例子。工程结构如下:
这是一个典型的Maven工程,包含pom.xml文件,有src/main/java、src/main/resources,以及相应的测试目录。其中:
- src/main/resources/META-INF :该目录中存放了一个kmodule.xml文件,该文件中声明了若干已经定义了的规则、流程文件。
- src/main/resources :该目录的子目录dtables和rules中存放了定义了规则的规则文件,本例中包含了两种定义规则的方式,一种是通过DRL(后缀.drl)文件来定义的,一种是通过Excel文件(后缀.xls)来定义的。
- src/test/java :该目录中定义了单元测试用例,就是直接测试运行规则的。
现在可以直接执行单元测试,查看测试结果了。
4、Drools and Eclipse
Drools提供了Eclipse插件,可以在 http://www.jboss.org/drools/downloads 页面进行下载“Drools and jBPM Tools”,在这个下载包里面就包含有Eclipse插件。
装好插件后可以使用Drools透视图,然后就可以直接创建Drools Project了:
在这一步可以选择一些例子,这样在工程创建好之后就会有相应的例子程序了,上面提供的HelloWorld就是这个里面的自动创建的例子。
输入好GroupId、AtifactId、Version后点击Finish就可以创建好一个工程了。
大家可以注意到这个工程也是一个Maven结构的工程,除了没有pom.xml之外。不知道没有pom.xml文件这个是Drools有自己的考虑之外呢,还是这是一个bug。
基于这个因素,我推荐大家直接创建一个Maven工程,而不是通过上面的那个创建Drools Project的向导来创建工程。除了要直接在pom.xml文件里面添加依赖外,个人觉得创建Maven工程更方便一些。