0

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

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.setEligible 是我需要调用的方法。但我需要为 Cagegory.books 列表中的选定对象调用它。我究竟做错了什么 ?谁能帮忙?

谢谢 !

4

3 回答 3

1

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

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

modify($book) {
    setEligible(true)
}

希望能帮助到你,

于 2013-08-02T12:01:55.523 回答
0

我正在像这样修改嵌套集合中的项目... [使用“来自”]

rule "4G complete" 
salience -1
when 
    $tr: TopTowerResult()
    $ptncascade: PtnCascade() from $tr.cascadeList
    Timestamp() from $ptncascade.cascadeFact.actual4g
then 
    $ptncascade.getCascadeFact().setComplete4g(true);
    $ptncascade.getCascadeFact().setEstimate4g("Completed");
end


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

$ptncascade: PtnCascade() from $tr.cascadeList

下一行对匹配的每个 PtnCascade() 实例进行操作。

Timestamp() from $ptncascade.cascadeFact.actual4g

结果也作用于列表中匹配的特定 PtnCascade -

$ptncascade.getCascadeFact().setComplete4g(true);
于 2014-01-19T02:20:48.453 回答
0

您还需要确保 Book 是一个事实。这意味着您正在将该 Fact 插入到 Ksession 中。您得到的错误是什么?你用的是哪个版本的口水?

于 2013-08-02T17:57:39.563 回答