Apa yang Baru di Windows Workflow Foundation di .NET Framework 4.5

Windows Workflow Foundation (WF) di .NET Framework 4.5 memperkenalkan banyak fitur baru, seperti aktivitas baru, kemampuan perancang, dan model pengembangan alur kerja. Banyak, tetapi tidak semua, fitur alur kerja baru yang diperkenalkan di .NET Framework 4.5 didukung di perancang alur kerja yang dihosting ulang. Untuk informasi selengkapnya tentang fitur baru yang didukung, lihat Dukungan untuk Fitur Workflow Foundation 4.5 di Perancang Alur Kerja yang Di-hosting ulang. Untuk informasi selengkapnya tentang memigrasikan aplikasi alur kerja .NET Framework 3.0 dan .NET Framework 3.5 untuk menggunakan versi terbaru, lihat Panduan Migrasi. Artikel ini memberikan gambaran umum tentang fitur alur kerja baru yang diperkenalkan di .NET Framework 4.5.

Peringatan

Fitur baru Windows Workflow Foundation yang diperkenalkan di .NET Framework 4.5 tidak tersedia untuk proyek yang menargetkan versi kerangka kerja sebelumnya. Jika proyek yang menargetkan .NET Framework 4.5 ditargetkan ulang ke versi kerangka kerja sebelumnya, beberapa masalah dapat terjadi.

  • Ekspresi C# akan diganti di perancang dengan pesan Nilai diatur dalam XAML.
  • Banyak kesalahan build akan terjadi, termasuk kesalahan berikut.

Format file tidak kompatibel dengan kerangka kerja penargetan saat ini. Untuk mengonversi format file, simpan file secara eksplisit. Pesan kesalahan ini akan hilang setelah Anda menyimpan file dan membuka kembali perancang.

Pembuatan Versi alur kerja

.NET Framework 4.5 memperkenalkan beberapa fitur pembuatan versi baru berdasarkan kelas WorkflowIdentity baru. WorkflowIdentity menyediakan mekanisme bagi pembuat aplikasi alur kerja untuk memetakan instans alur kerja yang bertahan dengan definisinya.

Aktivitas

Pustaka aktivitas bawaan berisi aktivitas baru dan fitur baru untuk aktivitas yang ada.

NoPersist Scope

NoPersistScope adalah aktivitas penampung baru yang mencegah alur kerja tetap ada saat aktivitas turunan NoPersistScope dijalankan. Ini berguna dalam skenario di mana alur kerja tidak sesuai untuk dipertahankan, seperti saat alur kerja menggunakan sumber daya khusus mesin seperti handel file, atau selama transaksi database. Sebelumnya, untuk mencegah terjadinya persistensi selama eksekusi aktivitas, diperlukan NativeActivity khusus yang menggunakan NoPersistHandle.

Kemampuan Diagram Alur Baru

Bagan alur diperbarui untuk .NET Framework 4.5 dan memiliki kemampuan baru berikut ini:

  • Properti DisplayName dari aktivitas FlowSwitch<T> atau FlowDecision dapat diedit. Properti ini akan memungkinkan perancang aktivitas menampilkan lebih banyak informasi tentang tujuan aktivitas.

  • Diagram Alur memiliki properti baru yang disebut ValidateUnconnectedNodes; nilai default untuk properti ini adalah False. Jika properti ini diatur ke True, node diagram alur yang tidak terhubung akan menghasilkan kesalahan validasi.

Dukungan untuk Kepercayaan Parsial

Alur kerja di .NET Framework 4 memerlukan domain aplikasi yang sepenuhnya tepercaya. Di .NET Framework 4.5, alur kerja dapat beroperasi di lingkungan kepercayaan parsial. Dalam lingkungan kepercayaan parsial, komponen pihak ketiga dapat digunakan tanpa memberi mereka akses penuh ke sumber daya host. Beberapa kekhawatiran tentang menjalankan alur kerja dalam kepercayaan parsial adalah sebagai berikut:

  1. Menggunakan komponen lama (termasuk Aturan) yang terdapat dalam aktivitas Interop tidak didukung di bagian kepercayaan parsial.

  2. Menjalankan alur kerja dengan kepercayaan parsial pada WorkflowServiceHost tidak didukung.

  3. Pengecualian yang tetap ada dalam skenario kepercayaan parsial adalah potensi ancaman keamanan. Untuk menonaktifkan pengecualian yang bertahan, ekstensi jenis ExceptionPersistenceExtension harus ditambahkan ke proyek guna menolak pengecualian yang bertahan. Contoh kode berikut menunjukkan cara mengimplementasikan jenis ini.

    public class ExceptionPersistenceExtension
    {
        public ExceptionPersistenceExtension()
        {
            this.PersistExceptions = false;
        }
        public bool PersistExceptions { get; set; }
    }
    

    Jika pengecualian tidak akan diserialisasikan, pastikan pengecualian digunakan dalam NoPersistScope.

  4. Penulis aktivitas harus mengganti CacheMetadata untuk menghindari runtime alur kerja secara otomatis melakukan refleksi terhadap jenis. Argumen dan aktivitas turunan tidak boleh null, dan Bind harus dipanggil secara eksplisit. Untuk informasi selengkapnya tentang mengganti CacheMetadata, lihat Mengekspos data dengan CacheMetadata. Selain itu, instans argumen yang berjenis internal atau privat harus dibuat secara eksplisit di CacheMetadata agar tidak dibuat oleh refleksi.

  5. Jenis tidak akan menggunakan ISerializable atau SerializableAttribute untuk serialisasi; jenis yang akan diserialisasikan harus mendukung DataContractSerializer.

  6. Ekspresi yang menggunakan LambdaValue<TResult> memerlukan RestrictedMemberAccess, dan karenanya tidak akan berfungsi di bagian kepercayaan parsial. Alur kerja yang menggunakan LambdaValue<TResult> harus menggantikan ekspresi tersebut dengan aktivitas yang berasal dari CodeActivity<TResult>. .

  7. Ekspresi tidak dapat dikompilasi menggunakan TextExpressionCompiler atau pengompilasi yang dihosting Visual Basic dalam kepercayaan parsial, tetapi ekspresi yang dikompilasi sebelumnya dapat dijalankan.

  8. Rakitan tunggal yang menggunakan Transparansi Tingkat 2 tidak dapat digunakan di .NET Framework 4, .NET Framework 4.6.1 dalam kepercayaan penuh, dan .NET Framework 4.6.1 dalam kepercayaan parsial.

Kemampuan Perancang Baru

Pencarian Perancang

Untuk membuat alur kerja yang lebih besar lebih mudah dikelola, alur kerja sekarang dapat dicari dengan kata kunci. Fitur ini hanya tersedia di Visual Studio; fitur ini tidak tersedia di perancang yang dihosting ulang. Ada dua jenis pencarian yang tersedia:

  • Pencarian Cepat, dimulai dengan Ctrl+F atau Edit, Cari dan Ganti, Pencarian Cepat.

  • Cari di File, dimulai dengan Ctrl+Shift+F atau Edit, Cari dan Ganti, Cari di File.

Perhatikan bahwa Ganti tidak didukung.

Pencarian Cepat

Kata kunci yang dicari dalam alur kerja akan cocok dengan item perancang berikut:

Pencarian Cepat dilakukan pada pohon ModelItem perancang. Pencarian Cepat tidak akan menemukan namespace yang diimpor dalam definisi alur kerja.

Temukan di File

Kata kunci yang dicari dalam alur kerja akan cocok dengan konten sebenarnya dari file alur kerja. Hasil pencarian akan ditampilkan di panel tampilan Hasil Pencarian Visual Studio. Mengeklik dua kali item hasil akan menavigasi ke aktivitas yang berisi kecocokan dalam perancang alur kerja.

Menghapus item menu konteks dalam variabel dan perancang argumen

Di .NET Framework 4, variabel dan argumen hanya bisa dihapus di perancang menggunakan keyboard. Mulai dari .NET Framework 4.5, variabel dan argumen dapat dihapus menggunakan menu konteks.

Cuplikan layar berikut menunjukkan menu konteks perancang variabel dan argumen.

Menu Konteks Variabel dan Desainer Argumen

Mengelilingi otomatis dengan Urutan

Karena alur kerja atau aktivitas penampung tertentu (seperti NoPersistScope) hanya dapat berisi satu aktivitas isi, menambahkan aktivitas kedua mengharuskan pengembang menghapus aktivitas pertama, menambahkan aktivitas Sequence, lalu menambahkan kedua aktivitas ke urutan aktivitas. Mulai dari .NET Framework 4.5, saat menambahkan aktivitas kedua ke permukaan perancang, aktivitas Sequence akan dibuat secara otomatis untuk membungkus kedua aktivitas.

Cuplikan layar berikut menunjukkan aktivitas WriteLine di Body dari NoPersistScope.

Aktivitas WriteLine di Isi aktivitas NoPersistScope.

Cuplikan layar berikut menunjukkan aktivitas Sequence yang dibuat secara otomatis di Body saat WriteLine kedua dihilangkan di bawah yang pertama.

Urutan yang dibuat secara otomatis di Isi NoPersistScope.

Mode Sentuhan Searah

Untuk lebih mudah menavigasi alur kerja besar di perancang, mode sentuhan searah dapat diaktifkan, yang memungkinkan pengembang mengeklik dan menyeret untuk memindahkan bagian alur kerja yang terlihat, bukan menggunakan bilah gulir. Tombol untuk mengaktifkan mode sentuhan searah ada di sudut kanan bawah perancang.

Cuplikan layar berikut menunjukkan tombol sentuhan searah yang terletak di sudut kanan bawah perancang alur kerja.

Tombol geser disorot dalam perancang alur kerja.

Tombol tengah mouse atau spasi juga dapat digunakan untuk menyentuh searah perancang alur kerja.

Memilih beberapa

Beberapa aktivitas dapat dipilih sekaligus, baik dengan menyeret persegi panjang di sekelilingnya (saat mode sentuhan searah tidak diaktifkan), atau dengan menahan Ctrl dan klik aktivitas yang diinginkan satu per satu.

Beberapa pilihan aktivitas juga dapat diseret dan dihilangkan dalam perancang, dan juga dapat berinteraksi dengan menggunakan menu konteks.

Tampilan kerangka item alur kerja

Untuk membuat alur kerja hierarkis lebih mudah dinavigasi, komponen alur kerja ditampilkan dalam tampilan kerangka gaya pohon. Tampilan kerangka ditampilkan dalam tampilan Kerangka Dokumen. Untuk membuka tampilan ini, dari menu atas, pilih Tampilan, Jendela Lain, Kerangka Dokumen, atau tekan Ctrl W,U. Mengeklik node dalam tampilan kerangka akan membuka aktivitas yang sesuai dalam perancang alur kerja, dan tampilan kerangka akan diperbarui untuk menampilkan aktivitas yang dipilih di perancang.

Cuplikan layar berikut dari alur kerja yang telah diselesaikan dari Tutorial Memulai menunjukkan tampilan kerangka dengan alur kerja berurutan.

Cuplikan layar tampilan kerangka dengan alur kerja berurutan di Visual Studio.

Ekspresi C#

Sebelum .NET Framework 4.5, semua ekspresi dalam alur kerja hanya dapat ditulis dalam Visual Basic. Di .NET Framework 4.5, ekspresi Visual Basic hanya digunakan untuk proyek yang dibuat menggunakan Visual Basic. Proyek Visual C# sekarang menggunakan C# untuk ekspresi. Editor ekspresi C# yang berfungsi sepenuhnya dilengkapi dengan kemampuan seperti penyorotan tata bahasa dan inteigensi. Proyek alur kerja C# yang dibuat di versi sebelumnya yang menggunakan ekspresi Visual Basic akan tetap berfungsi.

Ekspresi C# divalidasi pada waktu desain. Kesalahan dalam ekspresi C# akan ditandai dengan garis bawah bergelombang merah.

Untuk informasi selengkapnya tentang ekspresi C#, lihat Ekspresi C#.

Kontrol lebih besar terhadap visibilitas bilah shell dan item header

Di perancang yang dihosting ulang, beberapa kontrol UI standar mungkin tidak memiliki arti untuk alur kerja tertentu, dan dapat dinonaktifkan. Di .NET Framework 4, penyesuaian ini hanya didukung oleh bilah shell di bagian bawah perancang. Di .NET Framework 4.5, visibilitas item header shell di bagian atas perancang dapat disesuaikan dengan mengatur WorkflowShellHeaderItemsVisibility dengan nilai ShellHeaderItemsVisibility yang sesuai.

Hubungkan otomatis dan sisipkan otomatis dalam alur kerja Diagram Alur dan Mesin Status

Di .NET Framework 4, koneksi antar node dalam alur kerja Diagram Alur harus ditambahkan secara manual. Di .NET Framework 4.5, Diagram Alur dan node Mesin Status memiliki titik sambung otomatis yang menjadi terlihat saat aktivitas diseret dari kotak alat ke permukaan perancang. Menghilangkan aktivitas di salah satu titik ini akan secara otomatis menambahkan aktivitas bersama dengan koneksi yang diperlukan.

Cuplikan layar berikut menunjukkan titik lampiran yang menjadi terlihat saat aktivitas diseret dari kotak alat.

Simpul mulai diagram alur memperlihatkan titik sambungkan otomatis

Aktivitas juga dapat diseret ke koneksi antara node diagram alur dan status untuk menyisipkan node secara otomatis di antara dua node lainnya. Cuplikan layar berikut menunjukkan garis penghubung yang disorot tempat aktivitas dapat diseret dari kotak alat dan dihilangkan.

Handel penyisipan otomatis untuk aktivitas penghilangan

Anotasi Perancang

Untuk memfasilitasi pengembangan alur kerja yang lebih besar, perancang sekarang mendukung penambahan anotasi untuk membantu melacak proses desain. Anotasi dapat ditambahkan ke aktivitas, status, node diagram alur, variabel, dan argumen. Cuplikan layar berikut menunjukkan menu konteks yang digunakan untuk menambahkan anotasi ke perancang.

Cuplikan layar memperlihatkan menu untuk menambahkan anotasi.

Status penelusuran kesalahan

Di .NET Framework 4, elemen non-aktivitas tidak dapat mendukung titik henti debug karena bukan merupakan unit eksekusi. Rilis ini menyediakan mekanisme untuk menambahkan titik henti sementara ke objek State. Saat titik henti diatur pada State, eksekusi akan berhenti saat status dialihkan, sebelum aktivitas entri atau pemicunya dijadwalkan.

Menentukan dan menggunakan objek ActivityDelegate di perancang

Aktivitas di .NET Framework 4 menggunakan objek ActivityDelegate untuk mengekspos titik eksekusi tempat bagian lain dari alur kerja dapat berinteraksi dengan eksekusi alur kerja, tetapi menggunakan titik eksekusi ini biasanya memerlukan kode dalam jumlah yang mencukupi. Dalam rilis ini, pengembang dapat menentukan dan menggunakan delegasi aktivitas menggunakan perancang alur kerja. Untuk informasi selengkapnya, lihat Cara: Menentukan dan menggunakan delegasi aktivitas di Perancang Alur Kerja.

Validasi waktu pembuatan

Di .NET Framework 4, kesalahan validasi alur kerja tidak dihitung sebagai kesalahan pembuatan selama pembuatan proyek alur kerja. Ini berarti bahwa membuat proyek alur kerja dapat berhasil bahkan ketika ada kesalahan validasi alur kerja. Di .NET Framework 4.5, kesalahan validasi alur kerja menyebabkan pembuatan gagal.

Validasi latar belakang waktu desain

Di .NET Framework 4, alur kerja divalidasi sebagai proses latar depan, yang berpotensi memblokir UI selama proses validasi yang kompleks atau memakan waktu. Validasi alur kerja sekarang berlangsung di utas latar belakang, sehingga UI tidak diblokir.

Lihat status yang terletak di lokasi terpisah dalam file XAML

Di .NET Framework 4, informasi status tampilan untuk alur kerja disimpan di seluruh file XAML di banyak lokasi berbeda. Ini merepotkan bagi pengembang yang ingin membaca XAML secara langsung, atau menulis kode untuk menghapus informasi status tampilan. Di .NET Framework 4.5, informasi status tampilan dalam file XAML diserialisasikan sebagai elemen terpisah dalam file XAML. Pengembang dapat dengan mudah menemukan dan mengedit informasi status tampilan suatu aktivitas, atau menghapus status tampilan sepenuhnya.

Ekstensibilitas ekspresi

Di .NET Framework 4.5, kami menyediakan cara bagi pengembang untuk membuat ekspresi mereka sendiri dan pengalaman penulisan ekspresi yang dapat dicolokkan ke perancang alur kerja.

Keikutsertaan dalam fitur Workflow 4.5 di perancang yang dihosting ulang

Untuk mempertahankan kompatibilitas mundur, beberapa fitur baru yang disertakan dalam .NET Framework 4.5 tidak diaktifkan secara default di perancang yang dihosting ulang. Ini untuk memastikan bahwa aplikasi yang ada yang menggunakan perancang yang dihosting ulang tidak rusak dengan memperbarui ke versi terbaru. Untuk mengaktifkan fitur baru di perancang yang dihosting ulang, atur TargetFrameworkName ke ".NET Framework 4.5", atau atur anggota individu DesignerConfigurationService untuk mengaktifkan fitur individu.

Model Pengembangan Alur Kerja Baru

Selain diagram alur dan model pengembangan alur kerja berurutan, rilis ini mencakup alur kerja Mesin Status, dan layanan alur kerja kontrak pertama.

Alur kerja mesin status

Alur kerja mesin status diperkenalkan sebagai bagian dari .NET Framework 4, versi 4.0.1 di Microsoft .NET Framework 4 Platform Update 1. Pembaruan ini mencakup beberapa kelas dan aktivitas baru yang memungkinkan pengembang membuat alur kerja mesin status. Kelas dan aktivitas ini telah diperbarui untuk .NET Framework 4.5. Pembaruan meliputi:

  1. Kemampuan untuk mengatur titik henti pada status

  2. Kemampuan untuk menyalin dan menempelkan transisi di perancang alur kerja

  3. Dukungan perancang untuk pembuatan transisi pemicu bersama

  4. Aktivitas yang digunakan untuk membuat alur kerja Mesin Status, termasuk: StateMachine, State, dan Transition

Cuplikan layar berikut menunjukkan alur kerja mesin status yang telah selesai dari langkah Tutorial MemulaiCara: Membuat Alur Kerja Mesin Status.

Ilustrasi yang memperlihatkan alur kerja mesin status yang telah selesai.

Untuk informasi selengkapnya tentang membuat alur kerja mesin status, lihat Alur Kerja Mesin Status.

Pengembangan alur kerja kontrak-pertama

Alat pengembangan alur kerja kontrak-pertama memungkinkan pengembang untuk merancang kontrak dalam kode terlebih dahulu, kemudian, dengan beberapa klik di Visual Studio, secara otomatis menghasilkan template aktivitas di kotak alat yang mewakili setiap operasi. Aktivitas ini kemudian digunakan untuk membuat alur kerja yang mengimplementasikan operasi yang ditentukan oleh kontrak. Perancang alur kerja akan memvalidasi layanan alur kerja untuk memastikan bahwa operasi ini diterapkan dan tanda tangan alur kerja cocok dengan tanda tangan kontrak. Pengembang juga dapat mengaitkan layanan alur kerja dengan kumpulan kontrak yang diterapkan. Untuk informasi selengkapnya tentang pengembangan layanan alur kerja kontrak pertama, lihat Cara: Membuat layanan alur kerja yang menggunakan kontrak layanan yang ada.