Controlando perfisTracking Profiles

Controlando os perfis contêm consultas de rastreamento que permitem um participante de rastreamento assinar eventos de fluxo de trabalho que são emitidas quando o estado de uma instância de fluxo de trabalho se altera em runtime.Tracking profiles contain tracking queries that permit a tracking participant to subscribe to workflow events that are emitted when the state of a workflow instance changes at runtime.

Controlando perfisTracking Profiles

Controlando os perfis são usados para especificar que as informações de rastreamento é emitida para uma instância de fluxo de trabalho.Tracking profiles are used to specify which tracking information is emitted for a workflow instance. Se nenhum perfil for especificado, então todos os eventos de rastreamento são emitidas.If no profile is specified, then all tracking events are emitted. Se um perfil for especificado, então os eventos de rastreamento especificados no perfil serão emitidos.If a profile is specified, then the tracking events specified in the profile will be emitted. Dependendo dos requisitos de monitoramento, você pode escrever um perfil que é muito geral, que assina um pequeno conjunto de alterações de estado de alto nível em um fluxo de trabalho.Depending on your monitoring requirements, you may write a profile that is very general, which subscribes to a small set of high-level state changes on a workflow. Inversamente, você pode criar um perfil muito detalhado cujos eventos resultantes são muito ricos reconstruir posteriormente um fluxo detalhado de execução.Conversely, you may create a very detailed profile whose resulting events are rich enough to reconstruct a detailed execution flow later.

Os perfis de rastreamento se manifestam como elementos XML dentro de um arquivo de configuração .NET Framework padrão ou especificados no código.Tracking profiles manifest themselves as XML elements within a standard .NET Framework configuration file or specified in code. O exemplo a seguir é de .NET Framework 4.6.1.NET Framework 4.6.1 que controla o perfil em um arquivo de configuração que permite que um participante de rastreamento assine os eventos de fluxo de trabalho Started e de Completed .The following example is of a .NET Framework 4.6.1.NET Framework 4.6.1 tracking profile in a configuration file that allows a tracking participant to subscribe to the Started and Completed workflow events.

<system.serviceModel>
    ...
    <tracking>
     <profiles>
      <trackingProfile name="Sample Tracking Profile">
        <workflow activityDefinitionId="*">
          <workflowInstanceQueries>
            <workflowInstanceQuery>
              <states>
                <state name="Started"/>
                <state name="Completed"/>
              </states>
            </workflowInstanceQuery>
          </workflowInstanceQueries>
        </workflow>
      </trackingProfile>
    </profiles>
  </tracking>
    ...
</system.serviceModel>

O exemplo a seguir mostra o perfil equivalente de rastreamento criado usando código.The following example shows the equivalent tracking profile created using code.

TrackingProfile profile = new TrackingProfile()
{
    Name = "CustomTrackingProfile",
    Queries =
    {
        new WorkflowInstanceQuery()
        {
            // Limit workflow instance tracking records for started and
            // completed workflow states.
            States = { WorkflowInstanceStates.Started, WorkflowInstanceStates.Completed },
        }
    }
};

Controlando registros são filtrados com o modo de visibilidade em um perfil de rastreamento usando o atributo ImplementationVisibility .Tracking records are filtered through the visibility mode within a tracking profile by using the ImplementationVisibility attribute. Uma atividade composto é uma atividade de nível superior que contém outras atividades que formam a sua implementação.A composite activity is a top-level activity that contains other activities that form its implementation. O modo de visibilidade especifica os registros de rastreamento de atividades emissores compostas em uma atividade de fluxo de trabalho, para especificar se as atividades que formam a implementação estão sendo controladas.The visibility mode specifies the tracking records emitted from composite activities within a workflow activity, to specify if activities that form the implementation are being tracked. O modo de visibilidade se aplica a nível de perfil de rastreamento.The visibility mode applies at the tracking profile level. A filtragem de registros de controle para atividades individuais em um fluxo de trabalho é controlada por consultas no perfil de rastreamento.The filtering of tracking records for individual activities within a workflow is controlled by the queries within the tracking profile. Para obter mais informações, consulte a seção tipos de consulta de perfil de rastreamento neste documento.For more information, see the Tracking Profile Query Types section in this document.

Os dois modos de visibilidade especificado pelo atributo de implementationVisibility no perfil de rastreamento são RootScope e All.The two visibility modes specified by the implementationVisibility attribute in the tracking profile are RootScope and All. Usar o modo de RootScope suprime os registros de controle para as atividades que formam a implementação de uma atividade em casos onde uma atividade composta não é a raiz de um fluxo de trabalho.Using the RootScope mode suppresses the tracking records for activities that form the implementation of an activity in the case where a composite activity is not the root of a workflow. Isso significa que, quando uma atividade que é implementada usando outras atividades é adicionada a um fluxo de trabalho, e implementationVisibility definido como RootScope, somente a última atividade de nível superior dentro da atividade composto é rastreada.This implies that, when an activity that is implemented using other activities is added to a workflow, and the implementationVisibility set to RootScope, only the top-level activity within that composite activity is tracked. Se uma atividade é a raiz de fluxo de trabalho, então a implementação da atividade é o próprio fluxo de trabalho e os registros de rastreamento são emitidas para as atividades que formam a implementação.If an activity is the root of the workflow, then the implementation of the activity is the workflow itself and tracking records are emitted for activities that form the implementation. Usar qualquer modo permite que todos os registros de rastreamento ser emitida para atividades raiz e todas as suas atividades compostas.Using the All mode permits all tracking records to be emitted for the root activity and all its composite activities.

Por exemplo, suponha que myactivity é uma atividade composta cuja implementação contém duas atividades, Atividade1 e da atividade2.For example, suppose MyActivity is a composite activity whose implementation contains two activities, Activity1 and Activity2. Quando essa atividade é adicionada a um fluxo de trabalho e o rastreamento é habilitado com um perfil de controle com implementationVisibility definido como RootScope , os registros de rastreamento são emitidos somente para myactivity.When this activity is added to a workflow and tracking is enabled with a tracking profile with implementationVisibility set to RootScope, tracking records are emitted only for MyActivity. No entanto, nenhum registro é emitido para as atividades Atividade1 e da atividade2.However, no records are emitted for activities Activity1 and Activity2.

No entanto, se o implementationVisibility atributo do perfil de controle for definido como All , os registros de rastreamento serão emitidos não apenas para myactivity, mas também para as atividades Atividade1 e da atividade2.However, if the implementationVisibility attribute for the tracking profile is set to All, then tracking records are emitted not only for MyActivity, but also for activities Activity1 and Activity2.

O sinalizador de implementationVisibility se aplica aos seguintes tipos de registro de acompanhamento:The implementationVisibility flag applies to following tracking record types:

  • ActivityStateRecordActivityStateRecord

  • FaultPropagationRecordFaultPropagationRecord

  • CancelRequestedRecordCancelRequestedRecord

  • ActivityScheduledRecordActivityScheduledRecord

Observação

CustomTrackingRecords emitiu-se de implementação de atividade não é filtrado para fora pela configuração de implementationVisibility.CustomTrackingRecords emitted from activity implementation are not filtered out by the implementationVisibility setting.

A funcionalidade de implementationVisibility é especificado como RootScope no perfil de rastreamento em código como segue:The implementationVisibility functionality is specified as RootScope on the tracking profile in code as follows:

TrackingProfile sampleTrackingProfile = new TrackingProfile()
{
    Name = "Sample Tracking Profile",
    ImplementationVisibility = ImplementationVisibility.RootScope
};

A funcionalidade de implementationVisibility é especificado como All no perfil de rastreamento em um arquivo de configuração como segue:The implementationVisibility functionality is specified as All on the tracking profile in a configuration file as follows:

<tracking>
      <profiles>
        <trackingProfile name="Shipping Monitoring" implementationVisibility="All">
          <workflow activityDefinitionId="*">
...
         </workflow>
        </trackingProfile>
      </profiles>
</tracking>

ImplementationVisibility que define o perfil de rastreamento é opcional.The ImplementationVisibility setting on the tracking profile is optional. Por padrão, o valor é definido como RootScope.By default, its value is set to RootScope. Os valores para este atributo são também maiúsculas de minúsculas.The values for this attribute are also case-sensitive.

Controlando tipos de consulta de perfilTracking Profile Query Types

Controlando os perfis são estruturados como as assinaturas declarativas para controlar os registros que permitem que você possa ver o runtime de fluxo de trabalho para o controle específico registro.Tracking profiles are structured as declarative subscriptions for tracking records that allow you to query the workflow runtime for specific tracking records. Há vários tipos de consulta que permitem autenticação para classes diferentes de objetos de TrackingRecord .There are several query types that allow you subscribe to different classes of TrackingRecord objects. Controlar perfis pode ser especificado na configuração ou com o código.Tracking profiles can be specified in configuration or through code. Aqui estão os tipos de consulta mais comuns:Here are the most common query types:

  • WorkflowInstanceQuery - use isso para controlar as alterações do ciclo de vida de instância de fluxo de trabalho como Started precedente- demonstrado e Completed.WorkflowInstanceQuery - Use this to track workflow instance life cycle changes like the previously-demonstrated Started and Completed. WorkflowInstanceQuery é usado para assinar seguintes a TrackingRecord os objetos:The WorkflowInstanceQuery is used to subscribe to the following TrackingRecord objects:

    Os estados a que pode ser assinado são especificados na classe de WorkflowInstanceStates .The states that can be subscribed to are specified in the WorkflowInstanceStates class.

    A configuração ou código usada para assinar os registros de acompanhamento de instância nível de fluxo de trabalho do estado da instância de Started que usa WorkflowInstanceQuery são mostrados no exemplo a seguir.The configuration or code used to subscribe to workflow instance-level tracking records for the Started instance state using the WorkflowInstanceQuery is shown in the following example.

    <workflowInstanceQueries>
        <workflowInstanceQuery>
          <states>
            <state name="Started"/>
          </states>
        </workflowInstanceQuery>
    </workflowInstanceQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new WorkflowInstanceQuery()
            {
                States = { WorkflowInstanceStates.Started}
            }
        }
    };
    
  • ActivityStateQuery - use isso para controlar as alterações do ciclo de vida de atividades que compõem uma instância de fluxo de trabalho.ActivityStateQuery - Use this to track life cycle changes of the activities that make up a workflow instance. Por exemplo, talvez você queira manter o controle sempre que a atividade "enviar email" for concluída em uma instância de fluxo de trabalho.For example, you may want to keep track of every time the "Send E-Mail" activity completes within a workflow instance. Esta consulta é necessária para que TrackingParticipant assine a ActivityStateRecord objetos.This query is necessary for a TrackingParticipant to subscribe to ActivityStateRecord objects. Os estados disponíveis para assinar a são especificados em ActivityStates.The available states to subscribe to are specified in ActivityStates.

    A configuração e o código usados para assinar o estado da atividade que controla os registros que usam ActivityStateQuery para atividades de SendEmailActivity são mostrados no exemplo a seguir.The configuration and code used to subscribe activity state tracking records that use the ActivityStateQuery for the SendEmailActivity activity is shown in the following example.

    <activityStateQueries>
      <activityStateQuery activityName="SendEmailActivity">
        <states>
          <state name="Closed"/>
        </states>
      </activityStateQuery>
    </activityStateQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new ActivityStateQuery()
            {
                ActivityName = "SendEmailActivity",
                States = { ActivityStates.Closed }
            }
        }
    };
    

    Observação

    Se vários elementos de activityStateQuery têm o mesmo nome, somente os estados no último elemento são usados no perfil de rastreamento.If multiple activityStateQuery elements have the same name, only the states in the last element are used in the tracking profile.

  • ActivityScheduledQuery - esta consulta permite que você controla uma atividade agendada para execução por uma atividade pai.ActivityScheduledQuery - This query allows you to track an activity scheduled for execution by a parent activity. A consulta é necessária para que TrackingParticipant assine a ActivityScheduledRecord objetos.The query is necessary for a TrackingParticipant to subscribe to ActivityScheduledRecord objects.

    A configuração e o código usados para assinar os registros filho relacionados à atividade de SendEmailActivity que está sendo agendada usando ActivityScheduledQuery são mostrados no exemplo a seguir.The configuration and code used to subscribe to records related to the SendEmailActivity child activity being scheduled using the ActivityScheduledQuery is shown in the following example.

    <activityScheduledQueries>
      <activityScheduledQuery activityName="ProcessNotificationsActivity" childActivityName="SendEmailActivity" />
    </activityScheduledQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new ActivityScheduledQuery()
            {
                ActivityName = "ProcessNotificationsActivity",
                ChildActivityName = "SendEmailActivity"
            }
        }
    };
    
  • FaultPropagationQuery - use isso para controlar a manipulação de falhas que ocorrem dentro de uma atividade.FaultPropagationQuery - Use this to track the handling of faults that occur within an activity. A consulta é necessária para que TrackingParticipant assine a FaultPropagationRecord objetos.The query is necessary for a TrackingParticipant to subscribe to FaultPropagationRecord objects.

    A configuração e o código usados para assinar os registros relacionados à propagação de falha que usa FaultPropagationQuery são mostrados no exemplo a seguir.The configuration and code used to subscribe to records related to fault propagation using FaultPropagationQuery is shown in the following example.

    <faultPropagationQueries>
      <faultPropagationQuery faultSourceActivityName="SendEmailActivity" faultHandlerActivityName="NotificationsFaultHandler" />
    </faultPropagationQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new FaultPropagationQuery()
            {
                FaultSourceActivityName = "SendEmailActivity",
                FaultHandlerActivityName = "NotificationsFaultHandler"
            }
        }
    };
    
  • CancelRequestedQuery - use isso para controlar solicitações cancelar uma atividade filho pela atividade pai.CancelRequestedQuery - Use this to track requests to cancel a child activity by the parent activity. A consulta é necessária para que TrackingParticipant assine a CancelRequestedRecord objetos.The query is necessary for a TrackingParticipant to subscribe to CancelRequestedRecord objects.

    A configuração e o código usados para assinar registros relacionados ao cancelamento da atividade usando CancelRequestedQuery o são mostrados no exemplo a seguir.The configuration and code used to subscribe to records related to activity cancellation using CancelRequestedQuery is shown in the following example.

    <cancelRequestedQueries>
      <cancelRequestedQuery activityName="ProcessNotificationsActivity" childActivityName="SendEmailActivity" />
    </cancelRequestedQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new CancelRequestedQuery()
            {
                ActivityName = "ProcessNotificationsActivity",
                ChildActivityName = "SendEmailActivity"
            }
        }
    };
    
  • CustomTrackingQuery - use isso para eventos de rastreamento que você define nas atividades de código.CustomTrackingQuery - Use this to track events that you define in your code activities. A consulta é necessária para que TrackingParticipant assine a CustomTrackingRecord objetos.The query is necessary for a TrackingParticipant to subscribe to CustomTrackingRecord objects.

    A configuração e o código usados para assinar os registros relacionados aos registros personalizados de rastreamento que usam CustomTrackingQuery são mostrados no exemplo a seguir.The configuration and code used to subscribe to records related to custom tracking records using CustomTrackingQuery is shown in the following example.

    <customTrackingQueries>
      <customTrackingQuery name="EmailAddress" activityName="SendEmailActivity" />
    </customTrackingQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new CustomTrackingQuery()
            {
                Name = "EmailAddress",
                ActivityName = "SendEmailActivity"
            }
        }
    };
    
  • BookmarkResumptionQuery - use isso para controlar a ressunção de um indexador em uma instância de fluxo de trabalho.BookmarkResumptionQuery - Use this to track resumption of a bookmark within a workflow instance. Esta consulta é necessária para que TrackingParticipant assine a BookmarkResumptionRecord objetos.This query is necessary for a TrackingParticipant to subscribe to BookmarkResumptionRecord objects.

    A configuração e o código usados para assinar os registros relacionados à ressunção do indexador que usa BookmarkResumptionQuery são mostrados no exemplo a seguir.The configuration and code used to subscribe to records related to bookmark resumption using BookmarkResumptionQuery is shown in the following example.

    <bookmarkResumptionQueries>
      <bookmarkResumptionQuery name="SentEmailBookmark" />
    </bookmarkResumptionQueries>
    
    TrackingProfile sampleTrackingProfile = new TrackingProfile()
    {
        Name = "Sample Tracking Profile",
        Queries =
        {
            new BookmarkResumptionQuery()
            {
                Name = "sentEmailBookmark"
            }
        }
    };
    

AnotaçõesAnnotations

As anotações permitem que você marca arbitrariamente registros de rastreamento com um valor que pode ser configurado após tempo de compilação.Annotations allow you to arbitrarily tag tracking records with a value that can be configured after build time. Por exemplo, talvez você queira que vários registros de acompanhamento em vários fluxos de trabalho sejam marcados com "servidor de email" = = "Server1 de email".For example, you might want several tracking records across several workflows to be tagged with "Mail Server" == "Mail Server1". Isso facilita localizar todos os registros com essa marca ao consultar o rastreamento registra posteriormente.This makes it easy to find all records with this tag when querying tracking records later.

Para fazer isso, uma anotação é adicionada a uma consulta de rastreamento conforme mostrado no exemplo o seguir.To accomplish this, an annotation is added to a tracking query as shown in the following example.

<activityStateQuery activityName="SendEmailActivity">
  <states>
    <state name="Closed"/>
  </states>
  <annotations>
    <annotation name="MailServer" value="Mail Server1"/>
  </annotations>
</activityStateQuery>

Como criar um perfil de rastreamentoHow to Create a Tracking Profile

Os elementos de consulta de rastreamento são usados para criar um perfil de controle usando um código ou arquivo de configuração XML .NET Framework 4.6.1.NET Framework 4.6.1 .Tracking query elements are used to create a tracking profile using either an XML configuration file or .NET Framework 4.6.1.NET Framework 4.6.1 code. Aqui está um exemplo de um perfil de rastreamento criado usando um arquivo de configuração.Here is an example of a tracking profile created using a configuration file.

<system.serviceModel>
  <tracking>
    <profiles>
      <trackingProfile name="Sample Tracking Profile ">
        <workflow activityDefinitionId="*">
          <!--Specify the tracking profile query elements to subscribe for tracking records-->
        </workflow>
      </trackingProfile>
    </profiles>
  </tracking>
</system.serviceModel>

Aviso

Para um WF usando o host serviço de fluxo de trabalho, o perfil de rastreamento é normalmente criado usando um arquivo de configuração.For a WF using the Workflow service host, the tracking profile is typically created using a configuration file. Também é possível criar um perfil de rastreamento com o código usando o perfil de rastreamento e a consulta API de rastreamento.It is also possible to create a tracking profile with code using the tracking profile and tracking query API.

Um perfil configurado como um arquivo de configuração XML é aplicado a um participante de rastreamento que usa uma extensão de comportamento.A profile configured as an XML configuration file is applied to a tracking participant using a behavior extension. Isso é adicionado a um WorkflowServiceHost, conforme descrito na seção mais adiante, Configurando o acompanhamento de um fluxo de trabalho.This is added to a WorkflowServiceHost as described in the later section Configuring Tracking for a Workflow.

A verbosidade de registros de rastreamento emissores pelo host é determinada pelas configurações dentro do perfil de rastreamento.The verbosity of the tracking records emitted by the host is determined by configuration settings within the tracking profile. Um participante de rastreamento assina controlar registros adicionando consultas a um perfil de rastreamento.A tracking participant subscribes to tracking records by adding queries to a tracking profile. Para assinar todos os registros de acompanhamento, o perfil de controle precisa especificar todas as consultas de controle usando " * " nos campos de nome em cada uma das consultas.To subscribe to all tracking records, the tracking profile needs to specify all tracking queries using "*" in the name fields in each of the queries.

Aqui estão alguns dos exemplos comuns de perfis de rastreamento.Here are some of the common examples of tracking profiles.

  • Um perfil de controle para obter registros e falhas de instância de fluxo de trabalho.A tracking profile to obtain workflow instance records and faults.

    <trackingProfile name="Instance and Fault Records">
      <workflow activityDefinitionId="*">
        <workflowInstanceQueries>
          <workflowInstanceQuery>
            <states>
              <state name="*" />
            </states>
          </workflowInstanceQuery>
        </workflowInstanceQueries>
        <activityStateQueries>
          <activityStateQuery activityName="*">
            <states>
              <state name="Faulted"/>
            </states>
          </activityStateQuery>
        </activityStateQueries>
      </workflow>
    </trackingProfile>
    
  • Um perfil de rastreamento para obter todos os registros personalizados de rastreamento.A tracking profile to obtain all custom tracking records.

    <trackingProfile name="Instance_And_Custom_Records">
      <workflow activityDefinitionId="*">
        <customTrackingQueries>
          <customTrackingQuery name="*" activityName="*" />
        </customTrackingQueries>
      </workflow>
    </trackingProfile>
    

Consulte tambémSee also