2009-05-18 154 views
6

我們正在重寫一個大型的遺留系統,這個遺留系統會大量(錯誤地)使用工作流引擎。展望未來,我想考慮替代新應用程序的工作流引擎。一個非常有趣的可能性是Space-based architecture +規則引擎。還有哪些範例存在?工作流引擎有哪些替代方案?

我會提到,這個應用程序編排複雜的文檔發佈工作流程,根據國家/地區/等不同的調整,但我希望儘可能保持答案更一般。

編輯:我給這個問題增加了一個賞金來獲得更多的反饋。我希望聽到有人實際實施了工作流程替代方案。如果沒有產生任何內容,我會接受BPEL答案,儘管我對技術本身完全不感興趣。

+0

關於編程方面沒有想法,但是您看過WWF(Windows Workflow Foundation)嗎? http://msdn.microsoft.com/en-us/netframework/aa663328.aspx – balexandre 2009-08-04 08:54:15

+0

我不是在尋找工作流程實現,而是在尋找工作流程模式的替代方案 – rcampbell 2009-08-04 12:17:02

回答

2

這似乎是這樣一個明顯的反應,但沒有其他人已經提出了,所以這裏不用:您是否考慮過文檔(或內容)管理軟件?

2

BPEL過程是一個選項。如果您打算利用未來的BPEL工具來完成這項工作,那麼您會走這條路。否則,BPEL是一種過於複雜的混亂(因爲所有這些「一切都可以插入」的解決方案)。

一件簡單的事就是認識到工作流通常是關於隊列而不是工作流。也就是說,更重要的是將某些東西放在某個桌子上,而不是按照僵化的模式指導工作流程。在這種情況下,擁有一個隊列的東西,這是一個確定的工作階段,然後以靈活的方式與其他潛在的工作塊鏈接。這是一個普遍的過程,但是這個過程也有例外。規則引擎可以根據一般流程在隊列之間移動事物(並根據需要啓動外部流程),用戶可以在定義的規則不削減的情況下任意將其移動到「正確」隊列中。

1

那麼,你已經提到了基於規則的處理。基於事件的處理模型有點類似,但在響應事件方面受到較少的正式限制。總的來說,我不認爲人們必須完全遵守特定的模式。

(例如,基於事件的前端 - >規則爲基礎的編排 - >特定的(線性的)工作流處理)

1

如果30,000腳看起來它有兩個選項:

  • 的控制處理調查隊列和數據存儲的檢查是什麼地方,以及移動基於一組規則的事情。
  • 一個等待被通知事件並根據一組規則處理事件的系統。

在這兩種情況下,「規則」都可以在工作流/編排,規則引擎或代碼中定義。

我們選擇了實現基於以下條件的系統:

  • 相對簡單的規則,直接在代碼
  • 在工作流的複雜邏輯impemented。所以我們可以把它展示給客戶,問他們這是他們的意思,並且知道它是好的,因爲他們看到的是執行的東西。基於一組規則

我與MS技術工作,以便爲您所描述的系統類型中移動的東西

  • 編排的pub/sub,我會在SharePoint中,其中有一個文檔管理實現了它系統和內置的文件管理工作流程。入門級Sharepoint許可證Windows Sharepoint Services包含在操作系統中。

  • 1

    從KISS的角度來看,工作流只不過是隊列和規則引擎而已 - 我們有一個文檔系統,我們擁有一個類似於處理工作流程的文檔系統。我們考慮websphere的工作流程以及來自weblogic的WLI,但使用持久存儲的JMS(MDB以及喚醒consmer)的簡單工作流程對我們來說沒有任何問題。我認爲你在這裏採取正確的做法 - 祝你好運!

    2

    您可以嚴格按照您基於用戶或文化或其他方式動態構建的有限狀態機引擎執行此操作。您需要將特定的自動機作爲長時間運行事務的狀態。然後,當用戶調用狀態或採取另一個「動作」(基本上建模爲狀態轉換)時,允許轉換具有輸出(Mealy機器)或新狀態(Moore機器)。

    -1

    你可以考慮Apache Camel。 這是EIP和大部分的工作流Langugae喜歡如果,支持選擇,但你必須爲它編寫代碼。