我是一個Jboss規則的新手。我已經閱讀了文檔,但是我沒有找到開始爲以下代碼示例編寫規則的方法。Drools JBOSS規則嵌套IF的
For each User code in the list
{
If User code = ‘11’
{
If User code ‘17’ present in the group
{
Add letter id 1
}
Else If User code ‘18’ present in the group
{
Add letter id 2
}
}
Else
{
Add letter id 3 which is the letter need to be sent for code 11
}
}
我真的很感激,如果有人可以給我一個提示/想法如何去呢?
編輯:
嗨,
到目前爲止,這是我能爲上述討論的用戶的情況下發展。
- 我插入(列表
UserDetailVo
)到drools會話。 - 對象(
UserDetailVo
)包含(列表UserInfoVo
)。每個UserInfoVo
包含一個代碼。
現在我想遍歷(的UserInfoVo
列表)和更新(letterId
)的每一個(UserDetailVo
),因爲我想在下面做。
情況1:當編碼表具有110121
rule "USER LETTER GROUPING 110,121"
salience 300
no-loop true
when
userDetailVo : UserDetailVo()
UserInfoVo(code=="110") from userDetailVo.codeList
UserInfoVo(code=="121") from userDetailVo.codeList
then
userDetailVo.addLetterId(1);
//modify(trrDetailRequestVo)
end
情況2:當編碼表具有110127
rule "USER LETTER GROUPING 110,127"
salience 300
no-loop true
when
userDetailVo : UserDetailVo()
UserInfoVo(code=="110") from userDetailVo.codeList
UserInfoVo(code=="127") from userDetailVo.codeList
then
userDetailVo.addLetterId(2);
//modify(trrDetailRequestVo)
end
情形3:當編碼表僅具有110
rule "USER LETTER GROUPING 110"
salience 300
no-loop true
when
userDetailVo : UserDetailVo (this.letterID.size() == 0) // Checking size of the list
UserInfoVo(code=="110") from userDetailVo.codeList
then
userDetailVo.addLetterId(3);
//modify(trrDetailRequestVo)
end
我面臨的問題是如果我在規則的末尾修改/更新用戶。它進入無限循環。如果我刪除修改/更新,在情況3,但如果列表大小,如果大於0仍然規則被激發。
還沒有足夠的信息,讓我們來算你的類型。我看到'User','Letter',但不明白'Group'是什麼以及它與'User'的關係。 – Osw 2012-03-19 21:14:27
我已更新問題陳述。 Thanx – 2012-03-20 07:02:53