public void initializeRules() { // To ensure the plugin classloader use for dependency resolution ClassLoader orig = Thread.currentThread().getContextClassLoader(); ClassLoader loader = getClass().getClassLoader(); Thread.currentThread().setContextClassLoader( loader ); Resource ruleSet = null; if ( ruleString != null ) { ruleSet = ResourceFactory.newReaderResource( new StringReader( ruleString ) ); } else { ruleSet = ResourceFactory.newFileResource( ruleFilePath ); } kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ruleSet, ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.out.println( kbuilder.getErrors().toString() ); throw new RuntimeException( BaseMessages.getString( PKG, "RulesData.Error.CompileDRL" ) ); } Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages(); kbase = KnowledgeBaseFactory.newKnowledgeBase(); // Cache the knowledge base as its creation is intensive kbase.addKnowledgePackages( pkgs ); // reset classloader back to original Thread.currentThread().setContextClassLoader( orig ); }
public void initializeRules() { // To ensure the plugin classloader use for dependency resolution ClassLoader orig = Thread.currentThread().getContextClassLoader(); ClassLoader loader = getClass().getClassLoader(); Thread.currentThread().setContextClassLoader( loader ); Resource ruleSet = null; if ( ruleString != null ) { ruleSet = ResourceFactory.newReaderResource( new StringReader( ruleString ) ); } else { ruleSet = ResourceFactory.newFileResource( ruleFilePath ); } kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ruleSet, ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.out.println( kbuilder.getErrors().toString() ); throw new RuntimeException( BaseMessages.getString( PKG, "RulesData.Error.CompileDRL" ) ); } Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages(); kbase = KnowledgeBaseFactory.newKnowledgeBase(); // Cache the knowledge base as its creation is intensive kbase.addKnowledgePackages( pkgs ); // reset classloader back to original Thread.currentThread().setContextClassLoader( orig ); }
private static void compileChangeSet(String changeSet, String outputDir) { Long start=System.currentTimeMillis(); KnowledgeAgent kAgent = KnowledgeAgentFactory.newKnowledgeAgent( "CompilerAgent" ); kAgent.applyChangeSet(ResourceFactory.newFileResource(changeSet)); Collection<KnowledgePackage> kPackages = kAgent.getKnowledgeBase().getKnowledgePackages(); for (KnowledgePackage kPackage : kPackages) { String packageName = kPackage.getName(); try { String fileName=outputDir+"/"+packageName+".pkg"; DroolsStreamUtils.streamOut(new FileOutputStream(fileName), kPackage); System.out.println("File '"+fileName+"' was created."); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } System.out.format("Compilation time: %,dms\n", System.currentTimeMillis() - start); } }
private void addProcessesFromConsoleDirectory(KnowledgeBase kbase, Properties consoleProperties) { String directory = System.getProperty("jbpm.console.directory") == null ? consoleProperties.getProperty("jbpm.console.directory") : System.getProperty("jbpm.console.directory"); if (directory == null || directory.length() < 1 ) { logger.info("jbpm.console.directory property not found - processes from local file system will not be loaded"); } else { File file = new File(directory); if (!file.exists()) { throw new IllegalArgumentException("Could not find " + directory); } if (!file.isDirectory()) { throw new IllegalArgumentException(directory + " is not a directory"); } ProcessBuilderFactory.setProcessBuilderFactoryService(new ProcessBuilderFactoryServiceImpl()); ProcessMarshallerFactory.setProcessMarshallerFactoryService(new ProcessMarshallerFactoryServiceImpl()); ProcessRuntimeFactory.setProcessRuntimeFactoryService(new ProcessRuntimeFactoryServiceImpl()); BPMN2ProcessFactory.setBPMN2ProcessProvider(new BPMN2ProcessProviderImpl()); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); for (File subfile: file.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".bpmn") || name.endsWith("bpmn2"); }})) { logger.info("Loading process from file system: " + subfile.getName()); kbuilder.add(ResourceFactory.newFileResource(subfile), ResourceType.BPMN2); } kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); } }
private KnowledgeBase createKnowledgeBase(File[] files) throws MojoExecutionException { KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add(ResourceFactory.newClassPathResource("drools-globals.drl", getClass()), ResourceType.DRL); for (File file : files) { getLog().info("Parsing rule file " + file.getAbsolutePath()); builder.add(ResourceFactory.newFileResource(file), ResourceType.DRL); } if (builder.hasErrors()) { getLog().error("Rule errors:"); for (KnowledgeBuilderError error : builder.getErrors()) { getLog().error(error.toString()); } throw new MojoExecutionException("Unable to create rules. See log for details."); } KnowledgeBase base = KnowledgeBaseFactory.newKnowledgeBase(); base.addKnowledgePackages(builder.getKnowledgePackages()); return base; }
return name.endsWith(".bpmn") || name.endsWith("bpmn2"); }})) { kbuilder.add(ResourceFactory.newFileResource(subfile), ResourceType.BPMN2);