在drools then子句中更新列表

时间:2015-07-24 03:56:23

标签: java drools

我有一条规则,我需要在列表的每个成员上调用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 列表,它将在列表的每个成员上设置类别。

有人可以指导我如何在列表的每个成员上调用更新/修改

1 个答案:

答案 0 :(得分:1)

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

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在引擎中也做得很好。