Drools:为什么indexOf()在LHS中不起作用?

时间:2018-05-18 08:17:58

标签: drools

为什么我不能使用indexOf()在when的List中查找特定对象的索引? 这是一个例子。在我发表评论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 :(得分:1)

作为替代方案,您可以从模式中删除list.indexOf($o) > 0过滤器并添加新条件 eval($rr.getList().indexOf($o) > 0)在规则的时间部分。

答案 1 :(得分:0)

我确认indexOf()在LHS中有效。 我仍然不明白为什么它之前没有为我工作,但现在我在LHS中有indexOf的工作规则。

相关问题