最近由于項目用到drools,所以只有一邊學習一邊開發,首先先安裝好插件搭好開發環境。
下載drools eclipse插件,地址為:
http://www.jboss.org/drools/downloads.html
解壓用links方式安裝插件,如果
features目錄和
plugins目錄上層沒有eclipse文件夾,就要建一個。
在Eclipse目錄下面新建一個links文件夾,里面建一個XXX.link,內容為:path=F://plugins/drools
啟動Eclipse,在window----prefernces那里如果看不到又drools,就說明插件安裝不成功。
Eclipse3.4安裝drools插件遇到識別不了插件,解決方案如下:
F:\eclipse\configuration\org.eclipse.equinox.simpleconfigurator下面
bundles.info最后加上以下幾句:
org.guvnor.tools,5.0.1,file:plugins\org.guvnor.tools_5.0.1.jar,4,false
org.eclipse.webdav,3.0.101,file:plugins\org.eclipse.webdav_3.0.101.jar,4,false
org.drools.eclipse,5.0.1,file:plugins\org.drools.eclipse_5.0.1.jar,4,false
org.drools.eclipse.task,5.0.1,file:plugins\org.drools.eclipse.task_5.0.1.jar,4,false
保存即可。
再次啟動Eclipse就可以成功安裝插件,window----prefernces---drools插件,配置drools的依賴包環境,這些很簡單,省略。
新建一個drools工程,就會看到一個附帶的helloworld的例子,執行java文件即可執行測試。
Sample.drl
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
DroolsTest.java
1
package com.sample;
2
3
import org.drools.KnowledgeBase;
4
import org.drools.KnowledgeBaseFactory;
5
import org.drools.builder.KnowledgeBuilder;
6
import org.drools.builder.KnowledgeBuilderError;
7
import org.drools.builder.KnowledgeBuilderErrors;
8
import org.drools.builder.KnowledgeBuilderFactory;
9
import org.drools.builder.ResourceType;
10
import org.drools.io.ResourceFactory;
11
import org.drools.logger.KnowledgeRuntimeLogger;
12
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
13
import org.drools.runtime.StatefulKnowledgeSession;
14
15
/** *//**
16
* This is a sample class to launch a rule.
17
*/
18
public class DroolsTest
{
19
20
public static final void main(String[] args)
{
21
try
{
22
// load up the knowledge base
23
KnowledgeBase kbase = readKnowledgeBase();
24
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
25
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
26
// go !
27
Message message = new Message();
28
message.setMessage("Hello World");
29
message.setStatus(Message.HELLO);
30
ksession.insert(message);
31
ksession.fireAllRules();
32
logger.close();
33
} catch (Throwable t)
{
34
t.printStackTrace();
35
}
36
}
37
38
private static KnowledgeBase readKnowledgeBase() throws Exception
{
39
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
40
kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
41
KnowledgeBuilderErrors errors = kbuilder.getErrors();
42
if (errors.size() > 0)
{
43
for (KnowledgeBuilderError error: errors)
{
44
System.err.println(error);
45
}
46
throw new IllegalArgumentException("Could not parse knowledge.");
47
}
48
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
49
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
50
return kbase;
51
}
52
53
public static class Message
{
54
55
public static final int HELLO = 0;
56
public static final int GOODBYE = 1;
57
58
private String message;
59
60
private int status;
61
62
public String getMessage()
{
63
return this.message;
64
}
65
66
public void setMessage(String message)
{
67
this.message = message;
68
}
69
70
public int getStatus()
{
71
return this.status;
72
}
73
74
public void setStatus(int status)
{
75
this.status = status;
76
}
77
78
}
79
80
}
輸出:
Hello World
Goodbye cruel world-------------------------------------------------------------------------------------------------
PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必注明作者和文章的詳細出處地址,否則不允許轉載,多謝合作!
posted on 2010-01-17 21:08
apple0668 閱讀(6032)
評論(2) 編輯 收藏 所屬分類:
drools