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:
Sie müssen die Auftragsdienstanwendung, wie in Lektion 2: Bereitstellen des Auftragsdiensts mit Windows PowerShell dokumentiert, bereitgestellt haben.
Sie müssen Lektion 3: Konfigurieren des Auftragsdiensts mit Windows PowerShell abgeschlossen haben.
Sie sollten über Kenntnisse in SQL Server verfügen, um alle Abschnitte dieser Übungseinheit zu verstehen.
Verfahren
Im Rahmen dieser Lektion führen Sie die folgenden Schritte aus:
Erstellen eines neuen benutzerdefinierten Nachverfolgungsprofils zum Darstellen der mit Windows PowerShell vorgenommenen Konfigurationen.
Berichten der aktuellen Nachverfolgungskonfiguration mit Windows PowerShell.
Verwenden von Windows PowerShell zum Konfigurieren des OrderWorkflowService zum Verwenden des neuen benutzerdefinierten Nachverfolgungsprofils.
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.
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.
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.
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.
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 :
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.
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
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
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 :
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.
Geben Sie in Windows PowerShell den folgenden Befehl ein:
Notepad .\Utility.ps1
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.
Schließen Sie den Editor, und klicken Sie auf Speichern, um die Änderungen an Utility.ps1 zu speichern.
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
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.
Geben Sie als Wert für Quantity 88 ein.
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.
Warten Sie ca. 30 Sekunden, um Zeit für das Aufzeichnen der Nachverfolgungsinformationen einzuräumen.
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