当包含此规则以供运行时,我想在 then 部分中动态插入对象列表。
rule "insert adresses"
when
$person:Person(state=="DC")
then
//insert all address of this person, person.getAddresses() return a set of Address
当包含此规则以供运行时,我想在 then 部分中动态插入对象列表。
rule "insert adresses"
when
$person:Person(state=="DC")
then
//insert all address of this person, person.getAddresses() return a set of Address
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 中,每个地址将有一个激活和触发。在选项 2 中,每人只有一次激活和开火。确实,使用第二个选项您无法以一种很好的方式过滤地址,但您肯定会减少触发次数。这完全取决于您想对地址做什么以及您是否关心解雇。