2012-09-15 135 views
2

我新的工作流基礎和想了解的ActivityActionActivityFunc的目的和之間的區別是從有孩子的活動,而不是有什麼不同。WF 4:ActivityAction或ActivityFunc和兒童活動

至於我能理解孩子的活動可能在某些複合NativeActivity存在,必須由它來調度。所以兒童活動可能在執行期間被NativeActivity用作事件處理程序。因此,例如,此NativeActivity可能會運行一些長時間運行的計算,並在其完成時安排它的子進程。

ActivityActionActivityFunc(FUNC返回一個結果和行動沒有)存在用於相同的目的 - 使在執行在NativeActivity中定義的過程堵塞自定義處理程序。不同之處在於那些是強類型的,看起來更像是父級聲明的合同。

所以我來到了結論,主要區別是強類型和ActivityFunc /動作可能與孩子的活動交換。我的理解錯了還是錯過了一些東西?

回答

2

ActivityAction和ActivityFunc的主要目的是可以分享自己的活動和孩子的人之間的數據。大多數時間你不需要,你可以安排一個孩子的活動,它可以使用InArguments來獲取數據。但是,有些情況下,像ParallelForEach一樣,父母不能只填充一個變量,因爲每個孩子都是並行調度的。在這種情況下,您希望在安排子活動時傳遞數據。而這是在ActivityAction進來。

在你不應該需要使用ActivityAction和ActivityFunc雖然大多數情況下。

+0

我發現,我需要這一切的時候,作爲傳遞值和從子活動獲得返回結果在我的工作流程很常見的模式。它也非常強大,而將值暴露給子活動的「變量集合」方法是* not *。我總是發現WF4扼流圈帶有變量的「可變範圍」誤差。 – Will

+0

我通常只是在子活動中使用In/OutArguments,並提供一個活動設計器,因此您可以像設計時間一樣將其與任何其他活動掛鉤。這兩種方法都有效,所以我猜這是個人偏好。 – Maurice