EventArgs 追蹤範例

Download sample

這個範例會示範使用 Windows Workflow Foundation 所提供的 SQL 追蹤服務來追蹤工作流程的執行。

工作流程執行階段會在執行工作流程時引發特定事件。追蹤服務可以攔截這些事件,並將其相關資訊儲存在可進行查詢的 SQL Server 資料庫內。

追蹤執行階段會定義 TrackingWorkflowTerminatedEventArgsTrackingWorkflowSuspendedEventArgsTrackingWorkflowExceptionEventArgs 類型來分別保存關於工作流程終止、暫停及例外狀況的資訊。WorkflowEventArgs 會針對其對應事件,透過 WorkflowTrackingRecord 進行傳送。例如,當工作流程狀態達到 WorkflowTerminated 狀態時,TrackingWorkflowTerminatedEventArgs 便會透過 WorkflowTrackingRecord 進行傳送。

SqlTrackingService 會在這些不同的 EventArgs 物件抵達予以接收並序列化它們,同時會在追蹤設定檔要求這些物件的事件時,將這些物件與其事件一起儲存到追蹤資料庫中。接著,已序列化的表單便可還原序列化,並由追蹤使用者取用。這時所使用的追蹤設定檔是 SqlTrackingService 的預設追蹤設定檔。

Note注意:

WorkflowTrackingRecord 中的時間值會以 Coordinated Universal Time (格林威治時間) 表示。

範例概觀

這個範例是工作流程主控台應用程式,其中包含兩個工作流程:

  • ExceptionWorkflow:具有程式碼處理常式的簡單工作流程,在該處理常式中會擲回例外狀況。這個例外狀況無法處理,因此會造成工作流程終止。

  • SuspendedWorkflow:具有暫停活動的簡單工作流程。工作流程應該會達到暫停狀態。

此範例的主要進入點是在 Program 類別中,此進入點具有下列邏輯:

  1. 建立 SqlTrackingService 資料庫的 connectionString。

  2. SqlTrackingService 新增到工作流程執行階段,如下所示:

    workflowRuntime.AddService(new SqlTrackingService(connectionString));
    
  3. 執行工作流程,如下所示:

    WorkflowInstance exceptionWorkflowInstance = workflowRuntime.CreateWorkflow(typeof(ExceptionWorkflow));
    exceptionWorkflowInstance.Start();
    
  4. 建立事件處理常式以等候工作流程完成或終止 (取決於工作流程類型)。

  5. SqlTrackingService 查詢特定的 WorkflowEvents,並擷取 TrackingWorkflowTerminatedEventArgsTrackingWorkflowSuspendedEventArgsTrackingWorkflowExceptionEventArgs 的二進位序列化物件。

  6. 還原序列化資料,並將其內容寫入主控台。

建立 SqlTrackingService 資料庫

由 Windows Workflow Foundation 安裝的 SQL 服務會使用 Microsoft SQL Server 來儲存資訊。您可以使用 Microsoft SQL Server 2005 Express、SQL Server 2000 (含) 以後版本或 SQL Server 2000 Desktop Engine (MSDE) 來執行這些工作。

Windows Workflow Foundation 安裝程式不會安裝這些服務所需的資料庫,但會安裝 SQL 指令碼來為這些服務建立和設定資料庫。

建立 SQL 追蹤資料庫

  1. 如果您使用 Microsoft SQL Server 2005 Express、SQL Server 2000 (含) 以後版本或 SQL Server 2000 Desktop Engine (MSDE),請使用 SQL 查詢陳述式 (Statement) 建立名為 Tracking 的新資料庫:

    CREATE DATABASE Tracking

    注意:在工作流程應用程式中同時使用 SqlTrackingServiceSqlWorkflowPersistenceService 時,建議您使用單一資料庫,以保持持續性並方便進行追蹤。

  2. 在 SQL Query Analyzer 工作區中,於可用資料庫的清單中選取您在步驟 1 建立的資料庫。

  3. 在 [檔案] 功能表上,按一下 [開啟],並開啟 SQL 指令碼 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\Tracking_Schema.sql

  4. 按一下 [執行] 或按下 F5 執行查詢,以建立 SQL 追蹤服務資料表。

  5. 在 [檔案] 功能表上,按一下 [開啟],並開啟 SQL 指令碼 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\Tracking_Logic.sql

  6. 按一下 [執行] 或按下 F5 執行查詢,以建立 SQL 追蹤服務預存程序。

若要建置範例

  1. 按一下 [下載範例] 來下載範例。

    這樣便會將範例專案擷取到本機硬碟上。

  2. 按一下 [開始],並依序指向 [程式集] 和 [Microsoft Windows SDK],再按一下 [CMD 殼層]。

  3. 移至範例的來源目錄。

  4. 在命令提示字元上,輸入 MSBUILD <方案檔名>

執行範例

  • 在 [SDK 命令提示字元] 視窗中,執行 EventArgsTrackingSample\bin\debug 資料夾 (若是範例的 VB 版本,則是 EventArgsTrackingSample\bin 資料夾) 中的 .exe 檔案,該資料夾位於此範例的主要資料夾下方。

請參閱

參考

SqlTrackingService
SqlTrackingQuery
SqlTrackingWorkflowInstance
ActivityEvents
ActivityTrackingRecord
WorkflowEvents
WorkflowTrackingRecord

其他資源

追蹤範例
簡單追蹤範例
使用 SQLTrackingService 查詢範例
使用使用者追蹤點追蹤範例
ConsoleTrackingService 範例
使用 SQLTrackingService 查詢範例
RuleActionTrackingEvent 範例
檔案追蹤服務與查詢範例
使用追蹤設定檔物件模型範例
SQL 資料維護範例
Windows Workflow Tracking Services

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.