Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell
Время на выполнение:25 минут
Цель: научиться настраивать профиль отслеживания для наблюдения за переменными, заданными в рабочем процессе с использованием Windows PowerShell.
Назначение: назначение данного урока заключается в том, чтобы показать вам, как использовать командлеты Microsoft AppFabric 1.1 для Windows Server для настройки профиля отслеживания для службы заказов. После этого выполняется отправка отчета настраиваемых сведений отслеживания из хранилища данных наблюдения с помощью функции сценариев.
Необходимые компоненты
Перед началом урока обратите внимание на следующие требования:
Необходимо выполнить развертывание приложения службы заказов в соответствии с разделом Урок 2. Развертывание приложения Order Service с помощью Windows PowerShell.
Необходимо выполнить Урок 3. Настройка службы заказов с помощью Windows PowerShell.
Для понимания всех разделов данного урока необходимо обладать достаточными знаниями о SQL Server.
Процедура
В данном уроке выполняются следующие действия:
Создание нового настраиваемого профиля отслеживания для представления конфигураций, созданных с использованием Windows PowerShell.
Создание отчета о текущей конфигурации отслеживания с использованием Windows PowerShell.
Использование Windows PowerShell для настройки OrderWorkflowService на использование нового настраиваемого профиля отслеживания.
Отправка отчета настраиваемых сведений отслеживания из хранилища данных наблюдения с использованием Windows PowerShell.
Создание нового настраиваемого профиля отслеживания
В данном разделе создается новый настраиваемый профиль отслеживания, который в действительности является копией профиля, использованного в разделе Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell учебника по Order Service. Этот настраиваемый профиль отслеживания имеет имя с суффиксом «_PS», чтобы его можно было сопоставить с конфигурациями с помощью командлетов AppFabric.
Введите следующую команду в Windows PowerShell.
Notepad OrderService_PS.tp
Нажмите кнопку Да при отображении запроса на создание нового файла в Блокноте.
Скопируйте и вставьте следующие элементы XML в Блокнот.
<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>
Данный профиль отслеживания обеспечивает отслеживание переменных рабочего процесса product и quantity в действии Wait for order (Ожидание заказа) OrderWorkflow.xamlx.
Закройте Блокнот, а при отображении запроса нажмите кнопку Сохранить для сохранения изменений в файле OrderService_PS.tp.
Создание отчета о конфигурации отслеживания из Windows PowerShell
В данном разделе с помощью командлетов AppFabric для Windows PowerShell выполняется просмотр текущей конфигурации отслеживания для OrderWorkflowService.
Выполните следующую команду в Windows PowerShell, чтобы узнать включено ли отслеживание для OrderWorkflowService.
Get-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl *
Результаты должны иметь приблизительно следующий вид.
IsTrackingEnabled : True ProfileName : HealthMonitoring Tracking Profile IsLocal : True BehaviorName :
Выполните следующую команду в Windows PowerShell, чтобы просмотреть доступные для OrderWorkflowService профили отслеживания.
Get-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl Name
Результаты должны быть похожи на следующие выходные данные, где показаны профили отслеживания, доступные для OrderWorkflowService в данный момент времени.
Name : Name : ErrorsOnly Tracking Profile Name : HealthMonitoring Tracking Profile Name : EndToEndMonitoring Tracking Profile Name : Troubleshooting Tracking Profile
Конфигурирование настраиваемого отслеживания с использованием Windows PowerShell
В данном разделе с помощью командлетов AppFabric для Windows PowerShell выполняется настройка OrderWorkflowService для использования нового настраиваемого профиля отслеживания.
Выполните следующую команду для добавления файла OrderService_PS.tp в список доступных для OrderWorkflowService профилей отслеживания.
Import-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" -FilePath $(Get-Item ".\OrderService_PS.tp").FullName | fl *
Обратите внимание на то, что для успешного выполнения этой команды файл OrderService_PS.tp должен находиться в текущем каталоге Windows PowerShell.
Результаты добавления профиля отслеживания должны иметь приблизительно следующий вид.
Name : CustomOrderServiceProfile - Windows PowerShell Config SiteName : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx IsLocal : True
Выполните следующую команду в Windows PowerShell, чтобы просмотреть новый список доступных для OrderWorkflowService профилей отслеживания.
Get-ASAppServiceTrackingProfile -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl Name
Результаты должны иметь приблизительно следующий вид, включая профиль с именем «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
Чтобы настроить OrderWorkflowService с использованием нового профиля с именем «CustomOrderServiceProfile - Windows PowerShell Config», выполните в Windows PowerShell следующую команду.
Set-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" -ProfileName "CustomOrderServiceProfile - Windows PowerShell Config" | fl *
Результаты должны иметь приблизительно следующий вид.
IsTrackingEnabled : True ProfileName : CustomOrderServiceProfile - Windows PowerShell Config IsLocal : True BehaviorName :
Выполните следующую команду в Windows PowerShell, чтобы просмотреть новые профили отслеживания для OrderWorkflowService.
Get-ASAppServiceTracking -SiteName OrderService_PS -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl *
Отчет о конфигурации отслеживания должен иметь следующий вид.
IsTrackingEnabled : True ProfileName : CustomOrderServiceProfile - Windows PowerShell Config IsLocal : True BehaviorName :
Использование Windows PowerShell для создания отчета о настраиваемых данных отслеживания
В данном разделе используется функция сценариев для создания отчета о событиях рабочего процесса для отслеживаемых переменных рабочего процесса, заданных в предыдущем разделе. Для создания отчета о новых сведениях отслеживания необходимо запустить новый экземпляр рабочего процесса и создать данные отслеживания с использованием новой конфигурации отслеживания.
Добавление новой функции сценариев для создания отчета о сведениях отслеживания
Выполните следующие действия, чтобы добавить новую функцию сценариев в файл Utility.ps1 для создания отчета о настраиваемых сведениях отслеживания.
Введите следующую команду в Windows PowerShell.
Notepad .\Utility.ps1
Скопируйте и вставьте следующий код сценария в конце файла Utility.ps1 в Блокноте.
#============================================================================================# #=== ===# #=== 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 }
Эта новая функция GetTrackedWFVariableEvents лишь немного отличается от функции GetWFEvents. Она добавляет один дополнительный INNER JOIN с представлением WfEventProperties для создания отчета о именах и значениях отслеживаемых переменных. Кроме того, она выполняет фильтрацию запроса SQL по имени рабочего процесса и имени отслеживаемой переменной, а не по InstanceId. Это позволяет идентифицировать экземпляр рабочего процесса по значению Quantity, указываемого при размещении заказа. В действительности для отслеживания должен быть предоставлен идентификатор заказа.
Закройте Блокнот и нажмите кнопку Сохранить для сохранения изменений в файле Utility.ps1.
Введите в Windows PowerShell следующую команду для импорта новых изменений в файл Utility.ps1 для текущего сеанса Windows PowerShell.
Import-Module .\Utility.ps1
Создание новых данных отслеживания и отчетов о них
Запустите OrderClient.exe. Этот файл должен быть развернут в каталоге «C:\DublinTutorial\OrderClient» в соответствии с инструкциями, приведенными в разделе Урок 1. Начало работы с командлетами AppFabric для Windows PowerShell учебника по Order Service.
Введите 88 для значения Quantity (Количество).
Нажмите кнопку Submit (Отправить) на форме заказа Order Form сайта Contoso.com. Убедитесь, что в разделе состояния, расположенном в нижней части формы, отображается строка Your order has been received (Ваш заказ получен), затем продолжите работу. После отображения этого сообщения на форме запускается новый экземпляр рабочего процесса заказов, что имитирует процедуру заказа.
Подождите около 30 секунд для выполнения записи сведений отслеживания.
Введите следующую команду в окне Windows PowerShell для создания отчета о событиях отслеживания.
GetTrackedWFVariableEvents "Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow" quantity OrderService_PS
Результаты должны быть похожи на следующий отчет. Обратите внимание на TrackedVariableName и TrackedVariableValue, которые отслеживались для экземпляра рабочего процесса.
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
Обзор результатов
В данном разделе вы создали новый профиль отслеживания и использовали командлеты AppFabric для Windows PowerShell, чтобы настроить OrderWorkflowService на использование нового профиля. После этого были созданы сведения отслеживания с помощью создания нового экземпляра рабочего процесса и отчета о данных отслеживания с помощью настраиваемой функции сценариев Windows PowerShell.
См. также
Основные понятия
Урок 1. Начало работы с командлетами AppFabric для Windows PowerShell
Урок 2. Развертывание приложения Order Service с помощью Windows PowerShell
Урок 3. Настройка службы заказов с помощью Windows PowerShell
Урок 4. Наблюдение за службой Order Service с помощью Windows PowerShell
Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell
2012-03-05