[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