第 5 课:使用 Windows PowerShell 跟踪工作流

**完成所需时间:**25 分钟

**目标:**了解如何使用 Windows PowerShell 将跟踪配置文件配置为监控工作流中定义的变量。

**目的:**本课程的目的是向您演示如何使用 Windows Server AppFabric cmdlet 配置订单服务的自定义跟踪配置文件。然后使用脚本功能报告来自监控存储的自定义跟踪信息。

先决条件

在开始本课程之前,请注意以下先决条件:

过程

在本课程中,您将执行以下步骤:

  1. 创建一个新的自定义跟踪配置文件,代表使用 Windows PowerShell 进行的配置。

  2. 使用 Windows PowerShell 报告当前跟踪配置。

  3. 使用 Windows PowerShell 将 OrderWorkflowService 配置为使用新的自定义跟踪配置文件。

  4. 使用 Windows PowerShell 报告来自监控存储的自定义跟踪信息。

创建新的自定义跟踪配置文件

在此部分中,您将创建一个新的自定义跟踪配置文件,该配置文件实际是Windows Server AppFabric 界面的使用教程第 5 课:使用 AppFabric 恢复已挂起的工作流中使用的副本。该新跟踪配置文件的名称中将带有揰PSAppFabric cmdlet 将该配置文件与配置相关联。

  1. 在 Windows PowerShell 中,输入以下命令。

    Notepad OrderService_PS.tp
    

    记事本提示创建新文件时,请单击“是”。

  2. 将以下 XML 元素复制并粘贴到记事本中。

    <trackingProfile name="CustomOrderServiceProfile - Windows PowerShell Config">
       <workflow activityDefinitionId="*">
          <workflowInstanceQueries>
             <workflowInstanceQuery>
                <states>
                   <state name="*" />
                </states>
             </workflowInstanceQuery>
          </workflowInstanceQueries>
    
          <activityStateQueries>
             <activityStateQuery activityName="Wait for order">
                <states>
                   <state name="Closed" />
                </states>
                <variables>
                   <variable name="product"/>
                   <variable name="quantity"/>
                </variables>
             </activityStateQuery>
          </activityStateQueries>
    
          <faultPropagationQueries>
             <faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" />
          </faultPropagationQueries>
    
          <bookmarkResumptionQueries>
             <bookmarkResumptionQuery name="*" />
          </bookmarkResumptionQueries>
    
          <customTrackingQueries>
             <customTrackingQuery name="*" activityName="*" />
          </customTrackingQueries>
       </workflow>
    </trackingProfile>
    

    使用此跟踪配置文件,可以跟踪 OrderWorkflow.xamlx 中等待订单活动的 productquantity 工作流变量。

  3. 关闭记事本,并在提示保存对 OrderService_PS.tp 的更改时单击“保存”。

从 Windows PowerShell 报告跟踪配置

在此部分中,您将使用 Windows PowerShell 的 AppFabric cmdlet 查看 OrderWorkflowService 的当前跟踪配置。

  1. 在 Windows PowerShell 中执行以下命令,以查看当前是否已为 OrderWorkflowService 启用了跟踪。

    Get-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl *
    

    您的结果应与以下内容类似。

    IsTrackingEnabled : True
    ProfileName       : HealthMonitoring Tracking Profile
    IsLocal           : True
    BehaviorName      :
    
  2. 在 Windows PowerShell 中执行以下命令,以查看 OrderWorkflowService 的可用跟踪配置文件。

    Get-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl Name
    

    您的结果应与以下输出类似,它显示了 OrderWorkflowService 当前可用的跟踪配置文件。

    Name :
    
    Name : ErrorsOnly Tracking Profile
    
    Name : HealthMonitoring Tracking Profile
    
    Name : EndToEndMonitoring Tracking Profile
    
    Name : Troubleshooting Tracking Profile
    

使用 Windows PowerShell 配置自定义跟踪

在此部分中,您将使用 Windows PowerShell 的 AppFabric cmdlet 将 OrderWorkflowService 配置为使用新的自定义跟踪配置文件。

  1. 执行以下命令,以将 OrderService_PS.tp 添加到 OrderWorkflowService 的可用跟踪配置文件列表。

    Import-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" -FilePath $(Get-Item ".\OrderService_PS.tp").FullName | fl *
    

    请注意,OrderService_PS.tp 必须在当前 Windows PowerShell 目录中,此命令才能成功执行。

    添加跟踪配置文件的结果应与以下内容类似。

    Name        : CustomOrderServiceProfile - Windows PowerShell Config
    SiteName    : OrderService_PS
    VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx
    IsLocal     : True
    
  2. 在 Windows PowerShell 中执行以下命令,以查看 OrderWorkflowService 的可用跟踪配置文件的新列表。

    Get-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl Name
    

    结果应与以下内容类似,其中包括名为**“CustomOrderServiceProfile - Windows PowerShell Config”**的配置文件。

    Name :
    
    Name : ErrorsOnly Tracking Profile
    
    Name : HealthMonitoring Tracking Profile
    
    Name : EndToEndMonitoring Tracking Profile
    
    Name : Troubleshooting Tracking Profile
    
    Name : CustomOrderServiceProfile - Windows PowerShell Config
    
  3. 要将 OrderWorkflowService 配置为使用名为**“CustomOrderServiceProfile - Windows PowerShell Config”**的新配置文件,请在 Windows PowerShell 中执行以下命令。

    Set-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" -ProfileName "CustomOrderServiceProfile - Windows PowerShell Config" | fl *
    

    您的结果应与以下内容类似。

    IsTrackingEnabled : True
    ProfileName       : CustomOrderServiceProfile - Windows PowerShell Config
    IsLocal           : True
    BehaviorName      :
    
  4. 在 Windows PowerShell 中执行以下命令,以查看 OrderWorkflowService 的新跟踪配置。

    Get-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl *
    

    报告的跟踪配置应如下所示。

    IsTrackingEnabled : True
    ProfileName       : CustomOrderServiceProfile - Windows PowerShell Config
    IsLocal           : True
    BehaviorName      :
    

使用 Windows PowerShell 报告自定义跟踪数据

在此部分中,您将使用脚本功能针对在上一部分中配置的跟踪工作流变量报告工作流事件。要报告新的跟踪信息,必须运行新的工作流实例,并使用新的跟踪配置生成跟踪数据。

添加新脚本功能以报告跟踪信息

执行以下步骤,向 Utility.ps1 添加新的脚本功能,以报告自定义跟踪信息。

  1. 在 Windows PowerShell 中,输入以下命令。

    Notepad .\Utility.ps1
    
  2. 将以下脚本代码复制并粘贴到记事本中 Utility.ps1 的底部。

    #============================================================================================#
    #===                                                                                      ===#
    #=== Retrieves Tracked WF Variable Events for the given workflow and variable from the    ===#
    #=== specified monitoring store.                                                       ===#
    #===                                                                                      ===#
    #============================================================================================#
    
    
    Function GetTrackedWFVariableEvents($FullWorkflowName,$trackedVariable,$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, " +
                      "WfEventProperties.Name AS TrackedVariableName, " + 
                      "WfEventProperties.Value AS TrackedVariableValue " +
    
              "FROM    EventSources INNER JOIN " +
                      "WfEvents ON EventSources.Id = WfEvents.EventSourceId INNER JOIN " +
                      "WfEventProperties ON WfEvents.Id = WfEventProperties.EventId " +
              "WHERE   EventSources.Name = `'$FullWorkflowName`' AND WfEventProperties.Name = `'$trackedVariable`'"
    
    
      Invoke-Sqlcmd -Query $SQL -Database $database
    }
    

    此新的 GetTrackedWFVariableEvents 功能仅对 GetWFEvents 功能进行了少许修改。它向 WfEventProperties 视图添加了一个额外的 INNER JOIN 以报告跟踪的变量名称及其值。它还按工作流名称和跟踪的变量名称(而不是按 InstanceId)对 SQL 查询进行了筛选。这样,您就可以在下订单时按您设置的**“数量”**值标识工作流实例。实际上,应公开订单 ID 以进行跟踪。

  3. 关闭记事本,并单击**“保存”**以保存对 Utility.ps1 的更改。

  4. 在 Windows PowerShell 中输入以下命令,以导入对当前 Windows PowerShell 会话的 Utility.ps1 的最新更改。

    Import-Module .\Utility.ps1
    

生成并报告新的跟踪数据

  1. 运行 OrderClient.exe。此文件应已按照Windows Server AppFabric 界面的使用教程第 1 课:入门中提供的信息部署到 C:\DublinTutorial\OrderClient 目录下。

  2. 为“数量”值输入 88。

  3. 在“ontoso.com 订单表单”上单击“提交”。继续操作之前,请验证该窗体底部的状态部分是否显示“已收到您的订单”。该窗体显示此信息之后,将运行订单工作流的新实例,模拟处理订单的过程。

  4. 等待记录跟踪信息,约 30 秒。

  5. 在 Windows PowerShell 窗口中,输入以下命令以报告跟踪事件。

    GetTrackedWFVariableEvents "Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow" quantity OrderService_PS
    

    您的结果应与以下报告类似。请注意为工作流实例跟踪的 TrackedVariableNameTrackedVariableValue

    WorkflowName         : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer             : server1
    Site                 : OrderService_PS
    VirtualPath          : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID              : 1439
    WorkflowInstanceId   : ac0fd7fb-d463-4683-9c75-80d90a8b75ed
    TimeCreated          : 2009-11-02 10:09:21.3108822
    EventName            : Wait for order
    State                : Closed
    ActivityName         :
    Exception            :
    TrackedVariableName  : quantity
    TrackedVariableValue : 88
    

我刚刚完成了哪些工作?

在本课程中,您创建了一个新的跟踪配置文件,并使用 Windows PowerShell 的 AppFabric cmdlet 将 OrderWorkflowService 配置为使用新配置文件。接着,您通过创建工作流的新实例生成了跟踪信息,并使用自定义 Windows PowerShell 脚本功能报告了跟踪数据。

另请参阅

概念

第 1 课:Windows PowerShell 的 Windows Server AppFabric Cmdlet 入门
第 2 课:使用 Windows PowerShell 部署订单服务应用程序
第 3 课:为订单服务配置 Windows PowerShell
第 4 课:使用 Windows PowerShell 监控订购服务

  2011-12-05