Bagikan melalui


Pengelolaan Instans yang Ditangguhkan

Sampel SuspendedInstanceManagement menunjukkan cara mengelola instans alur kerja yang telah ditangguhkan. Tindakan default untuk WorkflowUnhandledExceptionBehavior adalah AbandonAndSuspend. Ini berarti bahwa secara default, pengecualian yang tidak tertangani yang ditampilkan dari instans alur kerja yang dihosting di WorkflowServiceHost akan menyebabkan instans dibuang dari memori (ditinggalkan) dan versi instans yang tahan lama/bertahan akan ditandai sebagai ditangguhkan. Instans alur kerja yang ditangguhkan tidak akan dapat berjalan hingga penangguhannya dibatalkan.

Sampel menunjukkan bagaimana utilitas baris perintah dapat diimplementasikan untuk membuat kueri untuk instans yang ditangguhkan, dan bagaimana memberi pengguna opsi untuk melanjutkan atau menghentikan instans. Dalam sampel ini, layanan alur kerja sengaja menampilkan pengecualian, menyebabkannya ditangguhkan. Utilitas baris perintah kemudian dapat digunakan untuk menanyakan instans dan selanjutnya melanjutkan atau menghentikan instans.

Menunjukkan

WorkflowServiceHost dengan WorkflowUnhandledExceptionBehavior dan WorkflowControlEndpoint di Windows Workflow Foundation (WF).

Diskusi

Utilitas baris perintah yang diterapkan dalam sampel ini khusus untuk implementasi penyimpanan instans SQL yang dikirimkan dalam .NET Framework 4.6.1. Jika Anda memiliki penerapan khusus penyimpanan instans, Anda dapat mengadaptasi utilitas ini dengan mengganti implementasi WorkflowInstanceCommand dalam sampel dengan implementasi yang khusus untuk penyimpanan instans Anda.

Implementasi yang diberikan menjalankan perintah SQL terhadap penyimpanan instans SQL secara langsung untuk membuat daftar instans yang ditangguhkan, dan itu bergantung pada WorkflowControlEndpoint yang ditambahkan ke WorkflowServiceHost untuk melanjutkan atau menghentikan instans.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Sampel ini mengharuskan komponen Windows berikut ini diaktifkan:

    1. Server Microsoft Message Queuing (MSMQ)

    2. SQL Server Express

  2. Siapkan database SQL Server.

    1. Dari perintah Visual Studio, jalankan "setup.cmd" dari direktori sampel SuspendedInstanceManagement, yang melakukan hal berikut:

      1. Buat database persistensi menggunakan SQL Server Express. Jika database persistensi sudah ada, maka database tersebut akan dihapus dan dibuat ulang

      2. Siapkan database untuk persistensi.

      3. Tambahkan IIS APPPOOL\DefaultAppPool dan NT AUTHORITY\Network Service ke peran InstanceStoreUsers yang ditentukan saat menyiapkan database untuk persistensi.

  3. Siapkan antrean layanan.

    1. Di Visual Studio, klik kanan proyek SampleWorkflowApp dan klik Tetapkan sebagai Proyek Awal.

    2. Kompilasi dan jalankan SampleWorkflowApp dengan menekan F5. Ini akan membuat antrean yang dibutuhkan.

    3. Tekan Enter untuk menghentikan SampleWorkflowApp.

    4. Buka konsol Manajemen Komputer dengan menjalankan Compmgmt.msc dari perintah.

    5. Luaskan Layanan dan Aplikasi, Message Queuing, Antrean Privat.

    6. Klik kanan antrean ReceiveTx dan pilih Properties.

    7. Pilih tab Keamanan dan izinkan Semua Orang memiliki izin untuk Menerima Pesan, Mengintip Pesan, dan Mengirim Pesan.

  4. Sekarang, jalankan sampelnya.

    1. Di Visual Studio, jalankan proyek SampleWorkflowApp lagi tanpa penelusuran kesalahan dengan menekan Ctrl+F5. Dua alamat titik akhir akan dicetak di jendela konsol: satu untuk titik akhir aplikasi dan lainnya dari WorkflowControlEndpoint. Instans alur kerja kemudian dibuat, dan catatan pelacakan untuk instans tersebut akan muncul di jendela konsol. Instans alur kerja akan mengeluarkan pengecualian yang menyebabkan instans ditangguhkan dan dibatalkan.

    2. Utilitas baris perintah kemudian dapat digunakan untuk mengambil tindakan lebih lanjut pada salah satu instans ini. Sintaks untuk argumen baris perintah adalah sebagai berikut::

      SuspendedInstanceManagement -Command:[CommandName] -Server:[ServerName] -Database:[DatabaseName] -InstanceId:[InstanceId]

      Perintah yang didukung adalah: Query, Resume, dan Terminate. Tombol beralih InstanceId hanya diperlukan untuk operasi Resume dan Terminate.

Untuk membersihkan (Opsional)

  1. Buka konsol Manajemen Komputer dengan menjalankan Compmgmt.msc.

  2. Luaskan Layanan dan Aplikasi, Message Queuing, Antrean Privat.

  3. Hapus antrean ReceiveTx.

  4. Untuk menghapus database persistensi, jalankan cleanup.cmd.