Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell

Время на выполнение:25 минут

Цель: научиться настраивать профиль отслеживания для наблюдения за переменными, заданными в рабочем процессе с использованием Windows PowerShell.

Назначение: назначение данного урока заключается в том, чтобы показать вам, как использовать командлеты Microsoft AppFabric 1.1 для Windows Server для настройки профиля отслеживания для службы заказов. После этого выполняется отправка отчета настраиваемых сведений отслеживания из хранилища данных наблюдения с помощью функции сценариев.

Необходимые компоненты

Перед началом урока обратите внимание на следующие требования:

Процедура

В данном уроке выполняются следующие действия:

  1. Создание нового настраиваемого профиля отслеживания для представления конфигураций, созданных с использованием Windows PowerShell.

  2. Создание отчета о текущей конфигурации отслеживания с использованием Windows PowerShell.

  3. Использование Windows PowerShell для настройки OrderWorkflowService на использование нового настраиваемого профиля отслеживания.

  4. Отправка отчета настраиваемых сведений отслеживания из хранилища данных наблюдения с использованием Windows PowerShell.

Создание нового настраиваемого профиля отслеживания

В данном разделе создается новый настраиваемый профиль отслеживания, который в действительности является копией профиля, использованного в разделе Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell учебника по Order Service. Этот настраиваемый профиль отслеживания имеет имя с суффиксом «_PS», чтобы его можно было сопоставить с конфигурациями с помощью командлетов AppFabric.

  1. Введите следующую команду в Windows PowerShell.

    Notepad OrderService_PS.tp
    

    Нажмите кнопку Да при отображении запроса на создание нового файла в Блокноте.

  2. Скопируйте и вставьте следующие элементы 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.

  3. Закройте Блокнот, а при отображении запроса нажмите кнопку Сохранить для сохранения изменений в файле OrderService_PS.tp.

Создание отчета о конфигурации отслеживания из Windows PowerShell

В данном разделе с помощью командлетов AppFabric для Windows PowerShell выполняется просмотр текущей конфигурации отслеживания для OrderWorkflowService.

  1. Выполните следующую команду в Windows PowerShell, чтобы узнать включено ли отслеживание для OrderWorkflowService.

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

    Результаты должны иметь приблизительно следующий вид.

    IsTrackingEnabled : True
    ProfileName       : HealthMonitoring Tracking Profile
    IsLocal           : True
    BehaviorName      :
    
  2. Выполните следующую команду в 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 для использования нового настраиваемого профиля отслеживания.

  1. Выполните следующую команду для добавления файла 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
    
  2. Выполните следующую команду в 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
    
  3. Чтобы настроить 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      :
    
  4. Выполните следующую команду в 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 для создания отчета о настраиваемых сведениях отслеживания.

  1. Введите следующую команду в Windows PowerShell.

    Notepad .\Utility.ps1
    
  2. Скопируйте и вставьте следующий код сценария в конце файла 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, указываемого при размещении заказа. В действительности для отслеживания должен быть предоставлен идентификатор заказа.

  3. Закройте Блокнот и нажмите кнопку Сохранить для сохранения изменений в файле Utility.ps1.

  4. Введите в Windows PowerShell следующую команду для импорта новых изменений в файл Utility.ps1 для текущего сеанса Windows PowerShell.

    Import-Module .\Utility.ps1
    

Создание новых данных отслеживания и отчетов о них

  1. Запустите OrderClient.exe. Этот файл должен быть развернут в каталоге «C:\DublinTutorial\OrderClient» в соответствии с инструкциями, приведенными в разделе Урок 1. Начало работы с командлетами AppFabric для Windows PowerShell учебника по Order Service.

  2. Введите 88 для значения Quantity (Количество).

  3. Нажмите кнопку Submit (Отправить) на форме заказа Order Form сайта Contoso.com. Убедитесь, что в разделе состояния, расположенном в нижней части формы, отображается строка Your order has been received (Ваш заказ получен), затем продолжите работу. После отображения этого сообщения на форме запускается новый экземпляр рабочего процесса заказов, что имитирует процедуру заказа.

  4. Подождите около 30 секунд для выполнения записи сведений отслеживания.

  5. Введите следующую команду в окне 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