我在Scala中使用以下代码块来创建一个KieContainer,我创建了一个新的KieSession:
val kieSession = DroolsMgt.getKieSession(List("myFile.drl"), Boot.kieServices){
val kfs = kieServices.newKieFileSystem()
for (filename <- drlFiles) {
val fis = new FileInputStream(filename)
kfs.write(filename, kieServices.getResources.newInputStreamResource(fis))
}
val kieBuilder = kieServices.newKieBuilder(kfs).buildAll()
val kieContainer = kieServices.newKieContainer(kieServices.getRepository.getDefaultReleaseId)
kieContainer.newKieSession()
}
这个代码在Drools-only项目中运行时运行得很好,但是现在我将它集成到一个涉及Actor系统等的大型项目中。我得到了{{1}尝试通过调用null
将我的drl文件用作资源时的值。
因此,没有任何文件被加载到我的KieContainer中,并且KieBase中没有创建任何KiePackages,这意味着任何时候都不会触发任何规则(即使是没有&#34的空白规则;当&#34;条件时)
什么可能导致KieResources返回null?是否有任何依赖项或导入需要注意?
编辑:
我还运行以下代码来验证正在读取的DRL文件的内容。它按预期打印出来,但资源最终仍为kieServices.getResources.newInputStreamResource(fis)
。
null