首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF4.0 基礎篇(18):Flowchart 流程圖活動完整解析與書籤整合

     編輯:關於.NET

Flowchart 是 WF4.0 最貼近傳統流程圖直覺的活動,支援節點 (FlowNode) 間任意連線、決策 (FlowDecision)、多路分岐 (FlowSwitch)、步驟 (FlowStep),並原生整合書籤機制實現人工介入流程。

核心類別結構

類別繼承關鍵屬性
FlowchartNativeActivityNodes, StartNode, Variables
FlowStepFlowNodeAction (Activity), Next (FlowNode)
FlowDecisionFlowNodeCondition (Activity<bool>), True, False
FlowSwitch<T>FlowNodeExpression (Activity<T>), Cases (IDictionary<T,FlowNode>), Default

Flowchart FlowDecision FlowSwitch FlowStep

通用書籤活動 (支援回傳值)

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);
    }
}

範例 1:基礎 Flowchart (含書籤輸入/輸出)

流程設計:基礎 Flowchart

宿主程式碼:WorkflowApplication 監聽 Idle 事件取得書籤名稱,用戶透過 UI 輸入值後呼叫 ResumeBookmark 繼續流程。執行結果

範例 2:FlowDecision 條件分支

流程:書籤輸入數字 → FlowDecision 判斷奇偶 → 不同路徑處理 → 合流輸出。FlowDecision 流程

結果:奇偶判斷結果

範例 3:FlowSwitch 多路分岐

流程:書籤輸入 1-4 → FlowSwitch 對應 Case 執行不同邏輯 → Default 處理其餘。FlowSwitch 流程

結果:FlowSwitch 動畫 多路分岐結果

範例下載:FlowcharSample.rar

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved