共用方式為


第 4 課:使用 Windows PowerShell 來監控 Order Service

完成時間: 25 分鐘

目標: 了解如何使用適用於 Windows PowerShell 的 Windows Server AppFabric Cmdlet 來監控即時資料與歷程記錄監控資料。

用途: 此課程的目的是協助您熟悉使用適用於 Windows PowerShell 的 AppFabric Cmdlet 所報告的執行個體資訊,以及如何利用該資訊來控制執行個體。

必要條件

開始此課程之前,請先檢查下列必要條件:

程序

您將會進行此課程中的下列練習:

  1. 使用 Windows PowerShell 報告監控資訊。

  2. 使用 Windows PowerShell 控制工作流程執行個體。

  3. 使用 Windows PowerShell 檢視在 AppFabric 監控資料庫追蹤的工作流程事件。

使用 Windows PowerShell 報告監控資訊

針對隨 Order Service 應用程式部署的 OrderWorkflowService 報告 WF 執行個體

  1. 從 C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug 目錄執行 OrderClient.exe。此檔案是在第 2 課:使用 Windows PowerShell 來部署訂單服務應用程式中建立。您可以將下列命令複製到 Windows PowerShell 以執行 OrderClient。

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. 按一下 [Contoso.com Order Form] 上的 [Submit]。請先確認表單狀態區段顯示「Your order has been received」再繼續。當表單顯示此訊息之後,會執行 OrderWorkflowService 的執行個體以模擬訂單處理程序。

  3. 請記下時間,以便與工作流程執行個體的建立時間交互參照。

  4. 如果要使用 AppFabric Cmdlet 報告 OrderWorkflowService 的工作流程執行個體,請在 Windows PowerShell 中執行下列命令。

    Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
    

    此命令會取得 OrderService_PS 資料庫中的所有 OrderWorkflowService 執行個體。這些執行個體會以管道處理方式傳遞到 Format-List Cmdlet (使用其 fl 別名),只報告所需的工作流程屬性。

  5. 確認您的命令產生類似下列清單的工作流程執行個體清單。

    InstanceId       : 95a25419-0d71-42c4-ab70-aa523ba603fc
    Status           : Running
    Condition        : Active
    CreationTime     : 11/1/2009 2:04:48 AM
    LastUpdateTime   : 11/1/2009 2:04:56 AM
    SiteName         : OrderService_PS
    VirtualPath      : /OrderWorkflowService/OrderWorkflow.xamlx
    ExceptionMessage :
    

    您可以使用此資訊來監控執行個體的狀態與例外狀況資訊。

  6. 尋找含有您在步驟 3 標註之 CreationTime 的執行個體。

使用 Windows PowerShell 控制工作流程執行個體

在本節中,您將暫停、繼續與停止工作流程執行個體。

  1. 再次執行 OrderClient.exe 以確定執行個體是執行中狀態。Windows PowerShell 中的下列命令會執行 OrderClient。

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. 按一下 [Contoso.com Order Form] 上的 [Submit]。請先確認表單狀態區段顯示「Your order has been received」再繼續。當表單顯示此訊息之後,會執行 OrderWorkflowService 的執行個體以模擬訂單處理程序。

  3. 請記下時間,以便與工作流程執行個體的建立時間交互參照。

  4. 使用 AppFabric Cmdlet,在 Windows PowerShell 中執行下列命令,以報告 OrderWorkflowService 的工作流程執行個體。

    Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" –Status Running | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
    
  5. 確認您的命令產生類似下列清單的工作流程執行個體清單。

    InstanceId       : 95a25419-0d71-42c4-ab70-aa523ba603fc
    Status           : Running
    Condition        : Active
    CreationTime     : 11/1/2009 2:04:48 AM
    LastUpdateTime   : 11/1/2009 2:04:56 AM
    SiteName         : OrderService_PS
    VirtualPath      : /OrderWorkflowService/OrderWorkflow.xamlx
    ExceptionMessage :
    
  6. 尋找含有您在步驟 3 中標註之 CreationTime 的執行個體。按住滑鼠左鍵並拖曳到 GUID 上方以反白顯示針對 [InstanceId] 顯示的 GUID 值。

  7. 在反白顯示整個 GUID 之後,在反白顯示的 GUID 上按一下滑鼠右鍵,並將 GUID 複製到剪貼簿。

  8. 如果要暫停剪貼簿上以 [InstanceId] 識別的執行中工作流程執行個體,請執行下列命令,用您的 InstanceId 取代下面顯示的 GUID。

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Suspend-ASAppServiceInstance
    

    此命令會取得以 InstanceId 識別的工作流程執行個體,並將它以管道處理方式傳遞到 Suspend-ASAppServiceInstance Cmdlet 以暫停工作流程。

  9. 如果要繼續工作流程,請執行下列命令,用您的 InstanceId 取代下面顯示的 GUID。

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Resume-ASAppServiceInstance
    

    此命令會取得以 InstanceId 識別的工作流程執行個體,並將它以管道處理方式傳遞到 Resume-ASAppServiceInstance Cmdlet 以繼續暫停的工作流程。

  10. 如果要停止並終止執行個體,請執行下列命令,用您的 InstanceId 取代下面顯示的 GUID。

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Stop-ASAppServiceInstance -Terminate
    

    此命令會取得以 InstanceId 識別的工作流程執行個體,並將它以管道處理方式傳遞到 Stop-ASAppServiceInstance Cmdlet 以停止並終止工作流程。

使用 Windows PowerShell 檢視追蹤的 WF 事件

依據為工作流程設定的監控等級與追蹤設定檔,您可以追蹤工作流程中的許多資料點。您可以使用第 3 課:使用 Windows PowerShell 來設定 Order Service 中的 Set-ASAppMonitoring Cmdlet,將監控等級設定為 HealthMonitoring。在本節中,您將產生針對您的執行個體追蹤之 WF 事件的報告。為報告此資訊,您將再次使用將新增至 Utility.ps1 指令碼模組的指令碼函式。

  1. 在 Windows PowerShell 中,輸入下列命令以開啟 Utility.ps1 指令檔。

    Notepad .\Utility.ps1
    
  2. 將下列指令碼函式複製並貼到記事本中的 Utility.ps1 指令碼下方。

    #============================================================================================#
    #===                                                                                      ===#
    #===                   Make sure the modules and snapins are loaded                       ===#
    #===                                                                                      ===#
    #============================================================================================#
    
    function RegisterSnapIn($snapin)
    {
    $reg = Get-PSSnapin -Registered -Name $snapin
    $added = Get-PSSnapin -Name $snapin -ErrorAction SilentlyContinue
    if ($reg.Name -eq $snapin)
    {
    if ($added.Name -ne $snapin)
    {
    Add-PSSnapin $snapin
    }
    }
    }
    
    
    RegisterSnapIn "SqlServerProviderSnapin100"
    RegisterSnapIn "SqlServerCmdletSnapin100"
    Import-Module ApplicationServer
    
    
    
    #============================================================================================#
    #===                                                                                      ===#
    #=== Retrieves WF Events for the given InstanceId from the specified monitoring database. ===#
    #===                                                                                      ===#
    #============================================================================================#
    
    
    Function GetWFEvents($InstanceId,$database)
    {
    
      $SQL = "SELECT  EventSources.Name AS WorkflowName, " +
                      "EventSources.Computer, " +
                      "EventSources.Site, " +
                      "EventSources.VirtualPath, " + 
                      "WfEvents.Id AS EventID, " + 
                      "WfEvents.WorkflowInstanceId, " +
                      "WfEvents.TimeCreated, " + 
                      "WfEvents.Name AS EventName, " + 
                      "WfEvents.State, " + 
                      "WfEvents.ActivityName, " + 
                      "WfEvents.Exception " +
              "FROM    EventSources INNER JOIN " +
                      "WfEvents ON EventSources.Id = WfEvents.EventSourceId " +
              "WHERE   WfEvents.WorkflowInstanceId = `'$InstanceId`'"
    
    
      Invoke-Sqlcmd -Query $SQL -Database $database
    }
    

    此指令碼可確保使用 SQL Server Cmdlet 所需的元件會載入 Windows PowerShell 工作階段中。它也會新增名為 GetWFEvents 的公用程式函式。該函式可讓您查詢監控資料庫,從 Wfevents 檢視擷取工作流程事件資訊。此函式使用的 SQL 查詢會與 EventSources 檢視執行內部聯結,以識別與事件關聯的工作流程。

  3. 關閉 [記事本],並按一下 [儲存] 將變更儲存到 Utility.ps1。

  4. 在 Windows PowerShell 中執行下列命令,將 Utility.ps1 的新變更匯入到您的 Windows PowerShell 工作階段。

    Import-Module .\Utility.ps1
    
  5. 在 Windows PowerShell 中輸入下列命令,以使用新的指令碼函式來查詢在監控資料庫中針對您的工作流程執行個體記錄的工作流程事件。務必使用您的執行個體識別碼取代下面顯示的 GUID。

    GetWFEvents 95a25419-0d71-42c4-ab70-aa523ba603fc OrderService_PS
    
  6. Windows PowerShell 中的輸出應該是與下列類似的事件清單。

    WorkflowName       : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer           : server1
    Site               : OrderService_PS
    VirtualPath        : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID            : 975
    WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc
    TimeCreated        : 2009-11-01 10:06:57.6974305
    EventName          : Order completed
    State              : Closed
    ActivityName       :
    Exception          :
    
    WorkflowName       : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer           : server1
    Site               : OrderService_PS
    VirtualPath        : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID            : 976
    WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc
    TimeCreated        : 2009-11-01 10:06:57.6974305
    EventName          : Order Service
    State              : Closed
    ActivityName       :
    Exception          :
    
    WorkflowName       : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer           : server1
    Site               : OrderService_PS
    VirtualPath        : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID            : 977
    WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc
    TimeCreated        : 2009-11-01 10:06:57.6974305
    EventName          :
    State              : Completed
    ActivityName       :
    Exception          :
    

此步驟中報告的事件提供關於工作流程中的活動與操作狀態的資訊。在執行階段期間,此資訊有助於監控工作流程進度。

如需有關查詢監控資料庫的詳細資訊,請參閱監控資料庫檢視與資料表

您可能也想檢視指令碼範例:使用 Windows PowerShell 來查詢 SQL 監控資料庫。如需詳細資訊,請參閱範例

我剛剛做了什麼?

在本節中,您已學習如何報告 AppFabric 監控的工作流程資訊與識別執行個體。您也學會如何對執行個體使用暫停、繼續與停止控制作業。課程最後,您使用新增至 Utility.ps1 指令碼模組的指令碼函式報告監控資料庫中的工作流程事件。

後續步驟

第 5 課:使用 Windows PowerShell 來追蹤工作流程

另請參閱

概念

第 1 課:開始使用 Windows PowerShell 的 Windows Server AppFabric Cmdlet
第 2 課:使用 Windows PowerShell 來部署訂單服務應用程式
第 3 課:使用 Windows PowerShell 來設定 Order Service
第 5 課:使用 Windows PowerShell 來追蹤工作流程

  2011-12-05