2013-05-03 62 views
0

我在Windows Workflow Foundation中有一個工作流程。我創建了一個並行組,我已經放置了四個活動,它們擴展了NativeActivity如何處理並行活動中的故障

的活動調用遠程網絡服務,如果有什麼不順心的呼叫(也許業務規則),我通過在NativeActivityContext創建書籤暫停活動。如果多個活動中的一個失敗,這是不太好的,因爲它們使用相同的書籤名稱(SuspendBookmark)。

是否有可能以某種方式擴展並行行爲,並且可能在這裏處理失敗而不是並行調用中的每個活動?

另一件事,如果一個活動成功和另一個失敗,如果我從失敗的活動中的暫停書籤恢復,會發生什麼?它會再次在並行調用中運行每個活動,還是會重新運行失敗的活動?

我需要一些關於如何在我的工作流程中實現這些並行調用以及如何處理這些並行調用的信息。

回答

1

如果我很好地理解你,你想要取消並行活動,如果它的任何分支出錯。這樣只有一個書籤被創建,你可以繼續。

您可用的CompletionConditionParallel活動。

如果此屬性的計算結果爲true,則分支集合中的其他預定元素 將被取消。如果未設置此屬性,則 分支集合中的所有活動對象執行到 完成。

只需在並行活動級別創建一個bool變量,並在出現問題時將其設置爲true

如果這種方式無法按照您的方式工作,則無法阻止您創建自己的自定義平行活動。 PS:請記住,並行活動並不是真正平行的。它並行等待所有分支執行,但執行本身是順序的(儘管順序無關)。

0

如果您將活動視爲兩種不同類型(課程),也許會有所幫助。一種是單一的獨立活動,可能會失敗或成功並擁有自己的書籤。第二類活動是「複合」活動。這是一組活動,也可能失敗或成功,也可能擁有自己的書籤。