Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Alur kerja dapat dijalankan dengan tiga cara:
Di-host di WorkflowServiceHost
Dijalankan sebagai WorkflowApplication
Dijalankan secara langsung menggunakan WorkflowInvoker
Bergantung pada opsi hosting alur kerja, peserta pelacakan dapat ditambahkan baik melalui kode atau melalui file konfigurasi. Topik ini menjelaskan cara mengonfigurasi pelacakan dengan menambahkan peserta pelacakan ke WorkflowApplication dan WorkflowServiceHost, serta cara mengaktifkan pelacakan saat menggunakan WorkflowInvoker.
Mengonfigurasi Pelacakan Aplikasi Alur Kerja
Alur kerja dapat berjalan menggunakan WorkflowApplication kelas . Topik ini menunjukkan bagaimana pelacakan dikonfigurasi untuk aplikasi alur kerja .NET Framework 4.6.1 dengan menambahkan peserta pelacakan ke WorkflowApplication host alur kerja. Dalam hal ini, alur kerja dijalankan sebagai aplikasi alur kerja. Anda mengonfigurasi aplikasi alur kerja melalui kode (bukan dengan menggunakan file konfigurasi), yang merupakan file .exe yang dihost sendiri menggunakan WorkflowApplication kelas . Peserta pelacakan ditambahkan sebagai ekstensi ke WorkflowApplication instance. Ini dilakukan dengan menambahkan `TrackingParticipant` ke dalam koleksi ekstensi untuk instans dari WorkflowApplication.
Untuk aplikasi alur kerja, Anda dapat menambahkan EtwTrackingParticipant ekstensi perilaku seperti yang ditunjukkan dalam kode berikut.
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);
Mengonfigurasi Layanan Pemantauan Alur Kerja
Alur kerja dapat diekspos sebagai layanan WCF saat dihosting di WorkflowServiceHost host layanan. WorkflowServiceHost adalah implementasi ServiceHost .NET khusus untuk layanan berbasis alur kerja. Bagian ini menjelaskan cara mengonfigurasi pelacakan untuk layanan alur kerja .NET Framework 4.6.1 yang berjalan di WorkflowServiceHost. Ini dikonfigurasi melalui file Web.config (untuk layanan yang dihosting Web) atau file App.config (untuk layanan yang dihosting dalam aplikasi yang berdiri sendiri, seperti aplikasi konsol) dengan menentukan perilaku layanan atau melalui kode dengan menambahkan perilaku khusus pelacakan ke Behaviors koleksi untuk host layanan.
Untuk layanan alur kerja yang dihosting di WorkflowServiceHost, Anda dapat menambahkan EtwTrackingParticipant menggunakan <behavior> elemen dalam file konfigurasi, seperti yang ditunjukkan dalam contoh berikut.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="Sample Tracking Profile" />
</behavior>
</serviceBehaviors>
</behaviors>
Atau, untuk layanan alur kerja yang dihosting di WorkflowServiceHost, Anda dapat menambahkan EtwTrackingParticipant ekstensi perilaku melalui kode. Untuk menambahkan peserta pelacakan kustom, buat ekstensi perilaku baru dan tambahkan ke ServiceHost, seperti yang ditunjukkan dalam contoh kode berikut.
Nota
Jika Anda ingin melihat kode sampel yang memperlihatkan cara membuat elemen perilaku kustom yang menambahkan peserta pelacakan kustom, lihat Sampel pelacakan .
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();
Komponen pelacakan ditambahkan ke host layanan alur kerja sebagai ekstensi dari perilaku.
Contoh kode di bawah ini menunjukkan cara membaca profil pelacakan dari file konfigurasi.
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;
Kode sampel ini menunjukkan cara menambahkan profil pelacakan ke host alur kerja.
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
});
}
Nota
Untuk informasi selengkapnya tentang melacak profil, lihat Profil Pelacakan.
Mengonfigurasi pelacakan menggunakan WorkflowInvoker
Untuk mengonfigurasi pelacakan untuk alur kerja yang dijalankan menggunakan WorkflowInvoker, tambahkan penyedia pelacakan sebagai ekstensi ke WorkflowInvoker instans. Contoh kode berikut berasal dari sampel Pelacakan Kustom .
WorkflowInvoker invoker = new WorkflowInvoker(BuildSampleWorkflow());
invoker.Extensions.Add(customTrackingParticipant);
invoker.Invoke();
Menampilkan rekaman pelacakan di Pemeriksa Peristiwa
Ada dua log Penampil Peristiwa yang menarik untuk dilihat saat melacak eksekusi WF - log Analitik dan log Debug. Keduanya berada di bawah node aplikasi Microsoft|Windows|Server-Applications. Log dalam bagian ini berisi peristiwa dari satu aplikasi daripada peristiwa yang berdampak pada seluruh sistem.
Peristiwa jejak debug ditulis ke Log Debug. Untuk mengumpulkan peristiwa pelacakan debug WF di Penampil Peristiwa, aktifkan Log Debug.
Untuk membuka Penampil Peristiwa, klik Mulai, lalu klik Jalankan. Dalam dialog Jalankan, ketik
eventvwr.Dalam dialog Penampil Peristiwa, perluas simpul Log Aplikasi dan Layanan .
Perluas node Microsoft, Windows, dan Application Server-Applications .
Klik kanan simpul Debug di bawah simpul Aplikasi-Aplikasi , dan pilih Aktifkan Log.
Jalankan aplikasi yang mendukung pelacakan Anda untuk menghasilkan peristiwa pelacakan.
Klik kanan simpul Debug dan pilih Refresh. Peristiwa pelacakan harus terlihat di panel tengah.
WF 4 menyediakan peserta pelacakan yang menulis catatan pelacakan ke sesi ETW (Pelacakan Peristiwa di Windows). Peserta pelacakan ETW dikonfigurasi dengan profil pelacakan untuk berlangganan catatan pelacakan. Saat pelacakan diaktifkan, rekaman pelacakan kesalahan dipancarkan ke ETW. Peristiwa pelacakan ETW (antara rentang 100-113) yang sesuai dengan peristiwa pelacakan yang dipancarkan oleh peserta pelacakan ETW ditulis ke Log Analitik.
Untuk melihat rekaman pelacakan, ikuti langkah-langkah ini.
Untuk membuka Penampil Peristiwa, klik Mulai, lalu klik Jalankan. Dalam dialog Jalankan, ketik
eventvwr.Dalam dialog Penampil Peristiwa, perluas simpul Log Aplikasi dan Layanan .
Perluas node Microsoft, Windows, dan Application Server-Applications .
Klik kanan simpul Analitik di bawah node Application Server-Applications , dan pilih Aktifkan Log.
Jalankan aplikasi yang mendukung pelacakan Anda untuk menghasilkan rekaman pelacakan.
Klik kanan simpul Analitik dan pilih Refresh. Rekaman pelacakan harus terlihat di panel tengah.
Gambar berikut menunjukkan peristiwa pelacakan di penampil peristiwa:
Mendaftarkan ID penyedia khusus aplikasi
Jika peristiwa perlu ditulis ke log aplikasi tertentu, ikuti langkah-langkah ini untuk mendaftarkan manifes penyedia baru.
Nyatakan ID penyedia dalam file konfigurasi aplikasi.
<system.serviceModel> <diagnostics etwProviderId="2720e974-9fe9-477a-bb60-81fe3bf91eec"/> </system.serviceModel>Salin file manifes dari %windir%\Microsoft.NET\Framework\<versi terbaru dari .NET Framework 4.6.1>\Microsoft.Windows.ApplicationServer.Applications.man ke lokasi sementara, dan ganti namanya menjadi Microsoft.Windows.ApplicationServer.Applications_Provider1.man
Ubah GUID dalam file manifes ke GUID baru.
<provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />Ubah nama penyedia jika Anda tidak ingin meng-uninstall penyedia bawaan.
<provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />Jika Anda mengubah nama penyedia di langkah sebelumnya, ubah nama saluran dalam file manifes ke nama penyedia baru.
<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)" />Buat DLL sumber daya dengan mengikuti langkah-langkah berikut.
Instal Windows SDK. Windows SDK menyertakan pengkompilasi pesan (mc.exe) dan pengkompilasi sumber daya (rc.exe).
Di prompt perintah Windows SDK, jalankan mc.exe pada file manifes baru.
mc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.manJalankan rc.exe pada file sumber daya yang dihasilkan pada langkah sebelumnya.
rc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.rcBuat file cs kosong yang disebut NewProviderReg.cs.
Buat DLL sumber daya menggunakan pengkompilasi C#.
csc /target:library /win32res:Microsoft.Windows.ApplicationServer.Applications_Provider1.res NewProviderReg.cs /out:Microsoft.Windows.ApplicationServer.Applications_Provider1.dllUbah nama dll sumber daya dan pesan dalam file manifes dari
Microsoft.Windows.ApplicationServer.Applications.Provider1.manke nama dll baru.<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" />Gunakan wevtutil untuk mendaftarkan manifes.
wevtutil im Microsoft.Windows.ApplicationServer.Applications_Provider1.man