private KieBase createKnowledgeBase(String flowFile) { KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); conf.setProperty("drools.dialect.java.compiler", "JANINO"); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf); kbuilder.add( new ClassPathResource( flowFile ), ResourceType.DRF ); if(kbuilder.hasErrors()){ StringBuilder errorMessage = new StringBuilder(); for (KnowledgeBuilderError error: kbuilder.getErrors()) { errorMessage.append( error.getMessage() ); errorMessage.append( System.getProperty( "line.separator" ) ); } fail( errorMessage.toString()); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); return kbase; }
protected List<Resource> buildAndDumpBPMN2Process(String process) throws SAXException, IOException { KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); ((KnowledgeBuilderConfigurationImpl) conf).initSemanticModules(); ((KnowledgeBuilderConfigurationImpl) conf).addSemanticModule(new BPMNSemanticModule()); ((KnowledgeBuilderConfigurationImpl) conf).addSemanticModule(new BPMNDISemanticModule()); ((KnowledgeBuilderConfigurationImpl) conf).addSemanticModule(new BPMNExtensionsSemanticModule()); Resource classpathResource = ResourceFactory.newClassPathResource(process); // Dump and reread XmlProcessReader processReader = new XmlProcessReader(((KnowledgeBuilderConfigurationImpl) conf).getSemanticModules(), getClass().getClassLoader()); List<Process> processes = processReader.read(this.getClass().getResourceAsStream("/" + process)); List<Resource> resources = new ArrayList<Resource>(); for (Process p : processes) { RuleFlowProcess ruleFlowProcess = (RuleFlowProcess) p; String dumpedString = XmlBPMNProcessDumper.INSTANCE.dump(ruleFlowProcess); Resource resource = ResourceFactory.newReaderResource(new StringReader(dumpedString)); resource.setSourcePath(classpathResource.getSourcePath()); resource.setTargetPath(classpathResource.getTargetPath()); resources.add(resource); } return resources; }
@Before public void setUp() throws Exception { config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); }
private KnowledgeBuilderConfiguration createKnowledgeBuilderConfiguration() { Properties properties = new Properties(); properties.setProperty( "drools.dialect.java.compiler", "JANINO" ); KnowledgeBuilderConfiguration kconf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration( properties, getClass().getClassLoader() ); kconf.setOption( DefaultDialectOption.get( "java" ) ); return kconf; }
public KieBase call() throws Exception { final Reader source = new InputStreamReader(ParallelCompilationTest.class.getResourceAsStream(DRL_FILE)); final Properties props = new Properties(); props.setProperty("drools.dialect.java.compiler", "JANINO"); props.setProperty("drools.dialect.java.compiler.lnglevel", "1.6"); KieBase result; final KnowledgeBuilderConfiguration configuration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(props, ParallelCompilationTest.class.getClass().getClassLoader()); final KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(configuration); Thread.sleep(Math.round(Math.random()*250)); Resource newReaderResource = ResourceFactory.newReaderResource(source); //synchronized (RuleUtil.class) { builder.add(newReaderResource, ResourceType.DRL); } result = builder.newKieBase(); return result; }
@Test(timeout = 10000) public void testCustomClassLoader() throws Exception { // JBRULES-3630 String absolutePath = new File("file").getAbsolutePath(); URL url = ChangeSetTest.class.getResource(ChangeSetTest.class.getSimpleName() + ".class"); File file = new File( url.toURI() ); File jar = null; while ( true ) { file = file.getParentFile(); jar = new File( file, "/src/test/resources/org/drools/compiler/compiler/xml/changeset/changeset.jar" ); if ( jar.exists() ) { break; } } ClassLoader classLoader = URLClassLoader.newInstance(new URL[]{jar.toURI().toURL()}, getClass().getClassLoader()); Resource changeSet = ResourceFactory.newClassPathResource("changeset1.xml", classLoader); KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, classLoader); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf); builder.add(changeSet, ResourceType.CHANGE_SET); } }
KnowledgeBuilderConfiguration kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, loader);
@Test(timeout=10000) public void testClassLoaderSwitchsUsingConf() throws Exception { try { // Creates first class loader and use it to load fact classes ClassLoader loader1 = new SubvertedClassLoader( new URL[]{getClass().getResource( "/" )}, this.getClass().getClassLoader() ); Class cheeseClass = loader1.loadClass( "org.drools.compiler.Cheese" ); KnowledgeBuilderConfiguration kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, loader1); KieBase kbase = loadKnowledgeBase( kbuilderConf, "test_Dynamic1.drl" ); KieSession wm = createKnowledgeSession(kbase); wm.insert( cheeseClass.newInstance() ); wm.fireAllRules(); // Creates second class loader and use it to load fact classes ClassLoader loader2 = new SubvertedClassLoader( new URL[]{getClass().getResource( "/" )}, this.getClass().getClassLoader() ); cheeseClass = loader2.loadClass( "org.drools.compiler.Cheese" ); kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, loader2); kbase = loadKnowledgeBase(kbuilderConf, "test_Dynamic1.drl"); wm = createKnowledgeSession(kbase); wm.insert(cheeseClass.newInstance()); wm.fireAllRules(); } catch ( ClassCastException cce ) { cce.printStackTrace(); fail( "No ClassCastException should be raised." ); } }
@Test public void testFunctionCallingFunctionWithJanino() throws Exception { KnowledgeBuilderConfiguration kbconf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); kbconf.setProperty( "drools.dialect.java.compiler", "JANINO" ); KieBase kbase = loadKnowledgeBase( kbconf, "test_functionCallingFunction.drl" ); KieSession ksession = createKnowledgeSession(kbase); final List<Integer> list = new ArrayList<Integer>(); ksession.setGlobal( "results", list ); ksession.fireAllRules(); assertEquals( 1, list.size() ); assertEquals( 12, list.get( 0 ).intValue() ); }
@Test public void testFunctionCallingFunctionWithEclipse() throws Exception { KnowledgeBuilderConfiguration kbconf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); kbconf.setProperty( "drools.dialect.java.compiler", "ECLIPSE" ); KieBase kbase = loadKnowledgeBase( kbconf, "test_functionCallingFunction.drl" ); KieSession ksession = createKnowledgeSession(kbase); final List<Integer> list = new ArrayList<Integer>(); ksession.setGlobal( "results", list ); ksession.fireAllRules(); assertEquals( 1, list.size() ); assertEquals( 12, list.get( 0 ).intValue() ); }
public Collection<KiePackage> loadKnowledgePackagesFromString(KnowledgeBuilderConfiguration kbuilderConf, String... content) { if (kbuilderConf == null) { kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); } KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderConf); for (String r : content) { kbuilder.add(ResourceFactory.newByteArrayResource(r.getBytes()),ResourceType.DRL); } if (kbuilder.hasErrors()) { fail(kbuilder.getErrors().toString()); } Collection<KiePackage> knowledgePackages = kbuilder.getKnowledgePackages(); return knowledgePackages; }
public Collection<KiePackage> loadKnowledgePackages(KnowledgeBuilderConfiguration kbuilderConf, PackageDescr descr) { if (kbuilderConf == null) { kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); } KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderConf); kbuilder.add(ResourceFactory.newDescrResource(descr), ResourceType.DESCR); if (kbuilder.hasErrors()) { fail(kbuilder.getErrors().toString()); } Collection<KiePackage> knowledgePackages = kbuilder.getKnowledgePackages(); return knowledgePackages; }
"\n"; KnowledgeBuilderConfiguration kbConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); kbConf.setOption( LanguageLevelOption.DRL5 ); KieBase kbase = loadKnowledgeBaseFromString( kbConf, drl );
public Collection<KiePackage> loadKnowledgePackages( KnowledgeBuilderConfiguration kbuilderConf, boolean serialize, String... classPathResources) { if (kbuilderConf == null) { kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); } KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderConf); for (String classPathResource : classPathResources) { kbuilder.add(ResourceFactory.newClassPathResource(classPathResource, getClass()), ResourceType.DRL); } if (kbuilder.hasErrors()) { fail(kbuilder.getErrors().toString()); } Collection<KiePackage> knowledgePackages = null; if ( serialize ) { try { knowledgePackages = SerializationHelper.serializeObject(kbuilder.getKnowledgePackages(), ((KnowledgeBuilderConfigurationImpl)kbuilderConf).getClassLoader() ); } catch (Exception e) { throw new RuntimeException(e); } } else { knowledgePackages = kbuilder.getKnowledgePackages(); } return knowledgePackages; }
@Test public void testInitialFactLeaking() { // DROOLS-239 String drl = "global java.util.List list;\n" + "rule R when\n" + " $o : Object()\n" + "then\n" + " list.add(1);\n" + "end\n"; KnowledgeBuilderConfiguration kbConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KieBase kbase = loadKnowledgeBaseFromString( kbConf, drl ); KieSession ksession = kbase.newKieSession(); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.fireAllRules(); assertEquals( 0, list.size() ); ksession.insert( "1" ); ksession.fireAllRules(); assertEquals( 1, list.size() ); ksession.insert( 1 ); ksession.fireAllRules(); assertEquals( 2, list.size() ); ksession.dispose(); }
KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); conf.setOption(PropertySpecificOption.ALLOWED);
@Test public void testNoLoopWithNamedConsequences() { // DROOLS-327 String drl = "import org.drools.compiler.Message\n" + "rule \"Hello World\" no-loop\n" + " when\n" + " m : Message( myMessage : message )\n" + " if (status == 0) do[sayHello]\n" + " then\n" + " System.out.println( myMessage );\n" + " m.setMessage( \"Goodbye cruel world\" );\n" + " m.setStatus( Message.GOODBYE );\n" + " update( m );\n" + " then[sayHello]\n" + " System.out.println(\"Hello, I'm here!\");\n" + "end\n"; KnowledgeBuilderConfiguration kbConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KieBase kbase = loadKnowledgeBaseFromString( kbConf, drl ); KieSession ksession = kbase.newKieSession(); ksession.insert( new Message( "Hello World" ) ); ksession.fireAllRules(); }
"end\n"; KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); config.setOption(PropertySpecificOption.ALWAYS); KieBase kbase = loadKnowledgeBaseFromString( config, rule );
"end \n"; KnowledgeBuilderConfiguration kbConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KieBase kbase = loadKnowledgeBaseFromString( kbConf, drl );
@Test(timeout = 5000) public void testConfig() throws Exception { String rule = "package org.drools.compiler.integrationtests\n" + "declare A\n" + " i : int\n" + " j : int\n" + "end\n" + "rule R1\n" + "when\n" + " $a : A(i == 1)\n" + "then\n" + " modify($a) { setJ(2) };\n" + "end\n"; KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); config.setOption(PropertySpecificOption.ALWAYS); KieBase kbase = loadKnowledgeBaseFromString( config, rule ); KieSession ksession = kbase.newKieSession(); FactType typeA = kbase.getFactType( "org.drools.compiler.integrationtests", "A" ); Object a = typeA.newInstance(); typeA.set( a, "i", 1 ); ksession.insert( a ); int rules = ksession.fireAllRules(); assertEquals(1, rules); }