Sdílet prostřednictvím


Konfigurace sledování pracovního postupu

Pracovní postup se může spouštět třemi způsoby:

V závislosti na možnosti hostování pracovního postupu může být účastník sledování přidán prostřednictvím kódu nebo prostřednictvím konfiguračního souboru. Toto téma popisuje, jak je sledování nakonfigurováno přidáním účastníka sledování do WorkflowApplication a do WorkflowServiceHost, a jak povolit sledování při použití WorkflowInvoker.

Konfigurace sledování aplikací pracovního postupu

Pracovní postup lze spustit pomocí WorkflowApplication třídy. Toto téma ukazuje, jak je sledování nakonfigurováno pro aplikaci pracovního postupu rozhraní .NET Framework 4.6.1 přidáním účastníka sledování do WorkflowApplication hostitele pracovního postupu. V tomto případě se pracovní postup spustí jako aplikace pracovního postupu. Aplikaci pracovního postupu nakonfigurujete prostřednictvím kódu (nikoli pomocí konfiguračního souboru), což je soubor .exe v místním prostředí pomocí WorkflowApplication třídy. Účastník sledování se přidá jako rozšíření instance WorkflowApplication . To se provádí přidáním TrackingParticipant kolekce rozšíření pro instanci WorkflowApplication.

Pro aplikaci pracovního postupu můžete přidat EtwTrackingParticipant rozšíření chování, jak je znázorněno v následujícím kódu.

LogActivity activity = new LogActivity();

WorkflowApplication instance = new WorkflowApplication(activity);
EtwTrackingParticipant trackingParticipant =
    new EtwTrackingParticipant
{

        TrackingProfile = new TrackingProfile
           {
               Name = "SampleTrackingProfile",
               ActivityDefinitionId = "ProcessOrder",
               Queries = new WorkflowInstanceQuery
               {
                  States = { "*" }
              }
          }
       };
instance.Extensions.Add(trackingParticipant);

Konfigurace sledování služby pracovního postupu

Pracovní postup může být zpřístupněn jako služba WCF při hostování v hostiteli WorkflowServiceHost služby. WorkflowServiceHost je specializovaná implementace .NET ServiceHost pro službu založenou na pracovních postupech. Tato část vysvětluje, jak nakonfigurovat sledování pro službu pracovního postupu rozhraní .NET Framework 4.6.1 spuštěnou v WorkflowServiceHost. Konfiguruje se prostřednictvím souboru Web.config (pro službu hostovanou webem) nebo souboru App.config (pro službu hostovanou v samostatné aplikaci, jako je konzolová aplikace), zadáním chování služby nebo kódu přidáním sledování specifického chování do Behaviors kolekce hostitele služby.

Pro službu pracovního postupu hostované v WorkflowServiceHost, můžete přidat EtwTrackingParticipant pomocí <behavior> elementu v konfiguračním souboru, jak je znázorněno v následujícím příkladu.

<behaviors>
   <serviceBehaviors>
        <behavior>
          <etwTracking profileName="Sample Tracking Profile" />
        </behavior>
   </serviceBehaviors>
</behaviors>

Alternativně můžete pro službu pracovního postupu hostované v WorkflowServiceHostkódu přidat EtwTrackingParticipant rozšíření chování. Pokud chcete přidat vlastního účastníka sledování, vytvořte nové rozšíření chování a přidejte ho do ServiceHost kódu, jak je znázorněno v následujícím ukázkovém kódu.

Poznámka:

Pokud chcete zobrazit ukázkový kód, který ukazuje, jak vytvořit vlastní prvek chování, který přidá vlastního účastníka sledování, projděte si ukázky sledování .

ServiceHost svcHost = new ServiceHost(typeof(WorkflowService), new
                                 Uri("http://localhost:8001/Sample"));
EtwTrackingBehavior trackingBehavior =
    new EtwTrackingBehavior
    {
        ProfileName = "Sample Tracking Profile"
    };
svcHost.Description.Behaviors.Add(trackingBehavior);
svcHost.Open();

Účastník sledování se přidá do hostitele služby pracovního postupu jako rozšíření chování.

Následující ukázkový kód ukazuje, jak číst sledovací profil z konfiguračního souboru.

TrackingProfile GetProfile(string profileName, string displayName)
        {
            TrackingProfile trackingProfile = null;
            TrackingSection trackingSection = (TrackingSection)WebConfigurationManager.GetSection("system.serviceModel/tracking");
            if (trackingSection == null)
            {
                return null;
            }

            profileName ??= "";

            //Find the profile with the specified profile name in the list of profile found in config
            var match = from p in new List<TrackingProfile>(trackingSection.TrackingProfiles)
                        where (p.Name == profileName) && ((p.ActivityDefinitionId == displayName) || (p.ActivityDefinitionId == "*"))
                        select p;

            if (match.Count() == 0)
            {
                //return an empty profile
                trackingProfile = new TrackingProfile()
                {
                    ActivityDefinitionId = displayName
                };

            }
            else
            {
                trackingProfile = match.First();
            }

            return trackingProfile;

Tento ukázkový kód ukazuje, jak přidat sledovací profil do hostitele pracovního postupu.

WorkflowServiceHost workflowServiceHost = serviceHostBase as WorkflowServiceHost;
if (null != workflowServiceHost)
{
    string workflowDisplayName = workflowServiceHost.Activity.DisplayName;
    TrackingProfile trackingProfile = GetProfile(this.profileName, workflowDisplayName);
    workflowServiceHost.WorkflowExtensions.Add(()  => new EtwTrackingParticipant {
        TrackingProfile = trackingProfile
    });
 }

Poznámka:

Další informace o sledovacích profilech najdete v tématu Profily sledování.

Konfigurace sledování pomocí WorkflowInvokeru

Chcete-li nakonfigurovat sledování pro pracovní postup spuštěný pomocí WorkflowInvoker, přidejte poskytovatele sledování jako rozšíření do WorkflowInvoker instance. Následující příklad kódu je z ukázky custom tracking .

WorkflowInvoker invoker = new WorkflowInvoker(BuildSampleWorkflow());
invoker.Extensions.Add(customTrackingParticipant);
invoker.Invoke();

Zobrazení záznamů sledování v Prohlížeč událostí

Existují dva Prohlížeč událostí protokoly, které je důležité zobrazit při sledování provádění WF – analytického protokolu a protokolu ladění. Oba se nacházejí v Microsoftu|Windows |Uzel Application Server-Applications Protokoly v této části obsahují události z jedné aplikace místo událostí, které mají vliv na celý systém.

Události trasování ladění se zapisují do protokolu ladění. Pokud chcete shromažďovat události trasování ladění WF v Prohlížeč událostí, povolte protokol ladění.

  1. Chcete-li otevřít Prohlížeč událostí, klepněte na tlačítko Start a potom klepněte na tlačítko Spustit. V dialogovém okně Spustit zadejte eventvwr.

  2. V dialogovém okně Prohlížeč událostí rozbalte uzel Protokoly aplikací a služeb.

  3. Rozbalte uzly Microsoft, Windows a Application Server-Applications.

  4. Klikněte pravým tlačítkem na uzel Ladění v uzlu Application Server-Applications a vyberte Povolit protokol.

  5. Spuštěním aplikace s povoleným trasováním vygenerujte události trasování.

  6. Klikněte pravým tlačítkem myši na uzel Ladění a vyberte Aktualizovat. Události trasování by měly být viditelné v prostředním podokně.

WF 4 poskytuje účastník sledování, který zapisuje záznamy sledování do relace trasování událostí pro Windows (Trasování událostí pro Windows). Účastník sledování Trasování událostí pro Windows je nakonfigurovaný s profilem sledování, který se přihlašuje k odběru záznamů sledování. Při povolení sledování se záznamy sledování chyb vygenerují do Trasování událostí pro Windows. Události sledování událostí trasování událostí pro Windows (mezi rozsahem 100–113) odpovídající sledování událostí vygenerovaných účastníkem sledování událostí pro Windows se zapisují do analytického protokolu.

Pokud chcete zobrazit záznamy sledování, postupujte takto.

  1. Chcete-li otevřít Prohlížeč událostí, klepněte na tlačítko Start a potom klepněte na tlačítko Spustit. V dialogovém okně Spustit zadejte eventvwr.

  2. V dialogovém okně Prohlížeč událostí rozbalte uzel Protokoly aplikací a služeb.

  3. Rozbalte uzly Microsoft, Windows a Application Server-Applications.

  4. Klikněte pravým tlačítkem na uzel Analýza v uzlu Aplikační server-Aplikace a vyberte Povolit protokol.

  5. Spuštěním aplikace s povoleným sledováním vygenerujte záznamy sledování.

  6. Klikněte pravým tlačítkem myši na analytický uzel a vyberte Aktualizovat. Sledování záznamů by mělo být viditelné v prostředním podokně.

Následující obrázek ukazuje sledování událostí v prohlížeči událostí:

Screenshot of the Event Viewer showing tracking records.

Registrace ID zprostředkovatele specifického pro aplikaci

Pokud je potřeba zapsat události do konkrétního protokolu aplikace, pomocí následujícího postupu zaregistrujte nový manifest zprostředkovatele.

  1. Deklarujte ID zprostředkovatele v konfiguračním souboru aplikace.

    <system.serviceModel>
        <diagnostics etwProviderId="2720e974-9fe9-477a-bb60-81fe3bf91eec"/>
    </system.serviceModel>
    
  2. Zkopírujte soubor manifestu z %windir%\Microsoft.NET\Framework\<nejnovější verze rozhraní .NET Framework 4.6.1>\Microsoft.Windows.ApplicationServer.Applications.man do dočasného umístění a přejmenujte ho na Microsoft.Windows.ApplicationServer.Applications_Provider1.man.

  3. Změňte identifikátor GUID v souboru manifestu na nový identifikátor GUID.

    <provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />
    
  4. Pokud nechcete odinstalovat výchozího poskytovatele, změňte název zprostředkovatele.

    <provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />
    
  5. Pokud jste změnili název zprostředkovatele v předchozím kroku, změňte názvy kanálů v souboru manifestu na nový název zprostředkovatele.

    <channel name="Microsoft-Windows-Application Server-Applications_Provider1/Admin" chid="ADMIN_CHANNEL" symbol="ADMIN_CHANNEL" type="Admin" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.ADMIN_CHANNEL.message)" />
    <channel name="Microsoft-Windows-Application Server-Applications_Provider1/Operational" chid="OPERATIONAL_CHANNEL" symbol="OPERATIONAL_CHANNEL" type="Operational" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.OPERATIONAL_CHANNEL.message)" />
    <channel name="Microsoft-Windows-Application Server-Applications_Provider1/Analytic" chid="ANALYTIC_CHANNEL" symbol="ANALYTIC_CHANNEL" type="Analytic" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.ANALYTIC_CHANNEL.message)" />
    <channel name="Microsoft-Windows-Application Server-Applications_Provider1/Debug" chid="DEBUG_CHANNEL" symbol="DEBUG_CHANNEL" type="Debug" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.DEBUG_CHANNEL.message)" />
    <channel name="Microsoft-Windows-Application Server-Applications_Provider1/Perf" chid="PERF_CHANNEL" symbol="PERF_CHANNEL" type="Analytic" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.PERF_CHANNEL.message)" />
    
  6. Pomocí následujícího postupu vygenerujte knihovnu DLL prostředků.

    1. Nainstalujte sadu Windows SDK. Sada Windows SDK obsahuje kompilátor zpráv (mc.exe) a kompilátor prostředků (rc.exe).

    2. Na příkazovém řádku sady Windows SDK spusťte mc.exe v novém souboru manifestu.

      mc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.man
      
    3. Spusťte rc.exe v souboru prostředků vygenerovaném v předchozím kroku.

      rc.exe  Microsoft.Windows.ApplicationServer.Applications_Provider1.rc
      
    4. Vytvořte prázdný soubor cs s názvem NewProviderReg.cs.

    5. Vytvořte knihovnu DLL prostředků pomocí kompilátoru jazyka C#.

      csc /target:library /win32res:Microsoft.Windows.ApplicationServer.Applications_Provider1.res NewProviderReg.cs /out:Microsoft.Windows.ApplicationServer.Applications_Provider1.dll
      
    6. Změňte název knihovny DLL prostředků a zpráv v souboru manifestu z Microsoft.Windows.ApplicationServer.Applications.Provider1.man na nový název knihovny DLL.

      <provider name="Microsoft-Windows-Application Server-Applications_Provider1" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" symbol="Microsoft_Windows_ApplicationServer_ApplicationEvents" resourceFileName="<dll directory>\Microsoft.Windows.ApplicationServer.Applications_Provider1.dll" messageFileName="<dll directory>\Microsoft.Windows.ApplicationServer.Applications_Provider1.dll" />
      
    7. Pomocí nástroje wevtutil zaregistrujte manifest.

      wevtutil im Microsoft.Windows.ApplicationServer.Applications_Provider1.man
      

Viz také