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 ); }
public KnowledgeBase newKnowledgeBase() { KnowledgeBuilderErrors errors = getErrors(); if (errors.size() > 0) { for (KnowledgeBuilderError error: errors) { logger.error(error.toString()); } throw new IllegalArgumentException("Could not parse knowledge."); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(getKnowledgePackages()); return kbase; }
/** * Creates a Drools KnowledgePackage from a Resource. * @param res the Resource * @param loader the ClassLoader to use * @return the KnowledgePackage */ public static KnowledgePackage create(Resource res, ClassLoader loader) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); Resources.add(res, kbuilder, loader); Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages(); KnowledgeBaseFactory.newKnowledgeBase().addKnowledgePackages(kpkgs); return kpkgs.iterator().next(); }
/** * Add some knowledge packages into the provided {@link KnowledgeBase}, by using the * given {@link KnowledgeBuilder}. * * @param builder a knowledge builder * @param knowledgeBase a knowledge base */ public void addPackage(final KnowledgeBuilder builder, final KnowledgeBase knowledgeBase) { Reader drlFileReader = new StringReader(drlFile); builder.add(ResourceFactory.newReaderResource(drlFileReader), ResourceType.DRL); if (builder.hasErrors()) { logger.log(Level.WARNING, builder.getErrors().toString()); } logger.log(Level.INFO, "Drl file loaded"); knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages()); }
public Void execute(Context context) { KnowledgeBuilder kbuilder = ((KnowledgeCommandContext) context).getKnowledgeBuilder(); if (kbuilder.hasErrors()) { throw new IllegalStateException("There are rule compilation errors:\n" + kbuilder.getErrors().toString()); } KnowledgeBase kbase = ((KnowledgeCommandContext) context).getKnowledgeBase(); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); return null; }
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()); } }
public synchronized void reloadPackage(String packageName) throws RuleBaseException { long start = System.currentTimeMillis(); packageStrings.clear(); StringBuffer packageString = initNewPackageString(packageName); for (RuleBaseElementId id : manager.list(RuleBaseElementType.Function, packageName)) { String code = manager.get(id); packageString.append(code); } for (RuleBaseElementId id : manager.list(RuleBaseElementType.Rule, packageName)) { String code = manager.get(id); String formattedRule = String.format(RULE_TEMPLATE, id.getName(), code); packageString.append(formattedRule); } Collection<String> flows = queryFlows(packageName); Collection<KnowledgePackage> compiledPackage = compileDrlString(packageString.toString(), flows); if (base.getKnowledgePackage(packageName) != null) { base.removeKnowledgePackage(packageName); } base.addKnowledgePackages(compiledPackage); LOGGER.info("Reloading only package {} took {}ms", packageName, System.currentTimeMillis() - start); }
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; }
kconf.setOption( equalsBehaviour ); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kconf); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); return kbase;
public synchronized void reloadPackage(String packageName) throws RuleBaseException { long start = System.currentTimeMillis(); reloadDeclarations(); packageStrings.clear(); StringBuffer packageString = initNewPackageString(packageName); for (RuleBaseElementId id : manager.list(RuleBaseElementType.Function, packageName)) { String code = manager.get(id); packageString.append(code); } for (RuleBaseElementId id : manager.list(RuleBaseElementType.Rule, packageName)) { String code = manager.get(id); String formattedRule = String.format(RULE_TEMPLATE, id.getName(), code); packageString.append(formattedRule); } Collection<String> flows = queryFlows(packageName); Collection<KnowledgePackage> compiledPackage = compileDrlString(packageString.toString(), flows); lockRuleBase(); if (base.getKnowledgePackage(packageName) != null) { base.removeKnowledgePackage(packageName); } base.addKnowledgePackages(compiledPackage); unlockRuleBase(); LOGGER.info("Reloading only package {} took {}ms", packageName, System.currentTimeMillis() - start); }
private StatelessKnowledgeSession createStatelessSession(){ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(new ClassPathResource("good_old_patterns/car-ranking-rules.drl"), ResourceType.DRL); if (kbuilder.hasErrors()) { for (KnowledgeBuilderError error : kbuilder.getErrors()) { System.out.println(">>> Error:" + error.getMessage()); } throw new IllegalStateException(">>> Knowledge couldn't be parsed! "); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase.newStatelessKnowledgeSession(); }
private static StatelessKnowledgeSession createStatelessSession(String rules){ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(new ClassPathResource(rules), ResourceType.DRL); if (kbuilder.hasErrors()) { for (KnowledgeBuilderError error : kbuilder.getErrors()) { System.out.println(">>> Error:" + error.getMessage()); } throw new IllegalStateException(">>> Knowledge couldn't be parsed! "); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase.newStatelessKnowledgeSession(); }
private StatelessKnowledgeSession createStatelessSession(){ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(new ClassPathResource("good_old_patterns/car-pricing-rules.drl"), ResourceType.DRL); if (kbuilder.hasErrors()) { for (KnowledgeBuilderError error : kbuilder.getErrors()) { System.out.println(">>> Error:" + error.getMessage()); } throw new IllegalStateException(">>> Knowledge couldn't be parsed! "); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase.newStatelessKnowledgeSession(); }
public static KnowledgeBase createKnowledgeBase(GridNode node,String resource,String resourcetype){ if ( node == null ) { node = new GridNodeImpl(); } //kbase configuration PackageBuilderConfiguration kconf = (PackageBuilderConfiguration) KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null,DroolsBlueprintBean.class.getClassLoader()); //kbuilder KnowledgeBuilder kbuilder = node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder( kconf); kbuilder.add(parseResource(resource),ResourceType.getResourceType(resourcetype)); // error handling KnowledgeBuilderErrors errors = kbuilder.getErrors(); if ( !errors.isEmpty() ) { throw new RuntimeException( errors.toString() ); } //KnowledgeBase KnowledgeBaseConfiguration kbaseConfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(null, DroolsBlueprintBean.class.getClassLoader()); KnowledgeBase kbase = node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(kbaseConfig); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); return kbase; }
private StatefulKnowledgeSession createKnowledgeSession(){ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(new ClassPathResource("simpleEventAnalysis.drl"), ResourceType.DRL); if (kbuilder.hasErrors()) { for (KnowledgeBuilderError error : kbuilder.getErrors()) { System.out.println(" >>> Error:" + error.getMessage()+"\n"); } throw new IllegalStateException(">>> Knowledge couldn't be parsed! "); } KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption(EventProcessingOption.STREAM); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(config); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); KnowledgeSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); sessionConfig.setOption( ClockTypeOption.get("realtime") ); return kbase.newStatefulKnowledgeSession(sessionConfig, null); }
@Inject public void init() { KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); KnowledgeBaseConfiguration kBaseConfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(config); InputStream rules = securityRules != null ? securityRules : webInfSecurityRules; if (rules != null) { org.drools.io.Resource resource = ResourceFactory.newInputStreamResource(rules); kbuilder.add(resource, ResourceType.DRL); KnowledgeBuilderErrors kbuildererrors = kbuilder.getErrors(); if (kbuildererrors.size() > 0) { for (KnowledgeBuilderError kbuildererror : kbuildererrors) { log.error(kbuildererror.getMessage()); } } kbase = KnowledgeBaseFactory.newKnowledgeBase(kBaseConfig); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); } else { log.warn("No security rules configured - rule base permissions will be unavailable."); } } }
protected KnowledgeBase loadKnowledgeBaseFromString(KnowledgeBuilderConfiguration config, KnowledgeBaseConfiguration kBaseConfig, String... drlContentStrings) { KnowledgeBuilder kbuilder = config == null ? KnowledgeBuilderFactory.newKnowledgeBuilder() : KnowledgeBuilderFactory.newKnowledgeBuilder( config ); for ( String drlContentString : drlContentStrings ) { kbuilder.add( ResourceFactory.newByteArrayResource(drlContentString.getBytes()), ResourceType.DRL ); } if ( kbuilder.hasErrors() ) { fail( kbuilder.getErrors().toString() ); } if ( kBaseConfig == null ) { kBaseConfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kBaseConfig ); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); return kbase; }
kbaseConf.setOption(EventProcessingOption.STREAM); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConf); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );