/** * */ package com.fitbank.drools; import java.io.FileInputStream; import java.io.InputStream; import java.io.Serializable; 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.KnowledgeBuilderFactory; import org.drools.compiler.DecisionTableFactory; import org.drools.io.ResourceFactory; import org.drools.runtime.StatefulKnowledgeSession; public class RuleManager { private KnowledgeBase kbase; public RuleManager(InputStream pIn, RuleTypes pType) throws Exception { KnowledgeBuilder kbuilder = pType.getBuilder(pIn); this.kbase = KnowledgeBaseFactory.newKnowledgeBase(); this.kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); } public RuleManager(String pPath, RuleTypes pType) throws Exception { this(new FileInputStream(pPath), pType); } public void evalRules(Serializable pMessage) { StatefulKnowledgeSession ksession = this.kbase.newStatefulKnowledgeSession(); ksession.insert(pMessage); ksession.fireAllRules(); } public void execFlow(String pFlow) { StatefulKnowledgeSession ksession = this.kbase.newStatefulKnowledgeSession(); ksession.startProcess(pFlow); } public static String xlsToRule(String pPath) throws Exception { return xlsToRule(ResourceFactory.newFileResource(pPath).getInputStream()); } public static String xlsToRule(InputStream pIn) throws Exception { DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration(); dtconf.setInputType(DecisionTableInputType.XLS); return DecisionTableFactory.loadFromInputStream(pIn, dtconf); } }