다음을 통해 공유


제 5과: Windows PowerShell을 사용한 워크플로 추적

완료 시간: 25분

목표: Windows PowerShell을 사용하여 워크플로에 정의된 변수를 모니터링하도록 추적 프로필을 구성하는 방법을 알아봅니다.

목적: 이 단원의 목적은 Windows Server AppFabric cmdlet을 사용하여 Order Service에 대한 사용자 지정 추적 프로필을 구성하는 방법을 보여 주는 것입니다. 그런 다음 스크립트 함수를 사용하여 모니터링 저장소의 사용자 지정 추적 정보를 보고합니다.

사전 요구 사항

이 단원을 시작하기 전에 다음 요구 사항을 참고하십시오.

절차

이 단원에서는 다음 단계를 수행합니다.

  1. Windows PowerShell을 사용하여 수행된 구성을 나타내는 새 사용자 지정 추적 프로필을 만듭니다.

  2. Windows PowerShell을 사용하여 현재 추적 구성을 보고합니다.

  3. Windows PowerShell에서 새 사용자 지정 추적 프로필을 사용하도록 OrderWorkflowService를 구성합니다.

  4. Windows PowerShell을 사용하여 모니터링 저장소의 사용자 지정 추적 정보를 보고합니다.

새 사용자 지정 추적 프로필 만들기

이 섹션에서는 실제로 Windows Server AppFabric 인터페이스 사용 자습서제 5과: AppFabric을 사용하여 일시 중단된 워크플로 다시 시작에서 사용된 프로필의 복사본인 새 사용자 지정 추적 프로필을 만듭니다. 새 추적 프로필의 이름에는 "_PS" 접미사가 추가되므로 AppFabric cmdlet을 사용하여 해당 프로필을 구성과 연결할 수 있습니다.

  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>
    

    이 추적 프로필을 사용하면 OrderWorkflow.xamlx의 주문 대기 작업에서 productquantity 워크플로 변수를 추적할 수 있습니다.

  3. 메모장을 닫고 OrderService_PS.tp에 대한 변경 내용을 저장하라는 메시지가 표시되면 저장을 클릭합니다.

Windows PowerShell에서 추적 구성 보고

이 섹션에서는 Windows PowerShell용 AppFabric cmdlet을 사용하여 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을 사용하여 사용자 지정 추적 구성

이 섹션에서는 Windows PowerShell용 AppFabric cmdlet을 사용하여 새 사용자 지정 추적 프로필을 사용하도록 OrderWorkflowService를 구성합니다.

  1. 다음 명령을 실행하여 OrderWorkflowService에 사용 가능한 추적 프로필 목록에 OrderService_PS.tp를 추가합니다.

    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. **"CustomOrderServiceProfile - Windows PowerShell Config"**라는 새 프로필을 사용하도록 OrderWorkflowService를 구성하려면 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 함수를 약간 수정한 것입니다. 이 함수에서는 추적된 변수 이름과 해당 값을 보고하기 위해 WfEventProperties 보기가 있는 INNER JOIN을 하나 더 추가합니다. 또한 InstanceId 대신 워크플로 이름과 추적된 변수 이름을 기준으로 SQL 쿼리를 필터링합니다. 이렇게 하면 주문할 때 설정한 수량 값으로 워크플로 인스턴스를 식별할 수 있습니다. 실제로 추적하려면 주문 ID가 노출되어야 합니다.

  3. 메모장을 닫고 저장을 클릭하여 Utility.ps1에 대한 변경 내용을 저장합니다.

  4. Windows PowerShell에서 다음 명령을 입력하여 현재 Windows PowerShell 세션에 대해 Utility.ps1의 새 변경 내용을 가져옵니다.

    Import-Module .\Utility.ps1
    

새 추적 데이터 생성 및 보고

  1. OrderClient.exe를 실행합니다. 이 파일은 Windows Server AppFabric 인터페이스 사용 자습서제 1과: 시작에 문서화된 대로 C:\DublinTutorial\OrderClient 디렉터리에 배포되어 있어야 합니다.

  2. 수량 값으로 88을 입력합니다.

  3. Contoso.com Order Form에서 Submit을 클릭합니다. 계속하기 전에 양식 아래쪽의 상태 섹션에 Your order has been received라고 표시되는지 확인합니다. 양식에 이 메시지가 표시된 후 주문 워크플로의 새 인스턴스가 실행되어 주문 처리를 시뮬레이션합니다.

  4. 약 30초 동안 기다려 추적 정보를 기록할 시간을 제공합니다.

  5. Windows PowerShell 창에서 다음 명령을 입력하여 추적 이벤트를 보고합니다.

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

    결과는 다음 보고서와 비슷하게 표시됩니다. 워크플로 인스턴스에 대해 추적된 TrackedVariableNameTrackedVariableValue를 확인합니다.

    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
    

학습한 내용

이 단원에서는 새 추적 프로필을 만들고 Windows PowerShell용 AppFabric cmdlet을 통해 새 프로필을 사용하도록 OrderWorkflowService를 구성했습니다. 그런 다음 새 워크플로 인스턴스를 만들어 추적 정보를 생성하고 사용자 지정 Windows PowerShell 스크립트 함수를 사용하여 추적 데이터를 보고했습니다.

참고 항목

개념

제 1과: Windows PowerShell용 Windows Server AppFabric Cmdlet 시작
제 2과: Windows PowerShell을 사용한 주문 서비스 응용 프로그램 배포
제 3과: Windows PowerShell을 사용한 주문 서비스 구성
제 4과: Windows PowerShell을 사용한 주문 서비스 모니터링

  2011-12-05