2009-08-11 79 views
1

我正在尋找一些用於Java或.NET的處理任務(或稱爲「操作」,因爲我們稱之爲在我們的域模型中)的好庫。我們將每個操作保存在db中執行,然後我們需要一些機制從db中獲取未處理的任務,處理它們並更新具有正確狀態的db記錄('processed OK'/'process error')。Java/.NET任務處理庫

訣竅是操作可以相互依賴。例如,當正在處理「操作支付」時,系統可能會發現我們之前需要執行「操作支票支付數據」 - 因此它應該在數據庫中創建新的操作行,暫停執行「操作支付」,處理「操作支票支付數據'在下一回閤中,並在完成後返回處理'操作付款'。

我會告訴你我們目前如何管理這個。

我們有db table'operations'。類似Cron的機制每分鐘運行一次,並從db中獲取前100個未處理的操作並對其進行處理。如果(在處理過程中)系統發現執行當前操作(A)需要執行一些其他操作(B),則創建新操作(B)記錄,並停止執行當前操作(A)。下一分鐘cron獲取操作A和B.操作A被取出,因爲它沒有被處理,但是系統看到依賴操作B已經被創建,因此它不會再次創建它。操作B被處理,狀態'已處理OK'被保存在db中正確的行中。下一分鐘cron從db中獲取操作A並最終可以執行它,因爲依賴任務已完成。

我們正在尋找方法使其更簡單,更好,更優雅。

+0

@michael:你不能使用Windows Workflow Foundation(http://msdn.microsoft.com/en-us/netframework/aa663328.aspx)嗎? – 2009-08-11 18:32:45

+0

我必須檢查出來。即使我可以,我仍然對開源替代品(特別是Java)感興趣。 – mgamer 2009-08-11 18:48:47

回答