Lição 5: rastreando o fluxo de trabalho com o Windows PowerShell

Tempo para conclusão: 25 minutos

Objetivo: Aprender como configurar um perfil de rastreamento para monitorar variáveis definidas em um fluxo de trabalho com o Windows PowerShell.

Finalidade: A finalidade desta lição é mostrar como usar os cmdlets do Windows Server AppFabric para configurar um perfil de rastreamento personalizado para o Order Service. Em seguida, você relatará as informações de rastreamento personalizado a partir do repositório de armazenamento usando uma função de script.

Pré-requisitos

Observe os seguintes requisitos Antes de começar esta lição:

Procedimento

Você executará as seguintes etapas nesta lição:

  1. Crie um novo perfil de rastreamento personalizado para representar as configurações feitas com o Windows PowerShell.

  2. Relate a configuração de rastreamento atual com o Windows PowerShell.

  3. Use o Windows PowerShell para configurar o OrderWorkflowService para usar o novo perfil de rastreamento personalizado.

  4. Relate as informações de rastreamento personalizado do repositório de monitoramento usando o Windows PowerShell.

Criando um novo perfil de rastreamento personalizado

Nesta seção, você criará um novo perfil de rastreamento personalizado, que é, na realidade, uma cópia daquele usado na Lição 5: continuar um fluxo de trabalho suspenso usando o AppFabric do Tutorial usando a interface do Windows Server AppFabric. Esse novo perfil de rastreamento terá um nome com o sufixo “_PS”, para que você possa associar o perfil a suas configurações usando os cmdlets AppFabric.

  1. No Windows PowerShell, insira o comando a seguir.

    Notepad OrderService_PS.tp
    

    Clique em Sim quando o Bloco de Notas solicitar que você crie o novo arquivo.

  2. Copie e cole os elementos XML a seguir no Bloco de Notas.

    <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>
    

    Esse perfil de rastreamento permite rastrear as variáveis de fluxo de trabalho product e quantity na atividade Aguardar solicitação em OrderWorkflow.xamlx.

  3. Feche o Bloco de Notas e clique em Salvar quando for solicitado para salvar as alterações feitas em OrderService_PS.tp.

Relatando a configuração de rastreamento do Windows PowerShell

Nesta seção, você usará os cmdlets do AppFabric para Windows PowerShell para exibir a configuração de rastreamento atual do OrderWorkflowService.

  1. Execute o comando a seguir no Windows PowerShell para ver se o rastreamento está habilitado no momento para o OrderWorkflowService.

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

    Os resultados devem ser similares ao seguinte:

    IsTrackingEnabled : True
    ProfileName       : HealthMonitoring Tracking Profile
    IsLocal           : True
    BehaviorName      :
    
  2. Execute o comando a seguir no Windows PowerShell para ver os perfis de rastreamento disponíveis para o OrderWorkflowService.

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

    Os resultados devem ser similares à seguinte saída, que exibe os perfis de rastreamento disponíveis no momento para o OrderWorkflowService.

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

Configurando o rastreamento personalizado com o Windows PowerShell

Nesta seção, você usará os cmdlets do AppFabric para Windows PowerShell a fim de configurar o OrderWorkflowService para usar o novo perfil de rastreamento personalizado.

  1. Execute o comando a seguir para adicionar OrderService_PS.tp à lista de perfis de rastreamento disponíveis para o OrderWorkflowService.

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

    Observe que o OrderService_PS.tp deve estar no diretório atual do Windows PowerShell para que este comando tenha êxito.

    Os resultados de adicionar o perfil de rastreamento devem ser similares à seguinte saída:

    Name        : CustomOrderServiceProfile - Windows PowerShell Config
    SiteName    : OrderService_PS
    VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx
    IsLocal     : True
    
  2. Execute o comando a seguir no Windows PowerShell para ver a nova lista de perfis de rastreamento disponíveis para o OrderWorkflowService.

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

    Os resultados devem ser similares à seguinte saída, que inclui o perfil com o nome “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. Para configurar o OrderWorkflowService para usar o novo perfil com o nome “CustomOrderServiceProfile - Windows PowerShell Config”, execute o comando a seguir no Windows PowerShell.

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

    Os resultados devem ser similares ao seguinte:

    IsTrackingEnabled : True
    ProfileName       : CustomOrderServiceProfile - Windows PowerShell Config
    IsLocal           : True
    BehaviorName      :
    
  4. Execute o comando a seguir no Windows PowerShell para ver a nova configuração de rastreamento do OrderWorkflowService.

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

    A configuração de rastreamento deve ser relatada da seguinte forma:

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

Usando o Windows PowerShell para relatar os dados de rastreamento personalizado

Nesta seção, você usará uma função de script para relatar eventos de fluxo de trabalho para as variáveis de fluxo de trabalho rastreadas que você configurou na seção anterior. Para relatar as novas informações de rastreamento, você deve executar uma nova instância de Fluxo de Trabalho e gerar os dados de rastreamento com a nova configuração de rastreamento.

Adicionando uma nova função de script para relatar informações de rastreamento

Execute as etapas a seguir para adicionar uma nova função de script a Utility.ps1, a fim de relatar as informações de rastreamento personalizado.

  1. No Windows PowerShell, insira o comando a seguir.

    Notepad .\Utility.ps1
    
  2. No Bloco de Notas, copie e cole o código de script a seguir no final de 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
    }
    

    Essa nova função GetTrackedWFVariableEvents é apenas uma pequena modificação feita na função GetWFEvents. Ela acrescenta um INNER JOIN adicional com a exibição WfEventProperties para relatar os nomes das variáveis rastreadas e seus valores. Ela também filtra a consulta SQL pelo nome de fluxo de trabalho e nome de variável rastreada, não pelo InstanceId. Isso permite identificar a instância de Fluxo de Trabalho pelo valor de Quantidade que você definiu quando fez uma solicitação. De modo prático, a ID de uma solicitação deve ficar exposta para rastreamento.

  3. Feche o Bloco de Notas e clique em Salvar para salvar as alterações feitas em Utility.ps1.

  4. Insira o seguinte comando no Windows PowerShell para importar as novas alterações feitas em Utility.ps1 para a sessão atual do Windows PowerShell.

    Import-Module .\Utility.ps1
    

Gerando e relatando os novos dados de rastreamento

  1. Execute OrderClient.exe. Esse arquivo deve ter sido implantado no diretório C:\DublinTutorial\OrderClient, conforme documentado na Lição 1: introdução do Tutorial usando a interface do Windows Server AppFabric.

  2. Insira 88 para o valor de Quantidade.

  3. Clique em Submit (Enviar) no Order Form (Formulário de Pedido) do Contoso.com. Antes de continuar, verifique se a seção de status na parte inferior do formulário mostra Your order has been received (Seu pedido foi recebido). Depois que isso for exibido no formulário, uma nova instância de Fluxo de Trabalho do pedido será executada, simulando o processamento de um pedido.

  4. Aguarde cerca de 30 segundos para a gravação das informações de rastreamento.

  5. Na janela do Windows PowerShell, insira o seguinte comando para relatar os eventos de rastreamento.

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

    Os resultados devem ser similares ao relatório a seguir. Observe o TrackedVariableName e o TrackedVariableValue que foram rastreados para a instância de fluxo de trabalho.

    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
    

O que terminei de fazer?

Nesta lição, você criou um novo perfil de rastreamento e usou os cmdlets do AppFabric para Windows PowerShell a fim de configurar o OrderWorkflowService para usar o novo perfil. Em seguida, você gerou as informações de rastreamento criando uma nova instância de Fluxo de Trabalho e relatou os dados de rastreamento usando uma função de script do Windows PowerShell personalizada.

Consulte também

Conceitos

Lição 1: introdução aos cmdlets do Windows Server AppFabric para Windows PowerShell
Lição 2: implantando o aplicativo Order Service com o Windows PowerShell
Lição 3: configurando o Order Service com o Windows PowerShell
Lição 4: monitorando o Order Service com o Windows PowerShell

  2011-12-05