在工作流程設計工具中定義及取用活動委派

.NET Framework 4.5 包含 InvokeDelegate 活動立即可用的設計工具。 這個設計工具可用來將委派指派給衍生自 ActivityDelegate 的活動,例如 ActivityActionActivityFunc<TResult>

定義活動委派

  1. 建立新的 [工作流程主控台應用程式] 專案。

    注意

    如果您看不到 [工作流程] 專案範本,則必須先安裝 Visual Studio 的 Windows Workflow Foundation 元件。 如需詳細指示,請參閱安裝 Windows Workflow Foundation

  2. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後依序選取 [新增]>[新項目]。 選取 [工作流程] 類別,然後選取 [活動] 項目範本。 將新活動命名為 MyForEach.xaml,然後選取 [確定]

    此活動會在工作流程設計工具中開啟。

  3. 在工作流程設計工具中,按一下 [引數] 索引標籤。

  4. 按一下 [建立引數]。 將新引數命名為 Items

  5. 在 [引數型別] 資料行中,選取 [[T] 陣列]

  6. 在型別瀏覽器中,選取 [物件],然後選取 [確定]

  7. 再按一下 [建立引數]。 將新引數命名為 Body。 在新引數的 [方向] 資料行中,選取 [屬性]

  8. 在 [引數型別] 資料行中,選取 [瀏覽型別]

  9. 在型別瀏覽器中,於 [型別名稱] 欄位中輸入 ActivityAction。 在樹狀檢視中選取 [ActivityAction<T>]。 在出現的下拉式清單中選取 [物件],將 ActivityAction<Object> 型別指派給引數。

  10. While 活動從工具箱的 [控制流程] 區段拖曳至設計工具介面。

  11. 選取 While 活動,然後選取 [變數] 索引標籤。

  12. 選取 [建立變數]。 將新變數命名為 Index

  13. 在 [變數型別] 資料行中,選取 [Int32]。 將 [範圍] 保留為 [While],以及將 [預設] 資料行保留空白。

  14. While 活動的 [Condition] 屬性設為 index < Items.Length;

  15. InvokeDelegate 活動從工具箱的 [基本] 區段拖曳至 While 活動的 [主體]

  16. 選取委派下拉式清單中的 [主體]

  17. 在 活動的 [屬性] 格線中,按一下 [委派引數]InvokeDelegate 屬性中的 按鈕。

  18. 在名為 Argument 之引數的 [值] 資料行中,輸入 Items[Index]。 按一下 [確定] 以關閉 [DelegateArguments] 對話方塊。

  19. Assign 活動拖曳到 InvokeDelegate 活動底下的水平線上。 Assign 活動隨即建立,而且會自動建立 Sequence 活動以在 MyForEach 活動的 [主體] 區段中包含兩個活動。 需要此序列,因為 [主體] 區段只能包含單一活動。 自動建立新的 Sequence 活動是 .NET Framework 4.5 的新功能。

  20. Assign 活動的 [To] 屬性設為 index。 將 Assign 活動的 [Value] 屬性設為 index+1

    自訂 MyForEach 活動會針對每個透過 Items 集合傳遞給它的值叫用一次任意活動,並以集合中的值做為活動的輸入。

使用工作流程中的自訂活動

  1. 按下 Ctrl+Shift+B 以建置此專案。

  2. 在 [方案總管] 中,開啟設計工具中的 Workflow1.xaml

  3. 從工具箱將 MyForEach 活動拖曳至設計工具介面。 此活動位於工具箱的區段中,其名稱與專案的名稱相同。

  4. MyForEach 活動的 [Items] 屬性設為 new Object[] {1, "abc"}

  5. WriteLine 活動從工具箱的 [基本] 區段拖曳至 MyForEach 活動的 [Delegate:Body] 區段。

  6. WriteLine 活動的 [Text] 屬性設為 Argument.ToString()

執行工作流程時,主控台會顯示以下輸出:

1abc