Pendahuluan
Dengan menggunakan WWF, Anda dapat membuat alur kerja berbasis Aliran Prosesor dan menyebarkannya di semua jenis aplikasi .NET. Selain itu, artikel ini membahas beberapa masalah unik yang dihadapi oleh pengembang ASP.NET - masalah yang dapat diselesaikan melalui penggunaan alur kerja, seperti mempertahankan status dan navigasi halaman.
Pada bulan September 2005, Microsoft meluncurkan Windows Workflow Foundation (WWF, Windows Workflow Foundation) pada konferensi pengembang profesional dua tahunan. Sebagai salah satu pilar WinFX API, WWF memberi pengembang kerangka umum untuk mengembangkan aplikasi yang digerakkan oleh proses dan berpusat pada alur kerja.
Saat ini, beberapa organisasi mencoba mengotomatiskan seluruh proses bisnis; jawaban standar mereka adalah membentuk tim pengembang untuk mengembangkan kode yang sesuai. Meskipun pendekatan ini berhasil dengan baik pada organisasi-organisasi ini, terdapat beberapa permasalahan yang melekat. Untuk memahami masalah ini secara mendalam, Anda perlu memahami karakteristik dasar alur kerja.
Alur kerja pada dasarnya adalah metode untuk mengarsipkan aktivitas yang terlibat dalam menyelesaikan suatu unit pekerjaan. Biasanya, selama pemrosesan, pekerjaan “mengalir” melalui satu atau lebih aktivitas. Aktivitas ini dapat dilakukan oleh mesin atau manusia, dan mungkin sesederhana menentukan urutan halaman dalam aplikasi Internet, atau rumit seperti mengelola dokumen atau produk yang harus dilihat, diubah, dan disetujui oleh sejumlah orang. kompleks.
Karena begitu banyak alur kerja yang harus melibatkan keterlibatan manusia, penyelesaiannya bisa memakan waktu lama, mulai dari beberapa jam hingga berbulan-bulan atau lebih. Misalnya, orang-orang yang terlibat dalam proses mungkin tidak ada, bukan orang lokal, atau sibuk dengan tugas lain, oleh karena itu, alur kerja harus dapat bertahan selama periode tidak aktif; Selain itu, proses yang diterapkan secara independen melalui pengkodean mungkin sulit dipahami oleh orang non-teknis dan sulit diubah oleh pengembang. Faktor ini dan faktor lainnya merupakan tujuan dari kerangka alur kerja umum seperti Windows WF - yang bertujuan untuk mempermudah pembuatan, perubahan, dan pengelolaan alur kerja - baik dengan menyediakan antarmuka visual atau dengan mendefinisikan serangkaian API umum yang direalisasikan.
Anda dapat menempatkan alur kerja WWF di semua jenis aplikasi .NET - termasuk Windows Forms, aplikasi konsol, layanan Windows, dan aplikasi Web ASP.NET. Setiap jenis memerlukan pertimbangan khusus. Meskipun beberapa contoh yang ada cukup untuk mengilustrasikan cara menghosting alur kerja ke dalam Formulir Windows dan aplikasi konsol, artikel ini akan fokus pada masalah yang dihadapi oleh pengembang ASP.NET yang ingin mengintegrasikan alur kerja ke dalam aplikasi mereka sendiri.
Catatan Penulis: Kode yang disediakan dalam artikel ini dibuat menggunakan Windows WF Beta 1 dan Visual Studio 2005 Beta 2. Anda dapat menemukan informasi tentang menginstal Windows WF di www.windowsworkflow.net . Meskipun artikel ini membahas beberapa dasar-dasar Windows WF, ada sumber daya lain yang tersedia di area ini. Saya berasumsi bahwa pembaca setidaknya mengetahui sedikit tentang Windows WF. Tujuan artikel ini adalah untuk menganalisis Windows WF dan ASP.NET secara mendalam, daripada membahas Windows WF dari tingkat tinggi.
1. Pola Windows WF dan MVC
Saat mengembangkan aplikasi ASP.NET, cara umum Anda menggunakan WWF adalah dengan menerapkan pendekatan model-view-controller (MVC). Intinya, tujuan MVC adalah untuk memisahkan lapisan presentasi, logika aplikasi, dan logika aliran aplikasi.
Memahami hal ini akan sangat bermanfaat ketika mengembangkan aplikasi ASP.NET, harap pertimbangkan tempat alur kerja tiket help desk. Misalnya pengguna bisnis memulai alur kerja ini dengan mengisi formulir Web ASP.NET dan mengklik tombol kirim. Selanjutnya, server memberi tahu karyawan yang menggunakan aplikasi Windows Forms dan Help Desk bahwa "tiket baru telah tersedia". Karyawan pusat bantuan kemudian akan menangani masalah tersebut dan akhirnya menutup tiket. Jika Anda menggunakan Windows WF untuk mengembangkan skenario alur kerja ini, maka semua logika dan alur pemrosesan dapat dimuat dalam alur kerja itu sendiri, dan aplikasi ASP.NET tidak perlu memahami logika ini sama sekali.
Tempat seperti ini memberikan bukti kuat - memisahkan deskripsi dari logika adalah hal yang baik. Karena proses penanganan permintaan meja bantuan ini sangat biasa, jika Anda menggunakan kode C# atau VB.NET untuk mengimplementasikan logika ini di beberapa aplikasi .NET yang berbeda, Anda akan menghadapi risiko duplikasi pengkodean atau lebih buruk lagi --Menggunakan petunjuk kode yang sama sekali berbeda untuk implementasi berbeda dari proses bisnis yang sama. Namun jika Anda menggunakan WWF untuk mengimplementasikan proses ini, pengembang aplikasi yang memerlukan proses ini hanya perlu mengubah langkah-langkah di satu tempat - alur kerja itu sendiri - tanpa harus khawatir mengubah logika aplikasi. Duplikasi kode dan tempat mengimplementasikan proses ini dapat dipermudah melalui penggunaan Windows WF.
Saat mengimplementasikan arsitektur MVC di ASP.NET menggunakan Windows WF, pengembang harus mencoba membangun alur kerja yang independen terhadap aplikasi - sementara alur kerja masih dihosting di dalam aplikasi. Ini akan membantu menjaga logika tetap independen terhadap deskripsi dan menjaga tingkat independensi yang tinggi antara urutan langkah kerja dan alur halaman dalam aplikasi web.
Pengembang WWF baru mungkin mencoba mengembangkan alur kerja dengan jumlah aktivitas tetap dalam urutan tertentu, dan kemudian mengembangkan sekumpulan formulir Web ASP.NET yang mengalir dari satu formulir ke formulir lainnya dalam urutan yang sama. Sayangnya, meskipun tampak logis, hal ini sebenarnya sangat tidak produktif karena Anda akan menerapkan logika alur kerja lagi. Halaman web X tidak perlu mengetahui apakah perlu membuka halaman Y atau halaman Z untuk menerapkan langkah alur kerja ini dengan benar. Sebaliknya, alur kerja (model) harus memberitahu ASP.NET (pengontrol) apa yang harus dilakukan selanjutnya; ASP.NET kemudian harus memutuskan halaman mana yang akan ditampilkan. Dengan cara ini, setiap halaman hampir tidak perlu memahami keseluruhan proses; ia hanya perlu mengetahui cara menyelesaikan aktivitas yang berbeda dan membiarkan alur kerja mengatur bagaimana halaman mengalir dari satu tempat ke tempat lain. Pemisahan ini memberi pengembang banyak fleksibilitas ketika menangani alur halaman. Misalnya, jika Anda memutuskan untuk mengubah urutan halaman yang ditampilkan, Anda dapat dengan mudah melakukannya dari dalam alur kerja tanpa mengubah satu baris kode pun di aplikasi ASP.NET.
2. Contoh alur kerja MVC sederhana
Untuk mengilustrasikan ide ini, saya akan menunjukkan kepada Anda aplikasi dan alur kerja ASP.NET sederhana. Alur kerja yang terlalu disederhanakan ini menjelaskan proses yang mengumpulkan beberapa informasi pribadi dari aplikasi eksternal dan kemudian menampilkannya. Langkah-langkahnya adalah sebagai berikut:
1. Panggil metode - ini berarti meminta nama seseorang; alur kerja ini menggunakan aktivitas InvokeMethod (lihat Gambar 1).
2. Tunggu hingga peristiwa diaktifkan - ini berarti menerima nama; pada langkah ini, alur kerja menggunakan aktivitas EventSink.
3. Dapatkan alamat email dari host menggunakan panggilan serupa.
4. Menunggu suatu acara berarti menerima alamat.
5. Setelah menerima nama dan email, alur kerja memulai aktivitas InvokeMethod untuk mengirimkan informasi pribadi ke aplikasi panggilan. Dalam situasi dunia nyata, langkah terakhir ini tidak terlalu penting. Kemungkinan besar, Anda akan memanggil layanan Web untuk mengirim data ke sistem lain, atau memasukkannya ke dalam database.