之前使用Drools 4.0.7 知道brms ,发现brms不怎么好用!
昨天被问到Drools 5 的怎么用,关于gunvor的,一直都报错!
狠下心来,不要了原先的 jboss-4.2.3.GA 重新下载了个:drools-5.0-guvnor-standalone.zip
修改:
chen.properties
newInstance=true
#dir=src/main/rules
#url=http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/com.chen.rules/LATEST
url=http\://localhost\:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/mortgages/LATEST
#url
java类:
package com.sample;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.RuleBase;
import org.drools.StatefulSession;
import org.drools.agent.RuleAgent;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
* 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
//KnowledgeBase kbase = readKnowledgeBase();
RuleBase base=readKnowledgeBase();
StatefulSession ksession = base.newStatefulSession();
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
ksession.insert(message);
ksession.fireAllRules();
} catch (Throwable t) {
t.printStackTrace();
}
}
private static RuleBase readKnowledgeBase() throws Exception {
/* KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());*/
//新写的代码
RuleAgent agent=RuleAgent.newRuleAgent("/chen.properties");
RuleBase kbase=agent.getRuleBase();
return kbase;
}
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;
}
}
}
Gunvor视图:
结构:
结果输出:
RuleAgent(default) INFO (Thu Oct 15 01:27:56 CST 2009): Configuring with newInstance=true, secondsToRefresh=-1
RuleAgent(default) INFO (Thu Oct 15 01:27:56 CST 2009): Configuring package provider : URLScanner monitoring URLs: http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/mortgages/LATEST
RuleAgent(default) INFO (Thu Oct 15 01:28:05 CST 2009): Applying changes to the rulebase.
RuleAgent(default) INFO (Thu Oct 15 01:28:05 CST 2009): Creating a new rulebase as per settings.
RuleAgent(default) INFO (Thu Oct 15 01:28:05 CST 2009): Adding package called mortgages
Yes!
夜深了,烦闷地沉睡...
有一天我会长大