Freigeben über


Lektion 5: Nachverfolgen des Workflows mit Windows PowerShell

Veranschlagte Zeit: 25 Minuten

Lernziel: Erlernen der Konfiguration eines Nachverfolgungsprofils zum Überwachen der in einem Workflow definierten Variablen mithilfe von Windows PowerShell.

Zweck: Der Zweck dieser Übungseinheit besteht darin, die Verwendung der Microsoft AppFabric 1.1 für Windows Server-Cmdlets zum Konfigurieren eines benutzerdefinierten Nachverfolgungsprofils für den Order Service zu veranschaulichen. Anschließend werden die benutzerdefinierten Nachverfolgungsinformationen aus dem Überwachungsspeicher mithilfe einer Skriptfunktion berichtet.

Voraussetzungen

Bevor Sie mit dieser Lektion beginnen, müssen die folgenden Anforderungen erfüllt sein:

Verfahren

Im Rahmen dieser Lektion führen Sie die folgenden Schritte aus:

  1. Erstellen eines neuen benutzerdefinierten Nachverfolgungsprofils zum Darstellen der mit Windows PowerShell vorgenommenen Konfigurationen.

  2. Berichten der aktuellen Nachverfolgungskonfiguration mit Windows PowerShell.

  3. Verwenden von Windows PowerShell zum Konfigurieren des OrderWorkflowService zum Verwenden des neuen benutzerdefinierten Nachverfolgungsprofils.

  4. Berichten des benutzerdefinierten Nachverfolgungsprofils aus dem Überwachungsspeicher mithilfe von Windows PowerShell.

Erstellen eines neuen benutzerdefinierten Nachverfolgungsprofils

In diesem Abschnitt erstellen Sie ein neues benutzerdefiniertes Nachverfolgungsprofil, bei dem es sich tatsächlich um eine Kopie des in Lektion 5: Nachverfolgen des Workflows mit Windows PowerShell im Order Service-Lernprogramm verwendeten handelt. Dieses neue Nachverfolgungsprofil weist einen Namen mit dem Suffix „_PS“ auf, so dass Sie in der Lage sind, das Profil Ihren Konfigurationen mithilfe der AppFabric-Cmdlets zuzuordnen.

  1. Geben Sie in Windows PowerShell den folgenden Befehl ein:

    Notepad OrderService_PS.tp
    

    Klicken Sie auf Ja, wenn Sie in Editor aufgefordert werden, die neue Datei zu erstellen.

  2. Kopieren Sie die folgenden XML-Elemente, und fügen Sie sie in Editor ein.

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

    Dieses Nachverfolgungsprofil aktiviert die Nachverfolgung der Workflowvariablen product und quantity in der Warten auf Auftrag-Aktivität in OrderWorkflow.xamlx.

  3. Schließen Sie Editor, und klicken Sie auf Speichern, wenn Sie aufgefordert werden, die Änderungen an OrderService_PS.tp zu speichern.

Berichten der Nachverfolgungskonfiguration aus Windows PowerShell

In diesem Abschnitt werden die AppFabric-Cmdlets für Windows PowerShell zum Anzeigen der aktuellen Nachverfolgungskonfiguration für den OrderWorkflowService verwendet.

  1. Führen Sie den folgenden Befehl in Windows PowerShell aus, um festzustellen, ob aktuell Nachverfolgung für den OrderWorkflowService aktiviert ist.

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

    Ihre Ergebnisse sollten den folgenden ähnlich sehen.

    IsTrackingEnabled : True
    ProfileName       : HealthMonitoring Tracking Profile
    IsLocal           : True
    BehaviorName      :
    
  2. Führen Sie den folgenden Befehl in Windows PowerShell aus, um die für OrderWorkflowService verfügbaren Nachverfolgungsprofile anzuzeigen.

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

    Ihre Ergebnisse sollten der folgenden Ausgabe ähnlich sehen, in der die aktuell für OrderWorkflowService verfügbaren Nachverfolgungsprofile angezeigt sind.

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

Konfigurieren der benutzerdefinierten Nachverfolgung mithilfe von Windows PowerShell

In diesem Abschnitt werden die AppFabric-Cmdlets für Windows PowerShell zum Konfigurieren von OrderWorkflowService zum Verwenden des neuen benutzerdefinierten Nachverfolgungsprofils verwendet.

  1. Führen Sie den folgenden Befehl aus, um OrderService_PS.tp der Liste der für OrderWorkflowService verfügbaren Nachverfolgungsprofile hinzuzufügen.

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

    Beachten Sie, dass sich OrderService_PS.tp im aktuellen Windows PowerShell-Verzeichnis befinden muss, damit der Befehl erfolgreich ausgeführt werden kann.

    Die Ergebnisse nach dem Hinzufügen des Nachverfolgungsprofils sollten ähnlich den folgenden aussehen.

    Name        : CustomOrderServiceProfile - Windows PowerShell Config
    SiteName    : OrderService_PS
    VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx
    IsLocal     : True
    
  2. Führen Sie den folgenden Befehl in Windows PowerShell aus, um die neue Liste der für OrderWorkflowService verfügbaren Nachverfolgungsprofile anzuzeigen.

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

    Ihre Ergebnisse sollten ähnlich den folgenden aussehen, einschließlich des Profils mit dem Namen „Kuß - 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. Führen Sie zum Konfigurieren von OrderWorkflowService zum Verwenden des neuen Profils mit dem Namen „CustomOrderServiceProfile - Windows PowerShell Config“ den folgenden Befehl in Windows PowerShell aus.

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

    Ihre Ergebnisse sollten den folgenden ähnlich sehen.

    IsTrackingEnabled : True
    ProfileName       : CustomOrderServiceProfile - Windows PowerShell Config
    IsLocal           : True
    BehaviorName      :
    
  4. Führen Sie den folgenden Befehl in Windows PowerShell aus, um die neue Nachverfolgungskonfiguration für OrderWorkflowService anzuzeigen.

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

    Die Nachverfolgungskonfiguration sollte in folgender Weise berichtet werden.

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

Verwenden von Windows PowerShell zum Berichten der benutzerdefinierten Nachverfolgungsdaten

In diesem Abschnitt verwenden Sie eine Skriptfunktion zum Melden von Workflowereignissen für die nachverfolgten Workflowvariablen, die im vorhergehenden Abschnitt konfiguriert wurden. Zum Berichten der neuen Nachverfolgungsinformationen müssen Sie eine neue Workflowinstanz ausführen und die Nachverfolgungsdaten mit der neuen Nachverfolgungskonfiguration generieren.

Hinzufügen einer neuen Skriptfunktion zum Melden von Nachverfolgungsinformationen

Führen Sie die folgenden Schritte aus, um Utility.ps1 eine neue Skriptfunktion zum Melden der benutzerdefinierten Nachverfolgungsinformationen hinzuzufügen.

  1. Geben Sie in Windows PowerShell den folgenden Befehl ein:

    Notepad .\Utility.ps1
    
  2. Kopieren Sie den folgenden Skriptcode, und fügen Sie ihn im Editor am Ende von Utility.ps1 ein.

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

    Diese neue GetTrackedWFVariableEvents-Funktion stellt nur eine leichte Abwandlung der GetWFEvents-Funktion dar. Sie fügt der WfEventProperties-Sicht eine zusätzliche INNER JOIN-Verknüpfung hinzu, um Namen und Werte nachverfolgter Variablen zu melden. Darüber hinaus filtert sie die SQL-Abfrage nach dem Workflownamen und dem Namen der nachverfolgten Variablen anstelle der InstanceId. Auf diese Weise kann die Workflowinstanz anhand des Quantity-Werts identifiziert werden, der beim Platzieren eines Auftrags festgelegt wird. Realistischerweise sollte für die Nachverfolgung eine Auftrags-ID verfügbar gemacht werden.

  3. Schließen Sie den Editor, und klicken Sie auf Speichern, um die Änderungen an Utility.ps1 zu speichern.

  4. Geben Sie den folgenden Befehl in Windows PowerShell ein, um die neuen Änderungen für die aktuelle Windows PowerShell-Sitzung in Utility.ps1 zu importieren.

    Import-Module .\Utility.ps1
    

Erstellen und Berichten der neuen Nachverfolgungsdaten

  1. Führen Sie OrderClient.exe aus. Diese Datei sollte im Verzeichnis C:\DublinTutorial\OrderClient bereitgestellt worden sein, wie in Lektion 1: Erste Schritte in AppFabric-Cmdlets für Windows PowerShell für das Order Service-Lernprogramm dokumentiert.

  2. Geben Sie als Wert für Quantity 88 ein.

  3. Klicken Sie im Bestellformular von Contoso.com auf Senden. Bevor Sie fortfahren, sollten Sie sich vergewissern, dass im Statusbereich am Fuß des Formulars der Hinweis Ihre Bestellung ist eingegangen angezeigt wird. Nachdem dieser Hinweis im Formular angezeigt wurde, wird eine neue Instanz des Auftragsworkflows ausgeführt, mit der die Verarbeitung einer Bestellung simuliert wird.

  4. Warten Sie ca. 30 Sekunden, um Zeit für das Aufzeichnen der Nachverfolgungsinformationen einzuräumen.

  5. Geben Sie im Windows PowerShell-Fenster den folgenden Befehl ein, um die Nachverfolgungsereignisse zu melden.

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

    Ihre Ergebnisse sollten dem folgenden Bericht ähnlich sein. Beachten Sie den TrackedVariableName und den TrackedVariableValue, die für die Workflowinstanz nachverfolgt wurden.

    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
    

Zusammenfassung

In dieser Übungseinheit wurden ein neues Nachverfolgungsprofil erstellt und die AppFabric-Cmdlets für Windows PowerShell zum Konfigurieren von OrderWorkflowService für die Verwendung des neuen Profils verwendet. Anschließend wurden die Nachverfolgungsinformationen durch Erstellen einer neuen Instanz des Workflows generiert und die Nachverfolgungsdaten mithilfe einer benutzerdefinierten Windows PowerShell-Skriptfunktion gemeldet.

Siehe auch

Konzepte

Lektion 1: Erste Schritte in AppFabric-Cmdlets für Windows PowerShell
Lektion 2: Bereitstellen des Auftragsdiensts mit Windows PowerShell
Lektion 3: Konfigurieren des Auftragsdiensts mit Windows PowerShell
Lektion 4: Überwachen des Auftragsdiensts mit Windows PowerShell
Lektion 5: Nachverfolgen des Workflows mit Windows PowerShell

  2012-03-05