2009-10-30 112 views
2

我正在處理FaultActivityHandler中的異常,最後我希望結束工作流程。爲此,我在故障處理程序中添加了TerminateActivity。看起來這會導致工作流程出錯。有沒有更好的方法來做到這一點?我可以使用if-else來檢查錯誤標誌,但最終會產生很多嵌套的if-else,其中右側什麼都不做,只是跳到工作流的末尾。Windows工作流 - TerminateActivity導致工作流程出錯?

我錯過了一個顯而易見的方式來優雅地結束工作流程或應該當我因爲異常而結束它時,它會發生故障嗎?

回答

1

我認爲最簡單的方法是添加ThrowActivity和一些自定義異常,並在工作流級別捕獲該自定義異常。這樣工作流程將正常結束,但所有其他活動都會被跳過。

+0

我想我不是在想WF的方式。在我看來,工作流中的終點是處理這種情況的自然方式,而不是拋出異常(其中後者在我的開發系統上非常非常慢)。 – Brian 2009-11-03 19:07:15

+0

這就是爲什麼在不需要時不要拋出異常的原因。但是,如果出現意想不到的問題,並且您想要停止處理,那就是要走的路。在常規代碼中,這是沒有什麼不同的,否則你會在你的代碼中增加很多額外的測試。 – Maurice 2009-11-04 08:54:13

+0

在我看來,一個簡單的端點會更合適。我已經發現了異常並處理了它,但工作流程現在需要結束。嵌套if-else語句似乎是一種很糟糕的方法,就像再次拋出異常一樣。 – Brian 2009-11-13 20:00:22