工作流程監視器範例

Download sample

工作流程監視器是一個工具,可以顯示有關已完成工作流程和目前執行中工作流程的工作流程與活動狀態資訊。監視器會使用工作流程設計工具控制項,從追蹤資料庫讀取追蹤資訊並顯示目前工作流程、活動狀態,以及目前工作流程執行。

為使工作流程監視器正常運作,任何在資料庫中具有追蹤資訊的工作流程類型,都必須位於 GAC 或與工作流程監視器可執行檔相同的目錄。如果少了任何類型,當載入工作流程定義時,將會出現錯誤。此外,您也必須建立新的追蹤資料庫並執行工作流程,使工作流程監視器能正確地探索工作流程類型。

如需如何新增 sql 追蹤服務至您的工作流程執行階段,讓追蹤事件追蹤至 sql 追蹤資料庫的詳細資訊,請參閱下列章節。

設定主機進行監視

若要讓監視器顯示工作流程和活動,監視器必須可以取得設計工具和序列化程式碼。所有工作流程和活動類型都必須使用 gacutil.exe 在全域組件快取 (GAC) 中註冊,或放置在與 WorkflowMonitor.exe 相同的目錄中。此外,SqlTrackingQuery 需要存取類型,才能從 SqlTrackingService 資料表中讀取工作流程、活動資訊和工作流程定義。

下列程序示範如何設定工作流程監視器應用程式所使用的追蹤資料庫。

若要建立 SQL 追蹤資料庫

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

    CREATE DATABASE Tracking

    注意:在工作流程應用程式中同時使用 T:System.Workflow.Runtime.Tracking.SqlTrackingService 和 T:System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService 時,建議您使用單一資料庫,以保持持續性並方便進行追蹤。

  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 追蹤服務預存程序。

設定主應用程式

若要設定主應用程式使用 SqlTrackingService,請以程式設計方式或透過組態檔,將 SqlTrackingService 服務新增至服務的 WorkflowRuntime 集合。將 ConnectionString 屬性設定為伺服器名稱和資料庫。將 SqlTrackingService 服務的 IsTransactional 屬性設定為 false,讓監視器可以取得目前最新資料 (如果將 IsTransactional 屬性設定為 true,則資訊寫入資料庫前,會先經過批次處理)。

若要以程式設計方式新增 SqlTrackingService 服務,請使用下列程式碼範例:

C#:

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

SqlTrackingService sqlTrackingService = new SqlTrackingService("Initial Catalog=Tracking;Data Source=localhost;Integrated Security=SSPI;");

sqlTrackingService.IsTransactional = false;

workflowRuntime.AddService(sqlTrackingService);

workflowRuntime.StartRuntime();

Visual Basic:

Dim workflowRuntime As New WorkflowRuntime()

Dim sqlTrackingService As New SqlTrackingService("Initial Catalog=Tracking;Data Source=localhost;Integrated Security=SSPI;")

sqlTrackingService.IsTransactional = false

workflowRuntime.AddService(sqlTrackingService)

workflowRuntime.StartRuntime()

若要透過組態檔新增 SqlTrackingService 服務,主應用程式的程式碼必須在 WorkflowRuntime 建構函式中指定組態區段名稱,並且組態檔 (例如 app.config) 必須包含 WorkflowRuntime 組態資訊。例如:

主應用程式

C#:
WorkflowRuntime workflowRuntime = new WorkflowRuntime("WorkflowRuntimeConfigurationSection");
workflowRuntime.StartRuntime();

Visual Basic:
Dim workflowRuntime As New WorkflowRuntime("WorkflowRuntimeConfigurationSection")
workflowRuntime.StartRuntime()

組態檔

<configuration>
    <configSections>
        <section name="WorkflowRuntimeConfigurationSection" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </configSections>
    <WorkflowRuntimeConfigurationSection Name="WorkflowRuntimeConfigurationSectionName" UnloadOnIdle="false">
        <Services>
            <add type="System.Workflow.Runtime.Tracking.SqlTrackingService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  ConnectionString="Initial Catalog=TrackingStore;Data Source=localhost;Integrated Security=SSPI;" IsTransactional="false" UseDefaultProfile="true" />
        </Services>
    </WorkflowRuntimeConfigurationSection>
</configuration>

監視使用者介面

監視器介面包含三個主要窗格:

  • [工作流程] 窗格

  • [活動] 窗格

  • [工作流程檢視] 窗格

監視器會讀取已追蹤的所有工作流程。若要指定電腦名稱和資料庫,請使用 [設定] 對話方塊。若要開啟這個對話方塊,請按一下 [監視器] 功能表上的 [設定],或者按一下 [設定] 工具列按鈕。

工作流程搜尋選項工具列

這個工具列會顯示工具的搜尋選項。您可以搭配使用工作流程狀態和狀態發生的時間間隔來進行搜尋,以及藉由追蹤資料項目值來進行搜尋。此外,您也可以使用工作流程識別碼進行搜尋。舉例來說,您可以搜尋在昨天終止,且 CheckCredit 活動中追蹤資料項目 PurchaseAmount 值為 500 的已終止工作流程。

Note注意:

根據預設,SqlTrackingService 預設追蹤設定檔會擷取所有工作流程、活動以及使用者追蹤點事件,但不會擷取任何工作流程追蹤資料。因此,在您更新預設追蹤設定檔,或更新與正在執行之特定型別相關的追蹤設定檔之前,您不能根據 [追蹤資料項目] 進行搜尋。您可以使用這個範例所附的 SQL 指令碼 UpdateV1DefaultTrackingProfile.sql 來更新預設追蹤設定檔,以便從活動擷取 Name 屬性。

請使用追蹤設定檔中的下列項目來執行這項操作:

<Extracts>
    <WorkflowDataTrackingExtract>
        <Member>Name</Member>
    </WorkflowDataTrackingExtract>
</Extracts>

工作流程窗格

這個窗格會顯示追蹤資料庫中的所有工作流程,以及每個工作流程的狀態。當選取某個工作流程時,會在追蹤資料庫中查詢該工作流程的所有已完成與執行中活動的目前狀態,並且這些活動會顯示在 [活動] 窗格中。

活動窗格

這個窗格會顯示 [工作流程] 窗格中所選取工作流程的所有活動和活動狀態。

工作流程檢視窗格

這個窗格主控 Windows Workflow Foundation 所隨附的工作流程設計工具控制項。它可讓使用者展開與摺疊複合活動,並且變更工作流程檢視 (在主檢視、例外狀況、事件和補償間切換)。在 [工作流程] 窗格中選取工作流程時,[工作流程] 窗格會在所有完成的活動前顯示一個核取記號,並在所有執行中活動前顯示一個「播放」圖示。

功能表

工作流程監視器的功能表選項如下:

檔案功能表

[結束] – 結束程式。

檢視功能表

[工作流程詳細資料] – 如果啟用,則會顯示 [工作流程] 和 [活動] 窗格。

監視器功能表

[開始/停止] – 開始或停止監視器。

[設定] – 顯示 [設定] 對話方塊。

工具列按鈕

工作流程監視器的工具列按鈕如下:

  • [設定] – 顯示 [設定] 對話方塊 (如需詳細資訊,請參閱「設定」一節)。

  • [開啟監視器] – 開始監視追蹤資料庫 (請參閱「使用監視器」)。

  • [關閉監視器] – 停止監視追蹤資料庫 (請參閱「使用監視器」)。

  • [全部展開] – 展開工作流程檢視中的所有複合活動。

  • [全部摺疊] – 摺疊工作流程檢視中的所有複合活動。

  • [工作流程縮放層級] – 設定工作流程檢視的縮放層級。

設定

您可以使用 [設定] 對話方塊來設定監視器。您可以指定下列欄位:

  • [SQL Server] – 執行 SQL Server 的本機或遠端電腦。

  • [追蹤資料庫] – 用來儲存追蹤資訊的資料庫。

  • [輪詢間隔] – 重新輪詢資料庫前要等待的毫秒數。

  • [輪詢時自動選取最近項目] – 選取時,[工作流程] 窗格自動選取最近執行的工作流程。

Note注意:

伺服器名稱和資料庫名稱也會出現在狀態列中。

使用監視器

工作流程監視器會輪詢追蹤資料庫,並自動在 [工作流程] 和 [活動] 窗格中顯示工作流程和活動的狀態,在 [工作流程檢視] 窗格中顯示工作流程進度。若要開啟監視器,請使用 [開啟監視器] 工具列按鈕,或按一下 [監視器] 功能表上的 [開始]。使用 [設定] 對話方塊可以設定輪詢間隔。當您監視追蹤資料庫時,顯示目前執行的最新工作流程是很有用的。若要執行這項操作,請在 [設定] 對話方塊中選取 [輪詢時自動選取最近項目] 核取方塊。

Note注意:

開啟監視器時,狀態列會出現「監視」字樣。

工作流程監視器使用 SqlTrackingQuery API 做為查詢功能。工作流程和活動的清單是透過 SqlTrackingQuery API 擷取的。搜尋功能會使用 SqlTrackingQuery API。

相同工作流程類型的多個定義

第一次使用新工作流程類型時,SqlTrackingService 會保存工作流程定義。然而,如果定義變更而類型版本維持不變,就無法在追蹤資料庫中保存新記錄。因此,監視器一律會顯示工作流程類型的第一個定義。

使用者設定

工作流程監視器會將設定 (SQL Server、資料庫、輪詢間隔) 存放下列目錄的 workflowmonitor.config 檔案中:\Documents and Settings\<user>\Local Settings\Application Data\Microsoft Corporation\Windows Workflow Foundation SDK Application Samples\3.0.0.0。

請參閱

參考

SqlTrackingService

其他資源

Using the SQLTrackingService
Task 4: Use the Windows Workflow Tracking Service
簡單追蹤範例
應用程式範例

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.