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

WF 4.0 Beta 1 內建活動圖鑑(一):程序式活動完整速查

     編輯:關於.NET

WF 4.0 活動模型革新:簽名與本體分離

Windows Workflow Foundation 4.0 重新設計活動基礎架構:每個活動由 簽名 定義輸入/輸出參數(InArgument<T>/OutArgument<T>/InOutArgument<T>),由 本體 實作執行邏輯。本體可採用聲明式組合子活動(XAML),或繼承 CodeActivity/AsyncCodeActivity/NativeActivity 撰寫命令式程式碼。此設計使活動成為可組合、可序列化、可版本化的「工作流微服務」。

程序式活動分類完整對照表

Visual Studio 2010 工具箱「Programming」類別下包含四大族群,共 25 項活動:

集合管理活動

活動功能關鍵參數
AddToCollection<T>向集合新增項目Collection, Item
RemoveFromCollection<T>從集合移除項目Collection, Item
ClearCollection<T>清空集合Collection
ExistsInCollection<T>檢查項目是否存在,結果輸出至 Result (bool)Collection, Item

流程控制活動

活動功能關鍵特性
If條件分支Condition (bool), Then/Else (Activity)
DoWhile後測試迴圈Condition (bool), Body;Body 至少執行一次
While前測試迴圈Condition (bool), Body
ForEach<T>循序遍歷集合Values (IEnumerable<T>), Body (ActivityAction<T>)
ParallelForEach<T>並行遍歷集合支援 CompletionCondition (bool) 提前終止
Sequence循序執行多活動Activities 集合
Switch<T>多路分支Expression (T), Cases (Dictionary<T, Activity>)
Pick事件驅動非確定性選擇包含多個 PickBranch (Trigger + Action),首個完成者獲勝,其餘取消

錯誤處理活動

活動功能關鍵行為
TryCatch結構化例外處理Try/Catches (Catch<T> 集合)/Finally;未捕獲例外導致工作流終止,Finally 不執行(符合 C# 語意)
Catch<T>特定例外類型捕獲僅能置於 TryCatch 內;Exception 輸出參數可取得例外物件
Throw拋出例外Exception (Exception 物件)

實用工具活動

活動功能備註
Assign變數指派To (OutArgument), Value (InArgument);型別相容性於運行期驗證
Delay暫停工作流Duration (TimeSpan);非阻塞執行緒,由執行時排程恢復
InvokeMethod<T>呼叫 CLR 方法支援靜態/實例、泛型、ref/out、params、異步模式 (Begin/End);TargetType/TargetObject, MethodName, Parameters
WriteLine輸出文字Text (string), TextWriter 可導向 Console、檔案、ASP.NET Response 等

高級控制活動:取消、補償、事務、持久化

活動核心用途關鍵成員
CancellationScope定義取消處理邏輯Body (正常邏輯), CancelHandler (取消時執行)
CompensableActivity長期執行可補償單元Body, Compensation (補償邏輯), Confirmation (確認邏輯)
Compensate顯式觸發補償目標 Target (CompensableActivity)
Confirm顯式觸發確認目標 Target (CompensableActivity)
Persist主動持久化工作流實例無參數;依執行時持久化設定運作
TransactionScope環境交易範圍支援巢狀、要求現有交易 (Required 語意)、Body 完成自動 Complete

設計模式啟示

  • Pick 活動實現「基於事件的非確定性選擇」,是建構「等待外部信號」模式(如人工審核、超時升級)的核心構件。
  • CompensableActivity + Compensate/Confirm 實現 Sagas 模式,適用於跨服務長期業務交易。
  • TransactionScope 僅包裝資源管理器交易(SQL Server、MSDTC),不支援跨機器工作流實例的交易流動,跨機交易需配合 Receive/Send 訊息活動搭配 WS-AtomicTransaction。

下一篇預告

下一篇將涵蓋 Flowchart(流程圖活動)、Messaging(訊息活動:Receive/Send/ReceiveReply/SendReply)、PowerShell(PowerShell 活動)與 Migration(WF 3.x 遷移活動:Interop 等)四大類別。

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