我有一条规则,我需要在列表的每个成员上调用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 列表,它将在列表的每个成员上设置类别。
有人可以指导我如何在列表的每个成员上调用更新/修改
答案 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在引擎中也做得很好。