我在Scala中使用以下代码块来创建一个KieContainer,我创建了一个新的KieSession:
val kieSession = DroolsMgt.getKieSession(List("myFile.drl"), Boot.kieServices){
val kfs = kieServices.newKieFileSystem()
for (filename
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项目中运行时,此代码一直运行正常,但是现在我在尝试通过调用 kieServices.getResources.newInputStreamResource(fis) 将我的drl文件用作资源时获得 null 值 .
因此,没有文件被加载到我的KieContainer中,并且在KieBase中没有创建KiePackages,这意味着任何时候都不会触发任何规则(即使是没有“when”条件的空白规则) .
什么可能导致KieResources返回null?是否有任何依赖项或导入需要注意?
编辑:我'm also running the following code to verify the contents of the DRL file being read. It' s按预期打印出来,但资源最终仍然是 null .
println("FIS Contents =\t" + sBuilder.toString())
val source = scala.io.Source.fromFile(filename)
println("DRL Source = \n")
source.getLines().foreach(x => println(x))
source.close()
val fisResource = kieResources.newInputStreamResource(fis)
println("Resource = \t" + fisResource)