ClassLoader classLoader = this.getClass().getClassLoader(); PackageBuilderConfiguration configuration = new PackageBuilderConfiguration(); configuration.setClassLoader(classLoader); PackageBuilder builder = new PackageBuilder(configuration); builder.addPackageFromDrl(source); RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration(); ruleBaseConfiguration.setClassLoader(classLoader); ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration); ruleBase.addPackage(builder.getPackage());
public Package loadPackage(File drl) throws IOException { FileInputStream fin = new FileInputStream(drl); PackageBuilder b = new PackageBuilder(); try { b.addPackageFromDrl(new InputStreamReader(fin)); fin.close(); if (b.hasErrors()) { throw new RuntimeDroolsException( "Error building rules from source: " + b.getErrors()); } else { return b.getPackage(); } } catch (DroolsParserException e) { throw new RuntimeException(e); } }
void processOtherDeclarations(PackageRegistry pkgRegistry, PackageDescr packageDescr) { processWindowDeclarations(pkgRegistry, packageDescr); processFunctions(pkgRegistry, packageDescr); processGlobals(pkgRegistry, packageDescr); // need to reinsert this to ensure that the package is the first/last one in the ordered map // this feature is exploited by the knowledgeAgent Package current = getPackage(); this.pkgRegistryMap.remove( packageDescr.getName() ); this.pkgRegistryMap.put( packageDescr.getName(), pkgRegistry ); if ( ! current.getName().equals( packageDescr.getName() ) ) { currentRulePackage = pkgRegistryMap.size() - 1; } }
public void addRule(String myRuleStatement, String myPackage, RuleBase myRuleBase ) { PackageBuilder packageBuilder = new PackageBuilder(new Package(myPackage)); packageBuilder.addPackgeFromDrl( new StringReader( myRuleStatement ) ); myRuleBase.addPackage ( packageBuilder.getPackage() ); }
public Package loadPackage(File rm) throws IOException { final FileInputStream fin = new FileInputStream( rm ); final SpreadsheetCompiler converter = new SpreadsheetCompiler(); String drl = converter.compile( fin, InputType.XLS ); fin.close(); PackageBuilder b = new PackageBuilder(); try { b.addPackageFromDrl( new StringReader( drl ) ); if ( b.hasErrors() ) { throw new RuntimeDroolsException( "Error building rules from source: " + b.getErrors() ); } else { return b.getPackage(); } } catch ( DroolsParserException e ) { throw new RuntimeException( e ); } }
private RuleBase makeRuleBase(final PackageBuilder builder) throws CheckedDroolsException { if ( builder.hasErrors() ) { throw new CheckedDroolsException( "There were errors in the rule source: " + builder.getErrors().toString() ); } final Package binaryPackage = builder.getPackage(); final RuleBase rb = RuleBaseFactory.newRuleBase( RuleBaseLoader.engineType ); try { rb.addPackage( binaryPackage ); } catch ( final Exception e ) { throw new CheckedDroolsException( "Unable to add compiled package to rulebase. Nested error is: " + e.getMessage() ); } return rb; }
final Package pkg = builder.getPackage(); return createRuleExecutionSet( pkg, properties );
final Package pkg = builder.getPackage();
public void configure(DroolsPolicy policy, DroolsPolicyConfig uriPolicyConfig) { doInit(); int counter = 0; for (DroolsPolicyConfigRule cfgRule : uriPolicyConfig.getRules()) { DroolsPolicyRule internalRule = DroolsPolicyRule.createRule(counter++, cfgRule.getPriority(), cfgRule.getUriPattern(), cfgRule.getConditions(), cfgRule.getRequestType(), cfgRule.getAllowedRoles(), cfgRule.getDeniedRoles(), cfgRule.getAllowedUsers(), cfgRule.getDeniedUsers()); this.addPolicyRule(internalRule); } // Now whole package is configured. Creating RuleBase org.drools.rule.Package rulesPackage = packageBuilder.getPackage(); this.ruleBase.addPackage(rulesPackage); policy.setRuleBase(this.ruleBase); log.info("Drools engine for DroolsPolicy initialized and configured successfully"); }
/** * Return a wm ready to go based on the rules in a drl at the specified uri (in the classpath). */ public StatefulSession getWorkingMemory(String uri) throws DroolsParserException, IOException, Exception { PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl(new InputStreamReader(this.getClass() .getResourceAsStream(uri))); assertFalse(builder.getErrors().toString(), builder.hasErrors()); RuleBase rb = RuleBaseFactory.newRuleBase(); rb.addPackage(builder.getPackage()); SessionConfiguration conf = new SessionConfiguration(); conf.setClockType( ClockType.PSEUDO_CLOCK ); StatefulSession wm = rb.newStatefulSession( conf, null ); return wm; } }
@Test public void testSimplePackageAttributesSingleDrlDirect() throws Exception { String drl1 = "package test\n no-loop true\ndeclare Album\n genre: String \n end\nrule \"rule1\"\nwhen Album() \n then \nAlbum a = new Album(); \n end"; PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl( new StringReader(drl1) ); org.drools.rule.Package p1 = builder.getPackage(); assertEquals( "test", p1.getName() ); assertEquals( 1, p1.getRules().length ); org.drools.rule.Rule r1 = p1.getRules()[0]; assertEquals( true, r1.isNoLoop() ); }
ruleBase.addPackage( builder.getPackage() );
@Test public void testComplexPackageAttributesMultipleDrlsDirect() throws Exception { String drl1 = "package test\nno-loop true\ndeclare Album\n genre: String \n end\nrule \"rule1\"\nwhen Album() \n then \nAlbum a = new Album(); \n end"; String drl2 = "package test\nagenda-group\"test\"\ndeclare Album\n genre: String \n end\nrule \"rule2\"\nwhen Album() \n then \nAlbum a = new Album(); \n end"; PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl( new StringReader(drl1) ); builder.addPackageFromDrl( new StringReader(drl2) ); org.drools.rule.Package p1 = builder.getPackage(); assertEquals( "test", p1.getName() ); assertEquals( 2, p1.getRules().length ); org.drools.rule.Rule r1 = p1.getRules()[0]; assertEquals( true, r1.isNoLoop() ); assertEquals( "MAIN", r1.getAgendaGroup() ); org.drools.rule.Rule r2 = p1.getRules()[1]; assertEquals( true, r2.isNoLoop() ); assertEquals( "test", r2.getAgendaGroup() ); }