最近由于项目用到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 阅读(6019)
评论(2) 编辑 收藏 所属分类:
drools