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 Windows Server AppFabric para configurar un perfil de seguimiento personalizado para la aplicación Order Service. 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:

Procedimiento

En esta lección realizará los siguientes pasos:

  1. Crear un nuevo perfil de seguimiento personalizado para representar las configuraciones realizadas con Windows PowerShell.

  2. Notificar la configuración de seguimiento actual con Windows PowerShell.

  3. Usar Windows PowerShell para configurar OrderWorkflowService de modo que usará el nuevo perfil de seguimiento personalizado.

  4. Notificar 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: Reanudación de un flujo de trabajo suspendido usando AppFabric del Tutorial sobre el uso de la interfaz de Windows Server AppFabric. 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.

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

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

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

  1. 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      :
    
  2. 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.

  1. 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
    
  2. 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
    
  3. 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      :
    
  4. 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.

  1. En Windows PowerShell, escriba el siguiente comando.

    Notepad .\Utility.ps1
    
  2. 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.

  3. Cierre el Bloc de notas y haga clic en Guardar para guardar los cambios realizados en Utility.ps1.

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

  1. 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 del Tutorial sobre el uso de la interfaz de Windows Server AppFabric.

  2. Escriba 88 como valor para Cantidad.

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

  4. Espere unos 30 segundos para dar tiempo al registro de la información de seguimiento.

  5. 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 Windows Server AppFabric para Windows PowerShell
Lección 2: Implementación de la aplicación Order Service con Windows PowerShell
Lección 3: Configuración de Order Service con Windows PowerShell
Lección 4: Seguimiento de Order Services con Windows PowerShell

  2011-12-05