Eclipse安装Drools插件
具体步骤参见另外博客:http://blog.youkuaiyun.com/qq_37380557/article/details/75048813
Eclipse中添加Drools的运行环境
、1下载插件地址:http://www.drools.org/download/download.html
2、版本:droolsjbpm-tools-distribution-6.5.0.Final.zip,并进行解压
3、点击”Windows”—”Preferencess”,在窗口的树形菜单中选择”Drools”—”Installed Drools Runtimes”
在Path选择”……./drools-distribution-6.5.0.Final\binaries”
点击OK,重启Eclipse
创建Drools项目
1、创建Drools工程,”New”—”Project”—”Drools Project”—输入项目名—”Next”
选择编译代码所使用的规则引擎版本,这里选择”Drools 5.1 or above”,点击”Finish”。
自动生成Hello World示例,如下所示:
以下是工程自动生成的例子
Sample.drl :规则引擎的样例文件,该文件根据Drools规则语言语法编写
package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
when
//LHS块
//在working Memory中,如果存在一个Message对象满足他的status属性等于Message.HELLO条件,
//就把满足条件的Message实例用变量m表示,他的message属性用myMessage表示,以便在RHS中使用。
m : Message( status == Message.HELLO, myMessage : message )
then
//RHS块
//在LHS中满足条件就运行RHS块。用到了LHS中的变量m,myMessage
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );//表示把此Message实例在 working memory中更新.这便会触发名称为"GoodBye"的
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end
DroolsTest.Java:java测试类,用来读取Sample.drl 并运行,该文件使用Drools规则引擎的API进行编写
package com.sample;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
/**
* This is a sample class to launch a rule.
*/
public class DroolsTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
kSession.insert(message);
kSession.fireAllRules();//执行规则
} catch (Throwable t) {
t.printStackTrace();
}
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
运行结果