Lezione 5: rilevamento del flusso di lavoro con Windows PowerShell

Tempo di completamento: 25 minuti

Obiettivo: Apprendere come configurare un profilo di rilevamento per monitorare le variabili definite in un flusso di lavoro con Windows PowerShell.

Scopo: Lo scopo di questa lezione è spiegare come utilizzare i cmdlet di Microsoft AppFabric 1.1 per Windows Server per configurare un profilo di rilevamento personalizzato per OrderService. È quindi possibile creare rapporti per le informazioni di rilevamento personalizzate tratte dall'archivio di monitoraggio utilizzando una funzione di script.

Prerequisiti

Prima di procedere, verificare che siano soddisfatti i requisiti seguenti:

Procedura

Questa lezione prevede il completamento dei passaggi seguenti:

  1. Creare un nuovo profilo di rilevamento personalizzato per rappresentare le configurazioni eseguite con Windows PowerShell.

  2. Creare rapporti sulla configurazione di rilevamento corrente con Windows PowerShell.

  3. Configurare OrderWorkflowService con Windows PowerShell in modo che utilizzi il nuovo profilo di rilevamento personalizzato.

  4. Creare rapporti sulle informazioni di rilevamento personalizzate tratte dall'archivio di monitoraggio utilizzando Windows PowerShell.

Creazione di un nuovo profilo di rilevamento personalizzato

In questa sezione verrà creato un nuovo profilo di rilevamento personalizzato che rappresenta in effetti una copia del profilo utilizzato nella Lezione 5: rilevamento del flusso di lavoro con Windows PowerShell dell'Esercitazione OrderService. Il nome di questo nuovo profilo di rilevamento è seguito dal suffisso "_PS", in modo che sia possibile associarlo al profilo con le configurazioni dell'utente utilizzando i cmdlet di AppFabric.

  1. In Windows PowerShell immettere il comando seguente.

    Notepad OrderService_PS.tp
    

    Fare clic su quando Blocco note richiede di creare il nuovo file.

  2. Copiare e incollare in Blocco note gli elementi XML seguenti.

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

    Questo profilo di rilevamento consente di monitorare le variabili product e quantity del flusso di lavoro nell'attività Wait for order in OrderWorkflow.xamlx.

  3. Quando viene richiesto di salvare le modifiche apportate a OrderService_PS.tp, chiudere Blocco note e fare clic su Salva.

Creazione di rapporti sulla configurazione di rilevamento da Windows PowerShell

In questa sezione verranno utilizzati i cmdlet di AppFabric per Windows PowerShell per visualizzare la configurazione di rilevamento corrente per OrderWorkflowService.

  1. Eseguire il comando seguente in Windows PowerShell per verificare se per OrderWorkflowService è attualmente abilitato il rilevamento.

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

    I risultati devono essere simili ai seguenti.

    IsTrackingEnabled : True
    ProfileName       : HealthMonitoring Tracking Profile
    IsLocal           : True
    BehaviorName      :
    
  2. Eseguire il comando seguente in Windows PowerShell per visualizzare i profili di rilevamento disponibili per OrderWorkflowService.

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

    I risultati devono essere simili all'output seguente, che riporta i profili di rilevamento attualmente disponibili per OrderWorkflowService.

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

Configurazione del rilevamento personalizzato utilizzando Windows PowerShell

In questa sezione verranno utilizzati i cmdlet di AppFabric per Windows PowerShell per configurare OrderWorkflowService in modo che utilizzi il nuovo profilo di rilevamento personalizzato.

  1. Eseguire il comando seguente per aggiungere OrderService_PS.tp all'elenco dei profili di rilevamento disponibili per OrderWorkflowService.

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

    Si noti che per garantire la corretta esecuzione del comando, è necessario che OrderService_PS.tp si trovi nella directory corrente di Windows PowerShell.

    I risultati dell'aggiunta del profilo di rilevamento devono essere simili ai seguenti.

    Name        : CustomOrderServiceProfile - Windows PowerShell Config
    SiteName    : OrderService_PS
    VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx
    IsLocal     : True
    
  2. Eseguire il comando seguente in Windows PowerShell per visualizzare il nuovo elenco di profili di rilevamento disponibili per OrderWorkflowService.

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

    I risultati devono essere simili ai seguenti, che includono il profilo denominato "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. Per configurare OrderWorkflowService in modo che utilizzi il nuovo profilo denominato "CustomOrderServiceProfile - Windows PowerShell Config", eseguire il comando seguente in Windows PowerShell.

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

    I risultati devono essere simili ai seguenti.

    IsTrackingEnabled : True
    ProfileName       : CustomOrderServiceProfile - Windows PowerShell Config
    IsLocal           : True
    BehaviorName      :
    
  4. Eseguire il comando seguente in Windows PowerShell per visualizzare la nuova configurazione di rilevamento per OrderWorkflowService.

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

    La configurazione di rilevamento deve essere segnalata come segue.

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

Utilizzo di Windows PowerShell per creare rapporti sui dati di rilevamento personalizzati

In questa sezione si utilizza una funzione di script per creare un rapporto sugli eventi flusso di lavoro per le variabili del flusso di lavoro rilevate e configurate nella sezione precedente. Per creare un rapporto sulle nuove informazioni di rilevamento, è necessario eseguire una nuova istanza del flusso di lavoro e generare i dati di rilevamento con la nuova configurazione di rilevamento.

Aggiunta di una nuova funzione di script per creare rapporti sulle informazioni di rilevamento

Effettuare i passaggi seguenti per aggiungere a Utility.ps1 una nuova funzione di script per la creazione di rapporti sulle informazioni di rilevamento personalizzate.

  1. In Windows PowerShell immettere il comando seguente.

    Notepad .\Utility.ps1
    
  2. Copiare e incollare il codice di script riportato di seguito alla fine di Utility.ps1 in Blocco note.

    #============================================================================================#
    #===                                                                                      ===#
    #=== 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
    }
    

    Questa nuova funzione GetTrackedWFVariableEvents è una versione solo lievemente modificata della funzione GetWFEvents. Aggiunge un ulteriore INNER JOIN con la visualizzazione WfEventProperties per la creazione di rapporti sui nomi delle variabili rilevati e sui relativi valori. Filtra inoltre le query SQL in base non a InstanceId, ma al nome del flusso di lavoro e al nome della variabile rilevato. Questo consente di identificare l'istanza del flusso di lavoro in base al valore Quantity definito al momento dell'inoltro dell'ordine. Realisticamente, per il rilevamento è consigliabile esporre un ID ordine.

  3. Chiudere Blocco note e fare clic su Salva per salvare le modifiche apportate a Utility.ps1.

  4. Immettere il comando seguente in Windows PowerShell per importare le nuove modifiche apportate a Utility.ps1 per la sessione di Windows PowerShell corrente.

    Import-Module .\Utility.ps1
    

Generazione e creazione di rapporti sui nuovi dati di rilevamento

  1. Eseguire OrderClient.exe. Questo file deve essere stato distribuito nella directory C:\DublinTutorial\OrderClient, come indicato nella Lezione 1: introduzione ai cmdlet di AppFabric per Windows PowerShell dell'Esercitazione OrderService.

  2. Immettere 88 per il valore Quantity.

  3. Fare clic su Invia in Modulo ordine Contoso.com. Prima di continuare, verificare che la sezione dello stato nella parte inferiore del modulo riporti Ordine ricevuto. Quando nel modulo risulta presente questa conferma, viene eseguita una nuova istanza del flusso di lavoro dell'ordine per simulare l'elaborazione di un ordine.

  4. Attendere circa 30 secondi per consentire la registrazione delle informazioni di rilevamento.

  5. Nella finestra di Windows PowerShell immettere il comando seguente per creare un rapporto sugli eventi rilevamento.

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

    I risultati devono essere simili al rapporto seguente. Si noti la presenza di TrackedVariableName e TrackedVariableValue rilevati per l'istanza del flusso di lavoro.

    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
    

In questa lezione è stato creato un nuovo profilo di rilevamento e sono stati utilizzati i cmdlet di AppFabric per Windows PowerShell per configurare OrderWorkflowService in modo che utilizzi il nuovo profilo. Sono state quindi generate le informazioni di rilevamento mediante la creazione di una nuova istanza del flusso di lavoro ed è stato creato un rapporto sui dati di rilevamento utilizzando una funzione di script Windows PowerShell personalizzata.

Vedere anche

Concetti

Lezione 1: introduzione ai cmdlet di AppFabric per Windows PowerShell
Lezione 2: distribuzione dell'applicazione del servizio OrderService con Windows PowerShell
Lezione 3: configurazione del servizio OrderService con Windows PowerShell
Lezione 4: monitoraggio del servizio OrderService con Windows PowerShell
Lezione 5: rilevamento del flusso di lavoro con Windows PowerShell

  2012-03-05