InvokeWorkflowActivity 非同步呼叫子工作流核心機制與專案架構
一、核心特性與限制
- 從工作流**非同步**啟動另一工作流,啟動後立即完成,不等待子工作流結束
- 不支援遞迴:A 呼叫 B → B 不能呼叫 A 或任何間接呼叫 A 的工作流
- 要求工作流執行時期使用當前排程器服務建立新工作流
- 子工作流**只能接收輸入參數**,不支援取得輸出參數 (非同步特性)
- 需額外通信機制 (本地服務) 取得子工作流結果
二、使用步驟
- 拖放 InvokeWorkflowActivity 到所需位置
- 設定
TargetWorkflow 為目標工作流類型
- 為目標工作流屬性設定輸入值 (靜態值或繫結)
Invoking 事件可在建立子工作流前執行初始化邏輯。
三、本範例架構說明
專案名稱:InvokeWorkflowActivityDemo (主控台**狀態機**工作流)
- 宿主工作流:狀態機結構 (4 個 State)
- 子工作流:
SubWorkflow (順序工作流)
- 本地服務:
ILocalService 實現父子協調
HandleExternalEventActivity 等待子工作流完成事件
- 宿主
Program.cs 協調:僅非宿主工作流完成時觸發事件
四、專案建立步驟
- VS2008 → 新增專案 → 「主控台狀態機工作流」
- 專案名稱:
InvokeWorkflowActivityDemo
圖 1:4 個 State + 轉換關係基礎架構
重要提示:本範例涉及多個 WF 新概念,請配合後續參考資料理解,細節將在後續系列深入剖析。