在Scala中创建新的Drools KieSession的“正确”方法是什么?我发现的资源主要是基于Java的,我已经适应了Scala并得到了类似的东西(有效):
def getKieSession(fileName: String): KieSession = {
val kieServices = KieServices.Factory.get()
val kfs = kieServices.newKieFileSystem()
val fis = new FileInputStream(fileName)
kfs.write("src/main/resources/rulesfile.drl", kieServices.getResources().newInputStreamResource(fis))
val kieBuilder = kieServices.newKieBuilder(kfs).buildAll()
val results = kieBuilder.getResults()
if (results.hasMessages(Message.Level.ERROR)) {
throw new RuntimeException(results.getMessages().toString())
}
val kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId())
val kieBase = kieContainer.getKieBase() //Necessary?
kieContainer.newKieSession()
}
我正在尝试简化代码并在调用Kie服务和创建新的KieSession之间拆分功能。我相信创建一个新会话需要整个方法,但我不确定中间位是否必要(kfs.write)。
对此有何指导? (另外,是的,仍然在修补Scala + Drools)