如何在drools规则中从列表中插入对象?

Ton*_*ony 0 drools

当包含此规则以供运行时,我想在 then 部分中动态插入对象列表。

rule "insert adresses"
  when
  $person:Person(state=="DC")
   then
       //insert all address of this person, person.getAddresses() return a set of Address
Run Code Online (Sandbox Code Playgroud)

Est*_*rti 5

2种可能的方式:

rule "insert adresses"
when
  $person: Person(state=="DC")
  $a: Address() from $person.getAddresses()
then
  insert($a);
end
Run Code Online (Sandbox Code Playgroud)

rule "insert adresses"
when
  $person: Person(state=="DC")
then
  for (Address a : $person.getAddresses()){
    insert(a);
  }
end
Run Code Online (Sandbox Code Playgroud)

两个规则的结果相同。如果您想向要插入的地址添加一些过滤器,则选项一可能更好。

希望能帮助到你,