package com.sample; import java.io.InputStreamReader; import java.io.Reader; import org.drools.FactException; import org.drools.RuleBase; import org.drools.RuleBaseFactory; import org.drools.WorkingMemory; import org.drools.compiler.PackageBuilder; import org.drools.rule.Package; import com.sample.MessageEA; import com.sample.TransactionVO; /** * This is a sample file to launch a rule package from a rule source file. */ public class DroolsTest2 { public static final void main(String[] args) { try { //load up the rulebase RuleBase ruleBase = readRule(); WorkingMemory workingMemory = ruleBase.newStatefulSession(); MessageEA messageEA = new MessageEA(); messageEA.setFileName("ABC-834-test-100.edi"); workingMemory.insert( messageEA ); TransactionVO transVO = new TransactionVO("ABC-834", "ABC.834.EDI", "ABC.834.XML", "834"); TransactionVO transVO1 = new TransactionVO("XYZ-834", "XYZ.834.EDI", "XYZ.834.XML", "834"); TransactionVO transVO2 = new TransactionVO("834", "INBOUND.834.EDI", "INBOUND.834.XML", "834"); workingMemory.insert( transVO ); workingMemory.insert( transVO1 ); workingMemory.insert( transVO2); try{ workingMemory.fireAllRules(); }catch (FactException e ){ System.out.println("err: "+e.getMessage()); }catch(Exception ee){ System.out.println("Err2 : "+ee.getMessage()); } System.out.println("fName: "+messageEA.getFileName()); System.out.println("frQ: "+messageEA.getFromQ()); System.out.println("toQ: "+messageEA.getToQ()); } catch (Throwable t) { t.printStackTrace(); } } /** * Please note that this is the "low level" rule assembly API. */ private static RuleBase readRule() throws Exception { //read in the source Reader source = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/EATech.drl" ) ); //optionally read in the DSL (if you are using it). //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) ); //Use package builder to build up a rule package. //An alternative lower level class called "DrlParser" can also be used... PackageBuilder builder = new PackageBuilder(); //this wil parse and compile in one step //NOTE: There are 2 methods here, the one argument one is for normal DRL. builder.addPackageFromDrl( source ); //Use the following instead of above if you are using a DSL: //builder.addPackageFromDrl( source, dsl ); //get the compiled package (which is serializable) Package pkg = builder.getPackage(); //add the package to a rulebase (deploy the rule package). RuleBase ruleBase = RuleBaseFactory.newRuleBase(); ruleBase.addPackage( pkg ); return ruleBase; } }