2009-12-02 90 views
0

工作流實例我想要實現我的工作流程解決方案,將做到以下幾點:暫停在故障處理程序

在工作流層面我想實現一個故障處理程序,將暫停任何異常的工作流。

然後在某個時候,實例會得到一個Resume()命令。

我想要實現的是,當收到Resume()命令時,實例將再次執行失敗的活動(並引發異常),然後繼續執行他必須執行的任何操作。

什麼是我的問題:

  1. 當暫停,然後再恢復故障處理程序中,該實例是剛剛完成。當然,恢復過程不會讓實例返回到執行 ,因爲在故障處理程序中,在暫停活動之後 - 我什麼都沒有。所以 顯然工作流的執行在那裏結束。

  2. 我確實想實現故障處理工作流程中的水平,而不是使用而+ Sequence活動來包裝工作流程中的每個活動(如這裏所描述: Error Handling In Workflows),因爲我相當沉重的工作流程 - 這將看起來像一個地獄。 它應該是有點通用處理..

你有什麼想法?

謝謝。

回答

0

恐怕不行。工作流中的錯誤處理類似於Try/Catch塊,重試的唯一方法是將所有內容都包含在循環中,並在出現錯誤時再次執行循環。

根據您嘗試處理的錯誤類型,您可以通過創建將自己的執行邏輯封裝在Try/Catch中幷包含所需重試邏輯的自定義活動來達到目的。

+0

謝謝你的回答。 呃...我知道這個解決方案。是的,這就是網絡上許多文章所描述的內容。 但我仍然在尋找我描述過的類型的優雅解決方案。 – Alex 2009-12-03 07:03:40

1

如果您正在研究狀態機工作流,那麼我的處理需要人工干預來解決的錯誤的技術是創建一個指示「錯誤」狀態的附加「狀態活動」節點,如STATE_FAULTED。然後每個狀態都有一個錯誤處理程序,它捕獲任何異常,記錄異常並將狀態更改爲STATE_FAULTED,傳遞當前活動,引發的異常類型以及可能需要的任何其他上下文信息等信息。

在STATE_FAULTED初始化中,您可以偵聽外部命令(您的Resume()命令或任何適合您需要的內容),並且當一切正常時,您可以切換到之前的狀態並繼續執行。