如何让conditional element from
在Drools中返回完整的集合?
不幸的是,条件元素专门用于from
元素的“表达式”(即右侧)上的集合。以这些规则为例,只有test String
规则触发,但我只想触发test Set
规则:
import java.util.Set;
import java.util.Collections;
function Set testFunction() {
return Collections.singleton("FOO");
}
rule "test Set"
when
$s : Set() from testFunction()
then
System.out.println($s);
end
rule "test String"
when
$s : String() from testFunction()
then
System.out.println($s);
end
我不想两次调用该函数,我不想更改函数本身。
答案 0 :(得分:1)
诀窍是使用from collect
或from accumulate
构造在另一个集合中收集集合的元素。
rule "test Set"
when
$s : Set() from collect(String() from testFunction())
then
System.out.println($s);
end
希望它有所帮助,