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:
Você deve ter o aplicativo Order Service implantado conforme documentado na Lição 2: implantando o aplicativo Order Service com o Windows PowerShell.
Você deve concluir a Lição 3: configurando o Order Service com o Windows PowerShell.
É preciso ter algum conhecimento de SQL Server para compreender todas as seções desta lição.
Procedimento
Você executará as seguintes etapas nesta lição:
Crie um novo perfil de rastreamento personalizado para representar as configurações feitas com o Windows PowerShell.
Relate a configuração de rastreamento atual com o Windows PowerShell.
Use o Windows PowerShell para configurar o OrderWorkflowService para usar o novo perfil de rastreamento personalizado.
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.
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.
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.
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.
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 :
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.
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
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
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 :
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.
No Windows PowerShell, insira o comando a seguir.
Notepad .\Utility.ps1
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.
Feche o Bloco de Notas e clique em Salvar para salvar as alterações feitas em Utility.ps1.
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
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.
Insira 88 para o valor de Quantidade.
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.
Aguarde cerca de 30 segundos para a gravação das informações de rastreamento.
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