2011-12-02 30 views
0

我有一個規則,接受Map()作爲一個事實,然後設置很多元素到這張地圖。我希望在執行其他規則時能夠在其他地方使用此映射。我讀了Drools中的全局變量,但看起來他們不應該用於這個目的。現在我將這個映射保存爲Java類中的私有屬性,以便它可以將所有數據保留在Web應用程序上下文中,但這會增加我的內存佔用量。我知道這可能聽起來很奇怪,但Drools規則中有沒有類比Java靜態字段?如何在地圖中的Drools規則之間共享數據?

在此先感謝!

回答

0

你能解釋一下更多關於你想要達到的規則嗎?大多數時候你應該重新制定規則以適應你的需求。過濾Map()的規則需要將java.util.Map的實例插入到知識會話中。如果您將地圖添加爲全局,則您的規則將無法直接過濾Map()。我通常建議使用更多結構化的事實/對象來編寫規則,而不是通用結構。 請記住,如果向會話插入java.util.Map實例,則該Map將可用於過濾Map()對象類型的所有規則。

希望它有幫助,如果你能提供更多的信息,我們將能夠進一步提供幫助。

乾杯

+0

我XLS決策表(3000+規則),其中有人寫規則是數據容器的作用,只有微不足道的邏輯(設定值域對象)。這會導致PermGen的例外,所以我不得不把他們拉出去。現在我已經把這張地圖放在java中,並將其作爲事實傳遞給它,並且只有在第一個規則觸發時才填充地圖。所以這張地圖就在我部署應用程序的堆空間上。是否有更好的解決方案來填充這張地圖並在規則之間共享?注意:這只是臨時性的解決方案,所有這些數據都將從規則中刪除,但我不得不圍繞這個PermGen問題開展工作。 – Zec