Я хочу сделать некоторые проверки с помощью этого Drools правило:StatelessKieSession не возвращает вставленные объекты
rule "Test"
when
MyRequest(paymentTerm == PaymentTerm.MONTH);
then
Validation val = new Validation();
val.setIsValid(true);
val.setDescription("It's a monthly term!");
insert(val);
end
Я первым создал Statefull KieSession, который работает, как и ожидалось, в первый раз. Однако, когда я повторяю правило, факты проверки остаются в памяти, чего я не хочу. Итак, я попытался настроить пример на безгражданство KieSession.
Использование KieSession kSession
:
kSession.insert(req);
kSession.fireAllRules();
Collection<?> validations = kSession.getObjects(new ClassObjectFilter(Validation.class));
Использование StatelessKieSession kSession
:
List<Command> cmds = new ArrayList<>();
cmds.add(CommandFactory.newInsert(req, "request"));
cmds.add(CommandFactory.newGetObjects(new ClassObjectFilter(Validation.class), "validations"));
ExecutionResults results = kSession.execute(CommandFactory.newBatchExecution(cmds));
Collection<?> validations = (Collection<?>) results.getValue("validations");
statefull сессия возвращает Validation
объект в validations
коллекции и лица без гражданства KieSession возвращает пустую коллекцию. Зачем???
КИЕ/Drools: 6.5.0.Final
Java EE 7, с помощью CDI на WildFly 10.1.0