[rules-users] How to use the xls file as decision table?
ponmanirajan
ponmani30mca at gmail.com
Tue Jan 31 09:39:47 EST 2012
Please check this code, Edit and reply me.....
package com.sample;
import java.io.StringReader;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.DecisionTableConfiguration;
import org.drools.builder.DecisionTableInputType;
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.compiler.PackageBuilder;
import org.drools.io.Resource;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.rule.Package;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.decisiontable.ExternalSpreadsheetCompiler;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
public class DecisionTable {
public static void main(String[] args) {
try {
// load up the knowledge base
KnowledgeBase kbase = createKnowledgeBaseFromSpreadsheet();
StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger =
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
// go !
Person p=new Person();
p.setAge(23);
p.setName("ponmani");
ksession.insert(p);
ksession.fireAllRules();
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
public static KnowledgeBase createKnowledgeBaseFromSpreadsheet() throws
Exception {
DecisionTableConfiguration dtconf
=KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType( DecisionTableInputType.XLS );
dtconf.setWorksheetName("Sheet1");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Resource r = ResourceFactory.newUrlResource(
"file:///D://Auto_Gen_Rules//data.xls");
System.out.println("XLS ResouceBuilder.......");
kbuilder.add(r, ResourceType.DTABLE, dtconf);
System.out.println("Loaded Resource File..........");
if (kbuilder.hasErrors()) {
throw new RuntimeException(kbuilder.getErrors().toString());
}
KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
knowledgeBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return knowledgeBase;
}
public static class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
--
View this message in context: http://drools.46999.n3.nabble.com/How-to-use-the-xls-file-as-decision-table-tp3703234p3703544.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
More information about the rules-users
mailing list