Artikel ini akan memperkenalkan Anda pada aplikasi terkait Windows Workflow 4.0 di Visual Studio 2010. Saya harap artikel singkat ini dapat membantu Anda mengembangkan Workflow 4.0.
Visual Studio 2010 yang baru diinstal di mesin virtual. Antarmukanya adalah WPF, dan penggunaan CPU serta memori tidak berlebihan. Saat Anda membuka Proyek Lab terlampir yang sangat sederhana, penggunaan CPU umumnya kurang dari 20%, dan penggunaan memori kurang dari 800 juta.
Lebih dekat ke rumah, mari perkenalkan Windows Workflow 4.0.
Model alur kerja telah banyak berubah dibandingkan dengan 3.5.
Kita tahu bahwa alur kerja di 3.5 dihosting di WorkflowRuntime, dan instans alur kerja dibuat dan dieksekusi melalui WorkflowRuntime; tidak ada kelas WorkflowRuntime di 4.0, sehingga Anda dapat dengan mudah membuat instans WorkflowInstance dan menjalankan alur kerja secara langsung. Kode di Lab adalah sebagai berikut:
WorkflowInstance myInstance = WorkflowInstance baru(SayHellobaru(),
new SayHelloInArgs(Namapengguna));
myInstance.OnCompleted = delegasi(WorkflowCompletedEventArgs e)
{
Console.WriteLine("*** Delegasi OnCompleted sedang berjalan di thread {0} ***",
Thread.CurrentThread.ManagedThreadId);
SayHelloOutArgs outArgs = new SayHelloOutArgs(e.Output);
salam = keluarArgs.Salam;
syncEvent.Set();
};
myInstance.OnUnhandledException = delegasi(WorkflowUnhandledExceptionEventArgs e)
{
Konsol.WriteLine(e.UnhandledException.ToString());
kembalikan UnhandledExceptionAction.Terminate;
};
myInstance.OnAborted = delegasi(WorkflowAbortedEventArgs e)
{
Console.WriteLine(e.Alasan);
syncEvent.Set();
};
myInstance.Jalankan();
Ada kelas WorkflowInvoker di 4.0. Kelas ini juga dapat menjalankan alur kerja, tetapi kelas ini digunakan untuk menguji alur kerja. Ini sangat meningkatkan kesulitan pengujian alur kerja di versi sebelumnya.
[Metode Tes]
kekosongan publik ShouldReturnGreetingWithName()
{
Kamus<string, objek> input = Kamus baru
<string, objek>()
{
{"Nama Pengguna", "Uji"}
};
IDictionary<string, objek> keluaran;
keluaran = WorkflowInvoker.Invoke(SayHello baru(), masukan);
Assert.AreEqual("Halo, Uji dari Alur Kerja 4", output["Salam"]);
}
Aktivitas di 3.5 adalah kelas dasar dari semua aktivitas. Untuk mengimplementasikan aktivitas kustom, Anda hanya perlu mengganti metode Execute() Aktivitas di 4.0, semua aktivitas berasal dari kelas abstrak WorkflowElement, dan dikustomisasi secara default di Visual Studio . Aktivitas diwarisi dari CodeActivity atau CodeActivity<T>. Demikian pula, metode Execute() juga perlu ditulis ulang untuk mengimplementasikan logika eksekusi khusus.
kelas publik MyActivity1 : CodeActivity
{
override yang dilindungi void Execute (konteks CodeActivityContext)
{
//kode implementasi Anda
}
}
Tentu saja, Anda masih dapat memperoleh aktivitas khusus dari Aktivitas, namun ini sangat berbeda dengan 3.5.
kelas publik SayHelloInCode : Aktivitas
{
penggantian yang dilindungi WorkflowElement CreateBody()
{
kembalikan Urutan baru()
{
Kegiatan =
{
barisTulis baru()
{
Teks = "Halo Alur Kerja 4 dalam kode"
}
}
};
}
}
Fungsi layanan alur kerja yang baru ditambahkan di 4.0 dapat langsung mempublikasikan alur kerja sebagai layanan WCF. Tentu saja, alur kerja tersebut juga harus dirancang dengan fungsi respons WCF. 4.0 menyediakan empat aktivitas terkait WCF: Menerima, Menerima Balasan, Mengirim, dan Mengirim Balasan. Melalui aktivitas ini, operasi layanan WCF dapat didefinisikan secara visual.
Model dasar perancang alur kerja diimplementasikan di 4.0, dan perancang khusus dapat dengan mudah diimplementasikan.