2010-06-10 83 views
2

我們遇到了必須更新特定實體的狀態數據庫表的問題。目前,它的所有Java代碼都有很多條件和狀態更新。我正在考慮使用Workflow引擎,因爲將來可能會有多個流。在這裏使用工作流引擎是一個矯枉過正的行爲......你在哪裏畫線?用於工作流引擎的用例

+0

一個很好的文章有,每個國家應該能夠過渡到每一個其他國家的要求。因此,現在對於每個新的狀態,我必須添加用於轉換到每個現有狀態的操作,並且每個現有狀態都必須有動作才能移動到新狀態。 WorkFlow解決方案是否以非重複方式處理這些問題? – 2010-06-10 08:33:47

+0

一個可能的無限循環? – shinynewbike 2010-06-10 12:49:05

+0

@ktaylorjohn - Ofcourse有一個階段是退出。 – 2010-06-10 21:30:49

回答

3

這取決於你的用例的複雜性。

在一個簡單的用例中,我們有一個數據庫列,由多個使用者爲Order生命週期中的每個階段更新。這是通過調用數據庫的Web服務完成的。 簡單的生命週期從ACKNOWLEDGED> ACCEPTED/REJECTED> FULFILLED> CLOSED。所有這些都在同一列的同一個表中。這是在沒有工作流的java類中執行的。

工作流引擎適用於更復雜的用例,該用例涉及多個數據提供者的操作,例如:數據庫或內容管理或文檔管理或搜索引擎,多個並行進程,基於前一步驟的成功/失敗,在某個步驟發送電子郵件,離線錯誤警報。

你可以看看Apache ODE來實現這個。

0

我認爲你應該考慮一個工作流引擎。工作流程應該與應用程序邏輯分開。

原因:

  1. 可維護:易於修改,增加新的流動和更容易被另一個工作流引擎來代替。
  2. 業務流程管理:工作流程主要是BPM的軟件表示。所以它通常由流程設計者(非技術人員)設計。因此,在應用程序內編寫代碼並不是一個好主意。相反,應使用支持圖形工作流設計的BPM產品,如ALBPM或JPBM。
  3. 監控業務流量:他們經常受到頂級經理的監控,並用於制定戰略決策。
  4. 數據挖掘/報告/統計更容易。

ALBPM(現在是Oracle BPM):是Oracle的商業工具,適用於大型項目。我的推薦是JBPM。 JBOSS的開源工具。與需要單獨的數據庫和應用程序服務器的ALBPM不同,它可以與應用程序一起打包,並作爲應用程序中的另一個模塊運行。我覺得適合你的項目。

2

我們遇到了數據庫表必須更新特定實體的狀態的問題。目前,它的所有Java代碼都有很多條件和狀態更新。

聽起來像某些準時,不需要在工作流程參與者之間編排操作。

也許規則引擎更適合這個。 Drools可能是一個很好的候選人。當X然後Y.

+0

謝謝你。你可能知道Spring集成的Drools上的任何優秀資源? – 2010-06-10 10:50:27

+0

在這裏找到 - >與泉水流口水。謝謝 ! https://springmodules.dev.java.net/docs/reference/0.7/html/jsr94.html – 2010-06-10 11:13:36