Flowchart 是 WF4.0 最貼近傳統流程圖直覺的活動,支援節點 (FlowNode) 間任意連線、決策 (FlowDecision)、多路分岐 (FlowSwitch)、步驟 (FlowStep),並原生整合書籤機制實現人工介入流程。
| 類別 | 繼承 | 關鍵屬性 |
|---|---|---|
Flowchart | NativeActivity | Nodes, StartNode, Variables |
FlowStep | FlowNode | Action (Activity), Next (FlowNode) |
FlowDecision | FlowNode | Condition (Activity<bool>), True, False |
FlowSwitch<T> | FlowNode | Expression (Activity<T>), Cases (IDictionary<T,FlowNode>), Default |

public sealed class Bookmark<T> : NativeActivity<T>
{
public InArgument<string> BookmarkName { get; set; }
protected override bool CanInduceIdle => true;
protected override void Execute(NativeActivityContext context)
{
var name = context.GetValue(BookmarkName);
context.CreateBookmark(name, BookmarkCallback);
Console.WriteLine($"建立書籤: {name}");
}
void BookmarkCallback(NativeActivityContext context, Bookmark bookmark, object obj)
{
if (typeof(T) == typeof(int)) Result.Set(context, int.Parse(obj.ToString()));
else if (typeof(T) == typeof(string)) Result.Set(context, obj.ToString());
else Result.Set(context, obj);
}
}
流程設計:
宿主程式碼:WorkflowApplication 監聽 Idle 事件取得書籤名稱,用戶透過 UI 輸入值後呼叫 ResumeBookmark 繼續流程。
流程:書籤輸入數字 → FlowDecision 判斷奇偶 → 不同路徑處理 → 合流輸出。
結果:
流程:書籤輸入 1-4 → FlowSwitch 對應 Case 執行不同邏輯 → Default 處理其餘。
結果:

範例下載:FlowcharSample.rar