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); }
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); }
KnowledgePackageImp oldPackage = (KnowledgePackageImp) this.kbase.getKnowledgePackage( newPackage.getName() ); AbstractRuleBase abstractRuleBase = (AbstractRuleBase) ((KnowledgeBaseImpl) this.kbase).ruleBase; CompositeClassLoader rootClassLoader = abstractRuleBase.getRootClassLoader();