Toolkit Eksternal Ruleset

Biasanya ketika aturan digunakan dalam aplikasi alur kerja, aturan adalah bagian dari rakitan. Dalam beberapa skenario, Anda mungkin ingin mempertahankan RuleSet secara terpisah dari assembly sehingga dapat diperbarui tanpa membangun kembali dan menyebarkan rakitan alur kerja. Sampel ini memungkinkan Anda mengelola dan mengedit RuleSets dalam database dan mengakses RuleSets tersebut dari alur kerja saat runtime. Ini memungkinkan instance alur kerja yang sedang berjalan untuk secara otomatis mengadopsi perubahan RuleSet.

Sampel Toolkit RuleSet Eksternal berisi alat berbasis Windows Forms yang dapat Anda gunakan untuk mengelola dan mengedit versi RuleSet dalam database. Ini juga termasuk aktivitas dan layanan host untuk menjalankan aturan tersebut.

Nota

Sampel ini memerlukan Microsoft SQL Server.

Visual Studio menyediakan editor RuleSet sebagai bagian dari Windows Workflow Foundation (WF). Anda dapat memulai editor ini dengan mengklik dua kali aktivitas Policy dalam alur kerja; ini menserialisasikan objek RuleSet yang ditentukan ke file .rules yang terkait dengan alur kerja (aktivitas Policy menjalankan instance RuleSet terhadap alur kerja). File .rules dikompilasi ke dalam rakitan sebagai sumber daya saat Anda membangun proyek alur kerja.

Komponen sampel ini meliputi:

  • Alat antarmuka pengguna grafis RuleSet yang dapat Anda gunakan untuk mengedit dan mengelola versi RuleSet dalam database.

  • Layanan RuleSet yang dikonfigurasi pada aplikasi host dan mengakses RuleSets dari database.

  • Aktivitas ExternalPolicy yang meminta RuleSet dari layanan RuleSet dan menjalankan RuleSet terhadap alur kerja.

Interaksi komponen ditampilkan dalam gambar berikut. Bagian yang mengikuti menjelaskan setiap komponen.

Diagram ini memperlihatkan gambaran umum sampel External RuleSet Toolkit.

Alat Sekumpulan Aturan

Gambar berikut adalah cuplikan layar alat RuleSet. Dari menu Rule Store , Anda dapat memuat RuleSets yang tersedia dari database dan menyimpan RuleSets yang dimodifikasi kembali ke penyimpanan. File konfigurasi aplikasi menyediakan string koneksi database untuk database RuleSet. Saat Anda memulai alat, alat ini secara otomatis memuat RuleSets dari database yang dikonfigurasi.

Cuplikan layar memperlihatkan Browser RuleSet.

Alat RuleSet menerapkan nomor versi utama dan minor ke RuleSets, memungkinkan Anda untuk secara bersamaan memelihara dan menyimpan beberapa versi (alat ini tidak menyediakan fitur penguncian atau manajemen konfigurasi lainnya selain kemampuan penerapan versi). Dengan menggunakan alat ini, Anda dapat membuat versi RuleSet baru atau menghapus versi yang ada. Saat Anda mengklik Baru, alat membuat nama RuleSet baru dan menerapkan versi 1.0. Saat Anda menyalin versi, alat membuat salinan versi RuleSet yang dipilih, termasuk aturan yang terkandung, dan menetapkan nomor versi unik baru. Nomor versi ini didasarkan pada nomor versi Dari Sekumpulan Aturan yang ada. Anda dapat mengubah nama RuleSet dan nomor versi menggunakan bidang terkait pada formulir.

Saat Anda mengklik Edit Aturan, editor RuleSet dimulai, seperti yang diperlihatkan dalam gambar berikut:

Cuplikan layar memperlihatkan Editor RuleSet.

Ini adalah hosting ulang dialog editor yang merupakan bagian dari add-in Visual Studio Windows Workflow Foundation. Ini menyediakan fungsionalitas yang sama, termasuk dukungan Intellisense. Aturan ditulis terhadap jenis target (seperti alur kerja) yang terkait dengan RuleSet di alat; saat Anda mengklik Telusuri dalam dialog alat utama, dialog Pemilih Alur Kerja/Tipe muncul, seperti yang ditunjukkan pada Gambar 4.

Alur kerja /Tipe Pilihan

Gambar 4: Pemilih Alur Kerja/Tipe

Anda dapat menggunakan dialog Pemilih Alur Kerja/Tipe untuk menentukan rakitan dan jenis tertentu dalam rakitan tersebut. Jenis ini adalah jenis target yang menjadi dasar untuk aturan ditulis (dan dijalankan). Dalam banyak kasus, jenis target adalah alur kerja atau beberapa jenis aktivitas lainnya. Namun, Anda dapat menjalankan RuleSet terhadap jenis .NET apa pun.

Jalur ke berkas assembly dan jenis name are stored with the RuleSet di dalam database, sehingga ketika RuleSet diambil dari database, alat akan mencoba memuat jenis target secara otomatis.

Saat Anda mengklik OK dalam dialog Pemilih Alur Kerja/Tipe , itu memvalidasi jenis yang dipilih terhadap Set Aturan, untuk memastikan bahwa jenis target memiliki semua anggota yang dirujuk oleh aturan. Kesalahan ditampilkan dalam dialog Kesalahan Validasi . Anda dapat memilih untuk melanjutkan perubahan meskipun terjadi kesalahan, atau klik Batal. Dari menu Alat dalam dialog alat utama, Anda dapat mengklik Validasi untuk memvalidasi ulang versi RuleSet terhadap aktivitas target.

Cuplikan layar memperlihatkan dialog Kesalahan Validasi.

Dari menu Data di alat, Anda dapat mengimpor dan mengekspor RuleSets. Saat Anda mengklik Impor, dialog pemilih file muncul, tempat Anda dapat memilih file .rules. Ini mungkin atau mungkin bukan file yang awalnya dibuat di Visual Studio. File .rules harus berisi instans berseri RuleDefinitions yang berisi kumpulan kondisi dan kumpulan RuleSets. Alat ini tidak menggunakan kumpulan kondisi, tetapi menggunakan RuleDefinitions format .rules untuk memungkinkan interaksi dengan lingkungan Visual Studio.

Setelah memilih file .rules, dialog Pemilih Sekumpulan Aturan akan muncul. Anda dapat menggunakan dialog untuk memilih RuleSets dari file yang ingin Anda impor (default menentukan semua RuleSets). RuleSets dalam file .rules tidak memiliki nomor versi, karena penerapan versinya dalam proyek WF sama dengan versi rakitan. Selama proses impor, alat secara otomatis menetapkan nomor versi utama berikutnya yang tersedia (yang dapat Anda ubah setelah mengimpor); Anda dapat melihat nomor versi yang ditetapkan di daftar Pemilih Sekumpulan Aturan .

Untuk setiap RuleSet yang diimpor, alat mencoba menemukan jenis terkait dari folder bin\Debug di bawah lokasi file .rules (jika ada), berdasarkan anggota yang digunakan dalam RuleSet. Jika alat menemukan beberapa jenis yang cocok, alat ini mencoba memilih jenis berdasarkan kecocokan antara nama file .rules dan nama jenis (misalnya, Workflow1 jenisnya sesuai dengan Workflow1.rules). Jika ada beberapa kecocokan, Anda akan diminta untuk memilih jenisnya. Jika mekanisme identifikasi otomatis ini gagal menemukan rakitan atau jenis yang cocok, maka setelah mengimpor, Anda dapat mengklik Telusuri pada dialog alat utama untuk menavigasi ke jenis terkait. Gambar berikut menunjukkan Pemilih Sekumpulan Aturan:

Cuplikan layar memperlihatkan dialog Pemilih Sekumpulan Aturan.

Saat Anda mengklik Ekspor Data dari menu alat utama, dialog Pemilih Sekumpulan Aturan muncul lagi, tempat Anda dapat menentukan RuleSets dari database yang harus diekspor. Saat Anda mengklik OK, dialog Simpan File muncul, di mana Anda dapat menentukan nama dan lokasi file .rules yang dihasilkan. Karena file .rules tidak berisi informasi versi, Anda hanya dapat memilih satu versi RuleSet dengan nama RuleSet tertentu.

Aktivitas PolicyFromService

Kode aktivitas PolicyFromService ini sederhana. Ini berfungsi seperti Policy activity yang disediakan dengan WF, tetapi alih-alih mengambil target RuleSet dari file .rules, ia memanggil layanan host untuk mendapatkan instance RuleSet. Kemudian menjalankan RuleSet terhadap instans aktivitas alur kerja root.

Untuk menggunakan aktivitas dalam alur kerja, tambahkan referensi ke rakitan PolicyActivities dan RuleSetService dari proyek alur kerja Anda. Lihat prosedur di akhir topik ini untuk diskusi tentang cara menambahkan aktivitas ke kotak alat.

Setelah menempatkan aktivitas di alur kerja, Anda harus memberikan nama RuleSet yang akan dijalankan. Anda dapat memasukkan nama sebagai nilai harfiah, atau mengikat variabel alur kerja atau properti aktivitas lain. Secara opsional, Anda dapat memasukkan nomor versi untuk RuleSet tertentu yang harus dijalankan. Jika Anda membiarkan nilai default 0 untuk nomor versi utama dan minor, nomor versi terbaru dalam database secara otomatis disediakan untuk aktivitas tersebut.

Layanan Sekumpulan Aturan

Layanan ini bertanggung jawab untuk mengambil versi RuleSet yang ditentukan dari database dan mengembalikannya ke aktivitas panggilan. Seperti yang dibahas sebelumnya, jika nilai versi utama dan minor yang diteruskan dalam panggilan GetRuleSet keduanya adalah 0, layanan akan mengambil versi terbaru. Pada titik ini, tidak ada pengkekalan definisi atau instans RuleSet; selain itu, tidak ada fitur untuk menandai versi RuleSet sebagai "telah disebarkan" untuk membedakannya dari RuleSet yang sedang dikembangkan.

Database yang akan diakses oleh layanan harus dikonfigurasi pada host menggunakan file konfigurasi aplikasi.

Guna menjalankan alat

  1. Folder yang menyiapkan tabel RuleSet yang digunakan oleh alat dan layanan berisi file Setup.sql. Anda dapat menjalankan file batch Setup.cmd untuk membuat database Aturan di SQL Express dan untuk menyiapkan tabel RuleSet.

  2. Jika Anda mengedit file batch atau Setup.sql dan menentukan untuk tidak menggunakan SQL Express atau menempatkan tabel dalam database bernama sesuatu selain Rules, file konfigurasi aplikasi di alat RuleSet dan UsageSample proyek harus diedit dengan informasi yang sama.

  3. Setelah menjalankan skrip Setup.sql, Anda dapat membangun ExternalRuleSetToolkit solusi lalu meluncurkan alat RuleSet dari proyek ExternalRuleSetTool.

  4. Solusi RuleSetToolkitUsageSample Aplikasi Konsol Alur Kerja Berurutan menyertakan alur kerja sampel. Alur kerja terdiri dari PolicyFromService aktivitas dan dua variabel, orderValue dan discount, tempat RuleSet target berjalan.

  5. Untuk menggunakan sampel, buat solusinya RuleSetToolkitUsageSample . Kemudian dari menu utama alat RuleSet, klik Impor Data dan arahkan ke file DiscountRuleSet.rules di folder RuleSetToolkitUsageSample. Klik opsi menu Simpan-Penyimpanan Aturan untuk menyimpan Sekumpulan Aturan yang diimpor ke database.

  6. Karena rakitan PolicyActivities dirujuk dari proyek alur kerja sampel, aktivitas PolicyFromService muncul di alur kerja. Namun, tidak muncul di kotak alat secara default. Untuk menambahkannya ke kotak alat, lakukan hal berikut:

    • Klik kanan kotak alat dan pilih Pilih Item (ini mungkin memakan waktu cukup lama).

    • Saat dialog Pilih Item Kotak Alat muncul, klik tab Aktivitas .

    • Telusuri ke PolicyActivities rakitan dalam ExternalRuleSetToolkit solusi dan klik Buka.

    • Pastikan bahwa PolicyFromService aktivitas dipilih dalam dialog Pilih Item Kotak Alat lalu klik OK.

    • Aktivitas sekarang akan muncul di kotak alat di kategori Komponen RuleSetToolkitUsageSample .

  7. Layanan RuleSet sudah dikonfigurasi pada host aplikasi konsol menggunakan pernyataan berikut di Program.cs.

    workflowRuntime.AddService(new RuleSetService());
    
  8. Anda juga dapat mengonfigurasi layanan pada host menggunakan file konfigurasi; lihat dokumentasi SDK untuk detailnya.

  9. File konfigurasi aplikasi ditambahkan ke proyek alur kerja untuk menentukan string koneksi untuk database yang akan digunakan oleh layanan. Ini harus berupa string koneksi yang sama yang digunakan oleh alat RuleSet, yang menunjuk ke database yang berisi tabel RuleSet.

  10. Anda sekarang dapat menjalankan RuleSetToolkitUsageSample proyek seperti yang Anda lakukan pada aplikasi konsol alur kerja lainnya. Tekan F5 atau Ctrl+F5 dalam Visual Studio atau jalankan file RuleSetToolkitUsageSample.exe secara langsung.

    Nota

    Anda harus menutup perangkat RuleSet untuk menyusun ulang sampel penggunaan, karena perangkat tersebut memuat rakitan sampel penggunaan.