我希望在运行此规则时动态插入then部分中的对象列表。
rule "insert adresses"
when
$person:Person(state=="DC")
then
//insert all address of this person, person.getAddresses() return a set of Address
答案 0 :(得分:4)
2种可能的方式:
rule "insert adresses"
when
$person: Person(state=="DC")
$a: Address() from $person.getAddresses()
then
insert($a);
end
和
rule "insert adresses"
when
$person: Person(state=="DC")
then
for (Address a : $person.getAddresses()){
insert(a);
}
end
两条规则都有相同的结果。如果您想为要插入的地址添加一些过滤器,也许第一个选项会更好。
希望它有所帮助,
答案 1 :(得分:1)
事实上我认为存在一些差异。在选项1中,每个地址将激活一次并触发。在选项2中,每人只需激活一次。 确实,使用第二个选项你不能以一种很好的方式过滤地址,但你肯定会减少点火。这一切都取决于你想对地址做什么,以及你是否关心点火。