我在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项目中运行时,此代码一直运行正常,但是现在我在尝试通过调用 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)