I have a spring-boot project that uses
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-ruleunits-engine</artifactId>
<version>8.33.0.Final</version>
</dependency>
I have rules set up using a RuleUnit and everything works correctly when running basic Unit Tests. In my Unit Tests I use this line: RuleUnitProvider.get().createRuleUnitInstance(requestAccessUnit);
to create a RuleUnitInstance and it works w/o issue.
However, when I try to instantiate the same RuleUnitInstance in my @RequestController
I get the following error:
java.lang.RuntimeException: Cannot find any rule unit for RuleUnitData of class:yyyy.xxxx.zzzz.RuleUnit
The previous log statement shows KieProject - No files found for KieBase defaultKieBase
which leads me to believe that it's not able to load the rule files into the KieBase.
Do I have to use the kie-maven-plugin
and change my package to kjar
in order for this to work? Is there a way to get this to work w/o using the kjar
packaging? The way our build is set up makes it very problematic to use kjar.
I didn't see a lot in the documentation regarding using RuleUnits in Spring Boot so I am not sure how to proceed. I tried doing this in Kogito as well and ran into the same issue.
For best integration of Drools with Spring Boot and per your StackOverflow question tags, you should consider using Kogito --and therefore using the Kogito API or Kogito Incubation API (rather than just directly the Drools API).