规则引擎 Drools(十):条件元素 from 和 collect

from

from 允许指定任意数据源进行模式匹配。

数据源可以不在工作内存(Working Memory)中,而是绑定变量的字段或者方法返回的结果等。

示例:

匹配组内所有的妹子,然后 say hello。

rule "test from"  
    when
        Group($members: members)
        $p: Person(sex == "female") from $members
    then
        System.out.println("Hello " + $p.getName() + "!");
end  

collect

collect 用于将所有匹配的元素放入一个数据集中。

示例:

匹配所有的妹子放入列表中,打印有多少妹子。

rule "test collect"  
    when
        $girls: List() from collect(Person(sex == "female"))
    then
        System.out.println($girls.size() + " grils!");
end