Basil Saju
Basil Saju

Reputation: 1

Error: The requested KieBase "normalRulesKBase" does not exist in Drools

I'm working on creating multiple KieSessions dynamically using Drools in Scala. I have two sets of rules stored in different folders (slidingwindow and normal) within the resources/rules directory. The rules are fetched from a database and written to the KieFileSystem. However, when I run the code in the Spark shell, I encounter the following error:

java.lang.RuntimeException: The requested KieBase "normalRulesKBase" does not exist
    at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBaseModelImpl(KieContainerImpl.java:487)
    at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:433)
    at createKieSessionWithRules

Here is the relevant Scala code:

def createKieSessionWithRules(drl: String): KieSession = {
    val kieServices = KieServices.Factory.get()
    val rules = "import com.sample.model.RuleTemplate\n" + drl
    val packageDeclaration = "package rules.normal;"
    val finalDrl = if (!rules.contains("package ")) {
        s"$packageDeclaration\n$rules"
    } else {
        rules
    }

    val kieFileSystem = kieServices.newKieFileSystem()
    kieFileSystem.write("src/main/resources/rules/normal/normal_rules.drl", finalDrl)

    val kieBuilder: KieBuilder = kieServices.newKieBuilder(kieFileSystem)
    kieBuilder.buildAll()

    val results = kieBuilder.getResults()
    if (results.hasMessages(Message.Level.ERROR)) {
        throw new RuntimeException("Build Errors:\n" + results.toString())
    }

    val kieContainer: KieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId())
    val kieBase = kieContainer.getKieBase("normalRulesKBase") // Error here
    val ksession: KieSession = kieBase.newKieSession()

    if (ksession == null) {
        throw new RuntimeException("Failed to create normalRulesKSession")
    } else {
        println("normalRulesKSession created successfully")
    }

    ksession
}

Upvotes: 0

Views: 55

Answers (0)

Related Questions