在 drools then 子句中更新列表

Updating a list in drools then clause

我有一个规则,我需要对列表的每个成员调用 update/modify。像

when
    $students : ArrayList() from collect (Student (age > 20))
then
    # update all the students in $students list with category as Senior
    # call modify/update for every element of $students list

我可以调用一个函数并将其传递给 $students 列表,这将为列表的每个成员设置类别。

谁能指导我如何对列表中的每个成员调用 update/modify

第一条规则有效,但首选第二条规则:

rule setcat-1
when
  $students : List() 
    from collect (Student (age > 20, cat != "senior"))
then
  for( int i = 0; i < $students.size(); ++i ){
    Student s = (Student)$students.get( i );
    modify( s ){ setCat( "senior" ) }
  }
end

rule setcat-2
when
  $student : Student (age > 20, cat != "senior")
then
  modify( $student ){ setCat( "senior" ) }
end

没有理由将所有事实收集到一个列表中以便您可以对其进行迭代。 Drools 在引擎中也能做到这一点。