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

WF 框架程式設計基礎篇(一):程式設計模型與工作流模式完整圖譜

     編輯:關於C語言

程式設計模型本質分析

結構是面向對象的,執行是面向過程的。

  • 靜態結構:類別 → 組件 → 子系統 (OO 組織,利於複用、設計模式控制變化)
  • 動態執行:Main() 入口 → 方法呼叫鏈 → 控制流程 (if/while/呼鏈)

如消化系統:細胞構成器官 (OO 結構),器官協作完成「進食」功能 (過程控制)。

過程控制模型演進

模型特點代表技術
程式碼控制流硬編碼、難擴展、阻塞執行緒C# if/while/foreach
宣告式標記分離邏輯與代碼、可視化、版本化XAML, XOML
資料庫驅動動態修改、持久化原生、適合長流程狀態表、轉移表
領域專用語言業務語義豐富、業務人員可讀DSL, BPMN, 圖形化工具

C# 控制流的困境:長期執行與互動

  • 等待外部訊號可能持續天/週
  • 傳統做法:新建執行緒阻塞等待 → 執行緒耗盡、擴展性差
  • WF 解法:書籤機制 — 執行到等待點建立書籤、持久化、釋放執行緒;收到訊號喚醒繼續
  • 書籤可結合 Observer 模式 + Delegate 實現
  • WF 執行緒模型 = 天然非同步調用,完美解決長期等待問題

工作流模式完整圖譜 (基於 Petri Net 21 種模式)

基本模式 (5 種)

模式說明範例
循序活動 B 待活動 A 完成後才能開始訂單登記 → 客戶通知
平行分支一控制執行緒分為二,同時執行並行審核
同步合併兩平行執行緒,等待兩者完成雙主管簽核
單選多路徑選一執行金額大小分流
簡單合併合併二選一路徑分流後匯聚

高級分支與同步 (5 種)

  • 多選:從多路徑選出數條並行
  • 同步合併:合併多路徑,若多條被選則同步,單條則簡單合併
  • 多重合併:合併多路徑 (不同步)
  • 鑑別器:合併多路徑不同步,後續活動只執行一次
  • M-of-N:部分同步,只執行一次後續活動

結構模式 (2 種)

  • 任意循環:無限制執行
  • 隱含終止:無事可做則結束

多實例模式 (4 種)

(資料參數化、設計時多實例、運行時多實例...)

狀態基礎模式 (3 種)

  • 推遲選擇:兩可選執行緒執行一,哪條被執行是隱含的
  • 交替平行:兩活動可任意順序執行,但不可並行
  • 里程碑:里程碑到達時觸發活動

取消模式 (2 種)

  • 取消活動
  • 取消流程

參考資源

完整 21 種模式詳解:Petri Net 工作流模式中文詳解

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