protected Collection<KnowledgePackage> compileResources( Map<Resource, ResourceType> resources, boolean enablePropertySpecificFacts) { KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); if (enablePropertySpecificFacts) { conf.setOption(PropertySpecificOption.ALLOWED); } else { conf.setOption(PropertySpecificOption.DISABLED); } KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf); for (Map.Entry<Resource, ResourceType> entry : resources.entrySet()) { kbuilder.add(entry.getKey(), entry.getValue()); if (kbuilder.hasErrors()) { Logger.getLogger(Case1.class.getName()) .log(Level.SEVERE, "Compilation Errors in {0}", entry.getKey()); Iterator<KnowledgeBuilderError> iterator = kbuilder.getErrors().iterator(); while (iterator.hasNext()) { KnowledgeBuilderError knowledgeBuilderError = iterator.next(); Logger.getLogger(Case1.class.getName()) .log(Level.SEVERE, knowledgeBuilderError.getMessage()); System.out.println(knowledgeBuilderError.getMessage()); } throw new IllegalStateException("Compilation Errors"); } } return kbuilder.getKnowledgePackages(); }
private static KnowledgeBase readKnowledgeBase(String name) throws Exception { KnowledgeBuilderConfiguration kconf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); kconf.setProperty("drools.dump.dir", "/home/kylin/work/tmp/974943"); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kconf); kbuilder.add(ResourceFactory.newClassPathResource(name), ResourceType.DRL); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase; }