我想知道如何在規則的LHS中使用集合(在contains,memberof中使用),它可以在Guvnor中進行管理,其中包含大量元素列表(可能會有成千上萬個)。以黑名單匹配爲例,我如何能非常有效地維護guvnor中的大黑名單? 有什麼想法?如何使用drools guvnor中的集合?
1
A
回答
1
模型是這樣的:
declare MyItem
end
和
declare MyList extends ArrayList
end
您需要使用公式的領域。點擊列表,然後新建公式並寫入
this contains myItem
或者使用memberOf。現在再次使用公式爲MyItem
this memberOf myList
您可以將每個黑名單項插入工作內存。這比使用memberOf或contains更高效。這也使得使用Guvnor編寫規則更容易。如果列表中包含字符串,你可以這樣做:
declared ListItem
name:String
end
您可以使用Drools的從列表中插入規則(也可以燒製Java代碼的規則之前做到這一點):
rule "Just to empty the list"
when
list:List()
then
for(String name:list)
insert(Item(name));
end
現在您可以針對黑名單項目編寫規則。
0
首先,我建議在開始優化應用程序設計之前測試一下。這可能是一個完整的非問題!
但是,如果你有一個巨大的黑名單,那麼將其插入工作內存可能是一個緩慢的步驟。事實插入會導致它通過Rete網絡傳播,並且取決於有多少規則取決於其內容,這可能是一個緩慢的過程。 Rete網絡更新後,後續評估應該很快。
因此,根據您的規則/會話如何操作,優化性能的一種技術可能是創建一個長時間運行的會話並在啓動時插入黑名單。有了這個,你可以插入一個'請求'的事實,看看什麼火災,然後收回請求,所以工作內存已準備好接下來的請求。
不幸的是,這確實引發了一些其他問題。例如,根據您的規則,您可能需要同步訪問會話,而不是共享。這導致了響應速度很快的情況,但也必須等待彼此完成,這可能是一個可伸縮性問題。如果這是一個問題,您可以創建一個會話池以支持多個用戶同時查詢。
相關問題
- 1. 如何從drools guvnor中刪除規則/ pojo /變更集guvnor
- 2. Drools Guvnor和Oracle集成
- 3. stable drools-guvnor version
- 4. 使用Drools + Guvnor進行熱部署
- 5. 本地版本的Drools Guvnor
- 6. Glassfish上的Drools Guvnor錯誤
- 7. 安裝Drools的錯誤Guvnor
- 8. 瞭解Drools guvnor的工作
- 9. 如何從Drools部署規則Guvnor
- 10. Drools 6.0 WB與Drools 5.5 Guvnor相同嗎?
- 11. DROOLS 2.5是否支持Guvnor
- 12. 如何在websphere 6中啓用drools guvnor的安全性?
- 13. 使用Guvnor編輯Web服務中的Drools
- 14. Drools的服務器無法從的Guvnor
- 15. 訪問的Drools的Guvnor從OSGi包
- 16. 空指針異常與Drools的-的Guvnor
- 17. 的Drools的Guvnor數據枚舉API
- 18. 訪問drools的java代碼guvnor
- 19. Drools集合效率
- 20. Drools Guvnor Tomcat 7 validateJarFile - jar未加載
- 21. Drools/Guvnor對象構造函數支持
- 22. 從Guvnor下載Drools RuleFlow文件
- 23. Drools KnowledgeAgent和Guvnor:身份驗證失敗
- 24. Drools Guvnor:日期和時間如何工作?
- 25. 在Drools Guvnor中的JBPM數據輸入輸出設置
- 26. 如何使用Drools的
- 27. 如何使用Drools Planner?
- 28. 在Drools Guvnor中維護drl(技術)規則
- 29. 例外進口的Drools /的Guvnor庫導出的文件
- 30. Drools:在Java Web應用程序中存儲在Guvnor中的訪問規則
謝謝。我仍然懷疑,如果我在規則中使用List,它是否會有效地工作。黑名單存儲在數據庫中,當事實被插入到工作內存中時,我想檢查這個事實的字段(比如ID)是否在黑名單中。有沒有辦法讓黑名單對象始終保持工作記憶?所以每個規則匹配都是有效的。 '全球'能做到這一點嗎?我是新來的流口水,再次感謝你。 – fpwang