Слюни: почему indexOf () не работает в LHS? - PullRequest
0 голосов
/ 18 мая 2018

Почему я не могу использовать indexOf () для поиска индекса определенного объекта в Списке в when?Вот пример.После того как я закомментировал list.indexOf($o) > 0, правило выполняется, и индекс показывает правильное значение в секции then.

declare Seq
list: List
end

rule "initSeq"
when
    $p: ObjectWrapper (
       ...
    )
    $list: List () from collect (ObjectWrapper (...))
    not initSeq (....)
then
    Seq w = new Seq ();
    w.setList($list);
end

rule "doSeq"
when:
    $o: ObjectWrapper (
       ...
    )
    $rr: Seq (
       ...
       list.indexOf($o) > 0
    )
then:
    DroolsLogger.debug ("index: " + $rr.getList().indexOf($o));
end

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Я подтверждаю, что indexOf () работает в LHS.Я до сих пор не понимаю причину, по которой он раньше не работал, но теперь у меня есть рабочее правило с indexOf в LHS.

0 голосов
/ 26 мая 2018

В качестве альтернативы, вы можете удалить list.indexOf($o) > 0 фильтр из шаблона и добавить новое условие как eval($rr.getList().indexOf($o) > 0) в когда часть правила.

...