日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Drools決策表操作執行順序的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個Drools決策表(見下文),其中規則2有一個條件,該條件檢查營養分值是否在某個閾值之間,并根據該條件執行操作。有一個執行檢查并執行其操作的初始規則(規則1),它更新我希望規則2在執行其條件時使用的總分數。

我的期望/需要:

要運行的規則1,如果滿足條件,則更新$Model的總分數(通過執行其操作),然后運行規則2,并且規則2的條件使用由規則1的操作運行更新的分數值。

實際發生了什么

規則1運行其條件,規則2運行其條件,規則1的操作運行,規則2的操作運行。規則%2在運行規則%1的操作之前正在運行其條件,因此使用過時的分數。

我已經證明(我認為)通過更改優先級/顯著性值,我可以更改規則運行其條件的順序,但似乎所有規則條件都在操作之前運行。我希望規則1的操作在下一條規則之前運行。

我從根本上誤解了這個概念嗎?一個明顯的錯誤?或者,如果任何人有建議的解決辦法,那將是非常好的。

澄清一下,這是一個無狀態KI會話。

提前謝謝,這快把我逼瘋了!

推薦答案

Drools的工作方式是預先獲取所有規則并評估它們的條件是否滿足。這些規則中的每一條都稱為匹配。當您啟動規則時,Drools會收集所有匹配項,對它們進行排序(自然或按重要性排序),然后遍歷并逐個執行它們。

在執行規則時,它們可能會像您的示例一樣改變工作記憶。但是,除非您顯式地告訴Drools您正在這樣做,否則它不會重新評估匹配。執行規則時,匹配階段已完成。

可以告訴Drools您正在修改工作內存,并且需要它根據新數據重新評估其規則。為此,您需要使用內置方法之一:

方法 說明
insert 將新事實放入工作內存。
deleteretract 從工作內存中刪除某些信息(對象)。
update 更新/替換工作內存中的事實。
modify 更改工作內存中數值內的字段。

您選擇哪一個取決于您要嘗試做什么。請注意,調用‘UPDATE’將調用要重新評估的所有匹配…這相當于使用新數據第二次調用FIRE規則(因此,同一規則可能會多次命中,這可能是故意的,也可能不是故意的)。相比之下,insert將僅評估后續規則,以確定它們現在是否基于新條件匹配。

因此,如果您打算通過更改工作內存中的數據來觸發或不觸發其他規則,您將需要使用這些內置方法之一來告訴Drools您正在進行更改,它應該重新評估其匹配項。

我將在this answer中更詳細地討論這個概念,特別是關于DRL。同樣的概念也適用于決策表。

這篇關于Drools決策表操作執行順序的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Drools 決策 執行 操作 順序
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定