Drools-修改列表中的特定对象?

Drools-修改列表中的特定对象?,drools,Drools,我想知道如何修改列表中的对象。我试着跟随,但它给出了一个错误 when Category( $bookList : books ) UserProfile( profile == UserProfile.STUDENT ) $book : Book( student == true ) $category : Category( books contains $group ) then modify( $cate

我想知道如何修改列表中的对象。我试着跟随,但它给出了一个错误

when
        Category( $bookList :  books ) 
        UserProfile( profile == UserProfile.STUDENT )
        $book : Book( student == true )
        $category : Category( books contains $group )
then
        modify( $category.books[$book] ) { setEligible(true) }
end
Book.SetQualified是我需要调用的方法。但我需要为Cackegory.books列表中的选定对象调用此函数。我做错了什么?有人能帮忙吗


谢谢

第一件事:您确定要在规则中包含两种不同的类别模式吗?如果您有两个不同的类别,您可能会执行该规则的4次

第二件事,如果你想修改这本书,你为什么不这样做:

modify($book) {
    setEligible(true)
}

希望对你有所帮助,

你还需要确保这本书是事实。。这意味着您正在将该事实插入到会话中。。
您得到的错误是什么?您使用的是哪个版本的drools?

我正在修改嵌套集合中的一个项,如下所示。。。 [使用“from”]


解释-
此行匹配$tr.cascadeList中PtnCascade的每个实例
您可以在此处添加一个附加模式,以限制列表中的选定项目

$ptncascade: PtnCascade() from $tr.cascadeList
下一行操作匹配的PtnCascade()的每个实例

Timestamp() from $ptncascade.cascadeFact.actual4g
结果也对列表中匹配的特定PtnCascade起作用-

$ptncascade.getCascadeFact().setComplete4g(true);

我试图修改列表中的对象,因为我只插入了“Category”对象作为事实。如果我将Book作为事实插入,那么我可以使用
modify($Book){setqualified(true)}
轻松地进行修改。但是我很好奇,如果这个对象位于一个列表中,怎么做。我得到一个错误,说“合格”不可见。我用的是Drools 5.5.0.final。
$ptncascade.getCascadeFact().setComplete4g(true);