如何让Drools的'from`条件元素返回集合?

时间:2015-12-16 18:58:53

标签: drools

如何让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

我不想两次调用该函数,我不想更改函数本身。

1 个答案:

答案 0 :(得分:1)

诀窍是使用from collectfrom accumulate构造在另一个集合中收集集合的元素。

rule "test Set"
when
    $s : Set() from collect(String() from testFunction())
then
    System.out.println($s);
end

希望它有所帮助,