Drools 配置及相关
@ 2016/11/2
- 从Drools官网下载Drools Engine和Drools and jBPM tools。
插件的安装有俩种不同的方法:
打开Eclipse,单击“Help”,然后点击“Install New Software…”出现如下界面,点击“ADD”在出现的框中点击local。选择drools插件Drools and jBPM tools位置,填一个名字;然后就是OK,保存,next。一路安装重启,就可以完成插件的安装
或者是
将Drools and jBPM tools目录下plugins内的jar包复制到eclipse的plugins内
- 单击“Window”,然后点击“Preference”,再找到Drools=>Installed Drools Runtimes,添加Drools Engine的二进制文件即可
demo测试,发现警告
Drools 学习日志day1
@2016/11/2
因为是第一次接触Drools项目,所以并没有急着直接翻看教程。安装完后打算先认真地看看Demo的代码结构,初步培养一下对Drools的认识。
先来看看rules
package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world!" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end
在没有系统学习Drools之前,可以猜测到,rule..when..then..end将是一条规则的基本形式。而代码的结构是基于缩进的,在每个代码块内又镶嵌了java的函数。
再来看看java
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;
}
}
}
结合Message class可以推出,rules内的m是一个Message的实例。或许rule内的变量是由冒号来赋值的,并且变量在使用前不需要定义。
如此一来demo的结构就很清晰了,接下来就是查看教程的时候了。