最近应项目的要求,开始研究Drools规则引擎。
作为规则引擎,一个比较通用的应用方式就是开放服务接口,以供其它模块或用户调用。发布成Web服务无疑是比较理想的方法。Drools项目发布成Web服务,也就是实现以Web服务的方式调用Drools引擎,目前的资料相对比较少。但Drools作为开源项目,目前官方采用Maven组织它的项目工程,利用官方插件创建的Drools工程也是Maven工程。所以只要扩展这个Maven工程,加入Web服务相关内容并开放接口即可。利用Maven项目开发Web服务的资料还是很多的,但不能简单的照搬,因为Drools工程和普通Maven工程相比有很多自己独有的东西。我采用的Drools引擎版本:6.0.1Final,使用CXF框架开发Web服务。
首先要说明的是,不建议采用官方插件创建的Drools工程开发Web服务,因为对Maven工程进行扩展的常用方法是在pom.xml里添加新的依赖,这是非常方便且有效的方法。而官方插件创建的Drools工程虽然也是Maven工程,却没有pom.xml文件,这会带来很多不便。事实上没有这个文件,扩展其它的功能也很麻烦。相应的替代方法是,创建普通的Maven工程,并把它扩展成Drools工程,再开发Web服务。
1、在pom.xml里添加CXF依赖和配置jetty插件
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>apache-cxf</artifactId>
<version>2.7.0</version>
<type>p