Как видно из приведенной выше ссылки в комментарии (от Prog_G), я реализовал ConsequenceExceptionHandler и изящно обработал исключение в методе handleException, зарегистрировал сбойный факт и удалил его из выполнения дальнейших правил, пример кода приведен ниже. Надеюсь, что это поможет кому-то, имеющему похожие варианты использования.
// Создание сеанса Drools
KieBaseConfiguration kconfig = new RuleBaseConfiguration();
kconfig.setProperty(ConsequenceExceptionHandlerOption.PROPERTY_NAME, "com.xxx.RuleExceptionHandler"); // set my exception handler name to RuleBaseConfiguration
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieBase kieBase = kContainer.newKieBase("ims-hw-rules",kconfig); // create KieBase passing the config
KieSession kSession = kieBase.newKieSession();
// Реализация ConsequenceExceptionHandler.
public class RuleExceptionHandler implements ConsequenceExceptionHandler{
@Override
public void handleException(Match match, RuleRuntime workingMemory, Exception exception) {
//if(exception instanceof MyException) {
if(match.getObjects().size() >0) {
for (Object object : match.getObjects()) {
JSONData fact = (JSONData) object;
//logFailedFact(fact);
}
}
if(match.getFactHandles()!= null) {
for (FactHandle factHandle : match.getFactHandles()) {
workingMemory.delete(factHandle); // delete the failed fact from executing remaining rules.
}
}
//}
}
}