Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pracovní postup se může spouštět třemi způsoby:
Hostováno v WorkflowServiceHost
Provedeno jako WorkflowApplication
Spustí se přímo pomocí WorkflowInvoker
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í aplikace pracovních toků
Pracovní postup lze spustit pomocí WorkflowApplication třídy. Toto téma ukazuje, jak je sledování nakonfigurováno pro workflow aplikaci .NET Framework 4.6.1 přidáním účastníka sledování do hostitele pracovního postupu WorkflowApplication. V tomto případě se pracovní postup spustí jako aplikace pro pracovní postup. 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 do kolekce rozšíření instance 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 monitorování workflow služby
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 web hostovanou službu) 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 pro 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 hostovanou v WorkflowServiceHost přidat rozšíření chování prostřednictvím kódu EtwTrackingParticipant. 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í pro 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či událostí
Existují dva protokoly prohlížeče událostí, které je zvlášť užitečné zobrazit při sledování vykonávání WF – Analytický protokol a Protokol ladění. Oba se nacházejí v uzlu aplikace Server-Applications Microsoft|Windows. Protokoly v této části obsahují události z jedné aplikace místo událostí, které mají vliv na celý systém.
Trasovací události se zapisují do protokolu ladění. Chcete-li v Prohlížeči událostí shromažďovat události trasování ladění WF, povolte protokol ladění.
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.V dialogovém okně Prohlížeč událostí rozbalte uzel Protokoly aplikací a služeb .
Rozbalte uzly Microsoft, Windows a Aplikační server-aplikace.
Klikněte pravým tlačítkem na uzel Ladění v uzlu Application Server-Aplikace a vyberte Povolit záznam.
Spuštěním aplikace s povoleným trasováním vygenerujte události trasování.
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 sledovací participanta, který zapisuje záznamy sledování do relace ETW (Trasování událostí pro Windows). Modul sledování ETW je nakonfigurován profilem sledování, který odebírá záznamy sledování. Při povolení sledování se záznamy o sledování chyb odesílají do ETW (Trasování událostí pro Windows). Události trasování ETW (v rozmezí 100–113), které odpovídají událostem emitovaným účastníkem trasování ETW, se zaznamenávají do analytického protokolu.
Pokud chcete zobrazit záznamy sledování, postupujte takto.
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.V dialogovém okně Prohlížeč událostí rozbalte uzel Protokoly aplikací a služeb .
Rozbalte uzly Microsoft, Windows a Aplikační server-aplikace.
Klikněte pravým tlačítkem na uzel Analýza v uzlu Aplikační server-Aplikace a vyberte Povolit protokol.
Spuštěním aplikace s povoleným sledováním vygenerujte záznamy sledování.
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í:
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.
Deklarujte ID zprostředkovatele v konfiguračním souboru aplikace.
<system.serviceModel> <diagnostics etwProviderId="2720e974-9fe9-477a-bb60-81fe3bf91eec"/> </system.serviceModel>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.
Změňte GUID v souboru manifestu na nový GUID.
<provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />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}" />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)" />Vygenerujte knihovnu DLL prostředků pomocí následujícího postupu.
Nainstalujte sadu Windows SDK. Sada Windows SDK obsahuje kompilátor zpráv (mc.exe) a kompilátor prostředků (rc.exe).
Na příkazovém řádku sady Windows SDK spusťte mc.exe v novém souboru manifestu.
mc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.manSpusťte rc.exe pro soubor prostředků vygenerovaný v předchozím kroku.
rc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.rcVytvořte prázdný soubor cs s názvem NewProviderReg.cs.
Vytvořte knihovnu prostředků DLL pomocí kompilátoru jazyka C#.
csc /target:library /win32res:Microsoft.Windows.ApplicationServer.Applications_Provider1.res NewProviderReg.cs /out:Microsoft.Windows.ApplicationServer.Applications_Provider1.dllZměňte název knihovny prostředků a zpráv DLL v souboru manifestu z
Microsoft.Windows.ApplicationServer.Applications.Provider1.manna 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" />Použijte wevtutil k registraci manifestu.
wevtutil im Microsoft.Windows.ApplicationServer.Applications_Provider1.man