Lección 5: Seguimiento del flujo de trabajo con Windows PowerShell
Tiempo de realización: 25 minutos
Objetivo: aprender el modo de configurar un perfil de seguimiento para realizar un seguimiento de las variables definidas en un flujo de trabajo con Windows PowerShell.
Propósito: el propósito de esta lección es mostrarle cómo usar los cmdlets de Microsoft AppFabric 1.1 para Windows Server para configurar un perfil de seguimiento personalizado para la aplicación OrderService. A continuación, notificará la información de seguimiento personalizado desde el almacén de seguimiento mediante el uso de una función de script.
Requisitos previos
Tenga en cuenta los siguientes requisitos antes de comenzar esta lección:
Debe tener implementada la aplicación Order Service, tal como se documenta en la Lección 2: Implementación de la aplicación OrderService con Windows PowerShell.
Debe completar la Lección 3: Configuración de Order Service con Windows PowerShell.
Debe tener conocimientos de SQL Server para comprender todas las secciones de esta lección.
Procedimiento
En esta lección realizará los siguientes pasos:
Creación de un nuevo perfil de seguimiento personalizado para representar las configuraciones realizadas con Windows PowerShell
Notificación de la configuración de seguimiento actual con Windows PowerShell
Uso de Windows PowerShell para configurar OrderWorkflowService de modo que usará el nuevo perfil de seguimiento personalizado
Notificación de la información de seguimiento personalizado desde el almacén de seguimiento mediante el uso de Windows PowerShell
Creación de un nuevo perfil de seguimiento personalizado
En esta sección creará un nuevo perfil de seguimiento personalizado, que en realidad es una copia del perfil que se usa en la Lección 5: Seguimiento del flujo de trabajo con Windows PowerShell del Tutorial de Order Service. Este nuevo perfil de seguimiento tendrá un nombre con el sufijo “_PS”, de modo que pueda asociarlo con las configuraciones mediante el uso de cmdlets de AppFabric.
En Windows PowerShell, escriba el siguiente comando.
Notepad OrderService_PS.tp
Cuando el Bloc de notas le pida que cree el nuevo archivo, haga clic en Sí.
Copie y pegue los siguientes elementos XML en el Bloc 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>
Este perfil de seguimiento permite realizar un seguimiento de las variables de flujo de trabajo product y quantity en la actividad Wait for order de OrderWorkflow.xamlx.
Cierre el Bloc de notas y haga clic en Guardar cuando se le indique que guarde los cambios en OrderService_PS.tp.
Notificación de la configuración de seguimiento desde Windows PowerShell
En esta sección usará los cmdlets de AppFabric para Windows PowerShell para ver la configuración de seguimiento actual de OrderWorkflowService.
Ejecute el siguiente comando en Windows PowerShell para ver si el seguimiento está habilitado para OrderWorkflowService.
Get-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl *
Los resultados deben ser similares a los siguientes.
IsTrackingEnabled : True ProfileName : HealthMonitoring Tracking Profile IsLocal : True BehaviorName :
Ejecute el siguiente comando en Windows PowerShell para ver los perfiles de seguimiento disponibles en OrderWorkflowService.
Get-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl Name
Los resultados deben ser similares a los siguientes, que muestran los perfiles de seguimiento disponibles para OrderWorkflowService.
Name : Name : ErrorsOnly Tracking Profile Name : HealthMonitoring Tracking Profile Name : EndToEndMonitoring Tracking Profile Name : Troubleshooting Tracking Profile
Configuración del seguimiento personalizado mediante Windows PowerShell
En esta sección usará los cmdlets de AppFabric para Windows PowerShell con el fin de configurar OrderWorkflowService de modo que use el nuevo perfil de seguimiento personalizado.
Ejecute el siguiente comando para agregar OrderService_PS.tp a la lista de perfiles de seguimiento disponibles para OrderWorkflowService.
Import-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" -FilePath $(Get-Item ".\OrderService_PS.tp").FullName | fl *
Tenga en cuenta que OrderService_PS.tp debe encontrarse en el directorio actual de Windows PowerShell para que este comando funcione correctamente.
Los resultados de agregar el perfil de seguimiento deben ser similares a los que se indican a continuación.
Name : CustomOrderServiceProfile - Windows PowerShell Config SiteName : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx IsLocal : True
Ejecute el siguiente comando en Windows PowerShell para ver la nueva lista de perfiles de seguimiento disponibles para OrderWorkflowService.
Get-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl Name
Los resultados deben ser similares a los siguientes que se indican a continuación, en los que se incluye el perfil denominado “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 OrderWorkflowService de modo que use el nuevo perfil denominado “CustomOrderServiceProfile - Windows PowerShell Config”, ejecute el siguiente comando en Windows PowerShell.
Set-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" -ProfileName "CustomOrderServiceProfile - Windows PowerShell Config" | fl *
Los resultados deben ser similares a los que se indican a continuación.
IsTrackingEnabled : True ProfileName : CustomOrderServiceProfile - Windows PowerShell Config IsLocal : True BehaviorName :
Ejecute el siguiente comando en Windows PowerShell para ver la nueva configuración de seguimiento en OrderWorkflowService.
Get-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl *
La configuración de seguimiento debe notificarse tal como se indica a continuación.
IsTrackingEnabled : True ProfileName : CustomOrderServiceProfile - Windows PowerShell Config IsLocal : True BehaviorName :
Uso de Windows PowerShell para notificar los datos de seguimiento personalizados
En esta sección usará una función de script para notificar los eventos de flujo de trabajo de las variables de flujo de trabajo supervisadas que configuró en la sección anterior. Para notificar la nueva información de seguimiento, debe ejecutar una nueva instancia de flujo de trabajo y generar los datos de seguimiento con la nueva configuración de seguimiento.
Adición de una nueva función de script para notificar información de seguimiento
Realice los pasos siguientes para agregar una nueva función de script a Utility.ps1 y notificar la información de seguimiento personalizada.
En Windows PowerShell, escriba el siguiente comando.
Notepad .\Utility.ps1
Copie y pegue el siguiente código de script en la parte inferior de Utility.ps1 en el Bloc de notas.
#============================================================================================# #=== ===# #=== 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 }
Esta nueva función GetTrackedWFVariableEvents es una pequeña modificación de la función GetWFEvents. Agrega un objeto INNER JOIN adicional con la vista WfEventProperties para notificar nombres de variables supervisadas y sus valores. También filtra la consulta SQL según el nombre del flujo de trabajo y de la variable supervisada en lugar de hacerlo según el objeto InstanceId. Esto permite identificar la instancia de flujo de trabajo según el valor Cantidad que defina al realizar un pedido. Para ser realista, un identificador de pedido debe estar expuesto para realizar el seguimiento.
Cierre el Bloc de notas y haga clic en Guardar para guardar los cambios realizados en Utility.ps1.
Escriba el siguiente comando en Windows PowerShell para importar los nuevos cambios en Utility.ps1 en la sesión actual de Windows PowerShell.
Import-Module .\Utility.ps1
Generación y notificación de los nuevos datos de seguimiento
Ejecute OrderClient.exe. Este archivo debería haberse instalado en el directorio C:\DublinTutorial\OrderClient, tal como se documenta en la Lección 1: Introducción a los cmdlets de AppFabric para Windows PowerShell para el Tutorial de Order Service.
Escriba 88 como valor para Cantidad.
En Formulario de pedido de Contoso.com, haga clic en Enviar. Antes de continuar, compruebe que la sección de estado que se encuentra en la parte inferior del formulario indica El pedido se ha recibido. Una vez que el formulario muestra esta información, significa que se ejecuta una nueva instancia del flujo de trabajo del pedido en la que se simula el procesamiento de un pedido.
Espere unos 30 segundos para dar tiempo al registro de la información de seguimiento.
En la ventana de Windows PowerShell, escriba el siguiente comando para notificar los eventos de seguimiento.
GetTrackedWFVariableEvents "Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow" quantity OrderService_PS
Los resultados deben ser similares al siguiente informe. Observe los objetos TrackedVariableName y TrackedVariableValue para los que se realizó un seguimiento de la instancia de flujo de trabajo.
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
¿Qué acabo de hacer?
En esta sección creó un nuevo perfil de seguimiento y usó los cmdlets de AppFabric para Windows PowerShell con el fin de configurar OrderWorkflowService de modo que use el nuevo perfil. A continuación, generó la información de seguimiento al crear una nueva instancia del flujo de trabajo y notificó los datos de seguimiento mediante el uso de una función de script de Windows PowerShell.
Vea también
Conceptos
Lección 1: Introducción a los cmdlets de AppFabric para Windows PowerShell
Lección 2: Implementación de la aplicación OrderService con Windows PowerShell
Lección 3: Configuración de Order Service con Windows PowerShell
Lección 4: Seguimiento de Order Service con Windows PowerShell
Lección 5: Seguimiento del flujo de trabajo con Windows PowerShell
2012-03-05