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

WF 從入門到精通(第一章):Windows Workflow Foundation 入門實戰

     編輯:關於.NET

學習目標

  • 理解工作流核心概念與理論基礎
  • 對比 WF、BizTalk 與 WCF 異同
  • 快速上手 WF 程式設計
  • 熟悉 Visual Studio 工作流開發支援

從傳統代碼到工作流思維

郵政編碼驗證邏輯以傳統代碼實現:

string USCode = @"^(\d{5}$)|(\d{5}$\-\d{4}$)";
string CanadianCode = @"[ABCEGHJKLMNPRSTVXY]\D[A-Z]\d[A-Z]\d";
public static bool ValidatePostalCode(string str)
{
    return (Regex.IsMatch(str, USCode) || Regex.IsMatch(str, CanadianCode));
}

本章將創建相同功能的工作流應用程式,體驗聲明式開發模式。

創建基於控制台的工作流專案

  1. 啟動 Visual Studio 2008
  2. 創建「順序工作流控制台應用程式」專案,命名 PCodeFlow
  3. 自動生成初始介面

新增專案對話框

初始設計器介面

專案結構解析

  • Program.cs:典型控制台應用入口,模板注入大量 WF 支援代碼
  • Workflow1.cs:工作流組件,將修改此處實現驗證邏輯

設計工作流邏輯

使用 IfElse 活動實現條件分支

拖放 IfElse 活動至設計器。問題:「輸入字串是否為合法郵政編碼?」

拖放 IfElse 活動

設計器右上角驚嘆號提示分支缺少條件判斷代碼,編譯將報錯。

驗證錯誤提示

為分支添加條件判斷

  1. 點擊左分支 ifElseBranchActivity1,屬性面板啟用
  2. Condition 屬性選擇「代碼條件」類型
  3. 展開 Condition 子屬性,輸入事件名 EvaluatePostalCode

設定條件事件

為分支添加執行動作

分別在左右分支拖放 Code 活動,設定 ExecuteCode 事件:

  • 左分支:PostalCodeValid
  • 右分支:PostalCodeInValid

設定 Code 活動事件

實作事件處理代碼

Workflow1.cs 完整實作

using System.Text.RegularExpressions;

private string _code = string.Empty;
public string PostalCode
{
    get { return _code; }
    set { _code = value; }
}

private void EvaluatePostalCode(object sender, ConditionalEventArgs e)
{
    string USCode = @"^(\d{5}$)|(\d{5}$\-\d{4}$)";
    string CanadianCode = @"[ABCEGHJKLMNPRSTVXY]\D[A-Z]\d[A-Z]\d";
    e.Result = (Regex.IsMatch(_code, USCode) || Regex.IsMatch(_code, CanadianCode));
}

private void PostalCodeValid(object sender, EventArgs e)
{
    Console.Write("The postal code {0} is valid.", _code);
}

private void PostalCodeInValid(object sender, EventArgs e)
{
    Console.Write("The postal code {0} is *invalid*.", _code);
}

ConditionalEventArgs 的 Result 屬性決定 IfElse 走左分支或右分支。PostalCode 公有屬性接收外部輸入。

調用工作流

修改 Program.cs 傳遞命令列參數:

Dictionary<string, object> wfArgs = new Dictionary<string, object>();
wfArgs.Add("PostalCode", args.Length > 0 ? args[0] : "");
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(PCodeFlow.Workflow1), wfArgs);

編譯與執行測試

  1. 編譯應用程式
  2. 開啟命令提示字元,定位至輸出目錄
  3. 執行 pcodeflow 12345 驗證有效美國郵編
  4. 執行 pcodeflow 1234x 驗證無效輸入

至此完成第一個 WF 應用,體驗了聲明式流程設計、條件分支、參數傳遞與宿主調用全流程。

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