我讀過很多JBoss Drools的文檔,但找不到一個明確的答案,如果所有的規則都是同時執行(當然它們同時被觸發)。更具體地說,對於1000條規則的單個輸入和規則集,可以在每個規則中執行「when」條件和「then」條件,按順序逐一執行,或者同時並行執行。JBoss Drools是否真的並行執行所有規則?
一方面rete算法意味着並行性,當然選擇節點摺疊。然而,節點優化後的評估順序?測試內存和連接節點看起來應該同時執行,但它們是?
此外,Drools文檔提到「順序模式」,並表示默認關閉此功能。那麼開啓了什麼,並行模式?並且有一個暗示線程的maxThreads選項。
另一方面,我被告知,代碼不利用線程,因此同時進行評估,但大部分依次執行。
有沒有人看過任何文檔證明這種情況?
謝謝!
非常感謝,感謝您的回覆。我一直在規則講話和紅帽峯會上關注您的BRMS工作,並評估了流口水的採用情況。我發現流涎庫和技術非常易於理解,並且易於集成到定製的BRMS系統中。祝好運並行化,我想每個上帝都有一個獨立的議程組太過粗略的解決方案:) – user1393285
請您詳細說明非確定性執行的後果。我會想象你仍然會得到正確的結果,或許缺點是執行不需要的規則。 –
「我認爲一個獨立的議程組每個人都太粗略的解決方案:)」 如果您刪除組之間的所有共享,並且還確保在組之間的突變沒有重疊,這將是可能的。當一個組可以改變一個事實,另一個組可能會讀取的時候,你有表或者引擎級鎖。唯一的解決方法是使用樂觀風格MVCC鎖定。 –