0
を返しません:StatelessKieSessionは、私は、このルールをDroolsの使用して、いくつかの検証を行いたい挿入したオブジェクト
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
私は最初の予想通り、初めての作品ステートフルKieSessionを、作成しました。しかし、ルールを再実行すると、検証の事実はまだメモリに残っています。これは私が望むものではありません。そこで、この例をステートレスKieSessionに調整しようとしました。 KieSession kSession
を使用
:
StatelessKieSession kSession
を使用
kSession.insert(req);
kSession.fireAllRules();
Collection<?> validations = kSession.getObjects(new ClassObjectFilter(Validation.class));
:
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");
ステートフルセッションはvalidations
コレクション内Validation
オブジェクトを返し、ステートレスKieSessionは、空のコレクションを返します。なぜ???
KIE/Droolsの:WildFly 10.1.0