2009-05-05 31 views
0

也許這是一個愚蠢的問題,但我是一名菜鳥開發者。設計 - 我如何在持久對象改變狀態時處理事件?

可以說,在一個數據驅動的應用程序CRM'ish,我有一個客戶類型,可以經過多個階段 - 即階段1 - 5

由於客戶更改階段 - 事件應觸發。 示例 - 當客戶從階段2進入階段3時,將發送一封電子郵件,更新一些列表並執行一些計算。

我在想象客戶變化的狀態可能是應用程序用戶通過某種圖形界面手動更新客戶的結果。

所以我想知道 - 我是否應該通過斷言只有一種方法來更新客戶的階段狀態,然後確保每當該操作完成時執行一系列操作?

在我的想法(和場景)中,這意味着從關係數據庫中檢索客戶,更新相位字段,堅持客戶退後,然後始終對此操作做出反應,通過觸發註冊爲依賴的任何操作該特定的相變。 但是我不確定如果我想要對10,000個客戶進行批量階段更改,這會很明智。

對此有何想法?我只是在尋找任何形式的輸入 - 假設我完全無能爲力。

回答

0

我認爲這可以分開的功能,一個用於單個客戶相變,另一個用於批量更改,後者根據需要將執行或不執行額外操作,也可以以更有效的方式執行操作,或者甚至將操作排隊,或者部分操作,例如發送電子郵件,對於後臺處理,如果附加動作很長並且需要及時完成相位變化,則需要及時完成相位變化。

當相位變化是由於某些可能複雜的條件引起的時候,另一個問題會彈出而不是手動相變,那麼你應該確定一個條件檢查您的業務邏輯中的某個位置,足夠低以捕獲影響階段的所有更新操作。但是正如你所寫的那樣,情況並非如此,因爲在你的情況下,相變是手動發佈的。

0

在許多情況下,最好在業務邏輯中有一個明確的功能來改變階段。這應該是改變階段的唯一方式,而且是明確的。像「ChangeCustomerPhase(客戶客戶,階段newPhase)。這使得它更容易處理跟蹤變化,如果一切都可以自由改變。

相關問題