java.lang.RuntimeException: Unexpected global [log]
at org.drools.core.impl.StatefulKnowledgeSessionImpl.setGlobal(StatefulKnowledgeSessionImpl.java:1163)
- DRLs are retrieved from a database as list of Strings.
- We dont use kmodule.xml Following the comments : The DRL (minimized the setup to try and locate the issue) is loaded without a hitch but somehow the globals defined in it, are not .
KieSession creation code
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
KieFileSystem kFileSystem = ks.newKieFileSystem();
int i=0;
for (String ruleId : drls.keySet()){
Resource resource = ks.getResources().newByteArrayResource(drls.get(ruleId).getBytes());
resource.setTargetPath("./out/"+ ruleId +".drl");
resource.setResourceType(ResourceType.DRL);
kFileSystem.write(resource);
}
KieBuilder kieBuilder = ks.newKieBuilder( kFileSystem );
kieBuilder.buildAll();
KieBuilder kieBuilder = ks.newKieBuilder( kFileSystem );
kieBuilder.buildAll();
if (kieBuilder.getResults().hasMessages(Message.Level.ERROR)) {
log.error(PolicyUtils.createMsg("DRL Errors:\n" + kieBuilder.getResults().toString()), context, null, null);
throw new RuntimeException("DRL Errors:\n" + kieBuilder.getResults().toString());
}
kContainer = ks.newKieContainer(kr.getDefaultReleaseId());
kContainer.newKieSession();