Drools推理引擎

本文介绍了Drools推理引擎,一种用于将业务规则从代码中分离的组件。详细阐述了Drools的使用步骤,包括环境搭建、Eclipse插件安装、Drools项目创建,并通过一个HelloWorld示例展示了规则文件drl的编写和规则的加载执行过程。
摘要由CSDN通过智能技术生成

图片无法显示可参考链接:
http://note.youdao.com/share/?id=6f8e6c9ee12db3f9a02997eef9b056ed&type=note#/

1.Drools简介
很多系统的业务规则需要经常修改,如果将这些规则直接编写到代码中,则业务规则一旦改变就需要修改代码,重新编译打包整个代码,而且业务规则也越来越复杂,且经常需要实时进行修改,故可将这些可变的业务规则抽取到外面,使其独立于程序代码,可以实时修改业务规则而不用打包编译整个程序。
规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来,规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则,每个·规则代表一个业务需求,根据业务规则做出相应的决策;Drools是基于JAVA和Rete算法的产生式规则引擎的实现,Drools推理引擎将事实、数据和规则进行匹配,以推出结论。

2.使用步骤
2.1 环境搭建
Drools提供了基于Eclipse的IDE开发工具,使用前须在http://www.eclipse.org/downloads/ 网址下载安装Eclipse,本次测试使用的版本为Eclipse4.5.1,安装完成后,再到http://www.eclipse.org/downloads/下载Drools开发工具包和Drools插件,进入网站后有如下界面,此次下载的Drools版本为6.3.0.Final,下载下方红色矩形框行对应的压缩文件drools-distribution-6.3.0.Final.zip和droolsjbpm-tools-distribution-6.3.0.Final.zip

安装Eclipse插件
解压droolsjbpm-tools-distribution-6.3.0.Final.zip,将解压后的文件目录droolsjbpm-tools-distribution-6.3.0.Final\binaries\org.drools.updatesite\plugins下的jar文件全部复制到Eclipse安装目录的plugins目录下,打开Eclipse,在Window->Preferences中,可以看到已经添加Drools目录

配置Drools运行环境
解压开发工具包drools-distribution-6.3.0.Final.zip,选择Window->Preferences->Drools目录下的Installed Drools Runtimes

点击Add按键,在弹出窗口的Path栏浏览添加drools-distribution-6.3.0.Final.zip解压后的drools-distribution-6.3.0.Final\binaries文件夹,Name可填写任意名称(此处测试填写为Droos6Runtime),点击OK继续

随后勾选添加的运行环境Drools6Runtime,依次点击Apply、OK按键,重新启动Eclipse,运行环境配置完成

按照如下所示步骤新建一个Drools项目
选择File->New->Projecet…
选择Drools目录下Drools Project,点击Next继续

填写工程名称,此处测试填写test,使用默认工作路径,点击Next继续

勾选红色框中两项,在新建drools工程中添加HelloWorld例子(包含HelloWorld规则文件和加载执行规则文件的Java文件),点击Next继续

填写GroupId、ArtifactId、Version(此处图中为随意填写),选择Drools Runtime(此处默认选择先前配置的Drools6Runtime),Generate code compatible一栏选择Drools6.0.x

新建生成test工程,其自带HelloWorld例子结构如下图所示

点击DroolsTest.java文件,右键->Run as->Java Application控制台输出
Hello World
Goodbye cruel world

2.2 程序执行
规则文件drl介绍:
可以使用如下语句定义一个规则:
when 条件LHS then 行为RHS
测试例子的规则文件结构:
package:声明该规则文件的包名
import:声明规则在编译和运行时所使用到的Java类,默认导入package声明的Java包下全部的类和java》lang
包下全部的类
rule:一个rule包含了三个部分,分别是name、when、then,rule name ,
代码实例:
规则文件中可包含多条规则,此处仅列举其中一条规则
package com.sample
import com.sample.WME;
rule “rdfs2”
when
c1 : WME( aaa:subject,predicate==WME.DOMAIN, xxx : object)
c2 : WME( yyy:subject,predicate== aaa , z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值