本文將為大家介紹的Windows Workflow 4.0在Visual Studio 2010中的相關(guān)應(yīng)用,希望簡短的文章能為大家搞好Workflow 4.0開發(fā)有所幫助。
最近在虛擬機(jī)中安裝了Visual Studio 2010。界面是WPF的,CPU和內(nèi)存占用不是很夸張,打開一個(gè)很簡單的附帶的Lab Project, CPU使用率一般在20%一下,內(nèi)存使用不到800M。
言歸正傳,還是來介紹Windows Workflow 4.0。
與3.5相比工作流模型有了很大改變和不同。
我們知道3.5中工作流都是托管在WorkflowRuntime中的,通過WorkflowRuntime來創(chuàng)建、執(zhí)行工作流實(shí)例;在4.0中沒有WorkflowRuntime類,可以方便的直接創(chuàng)建WorkflowInstance實(shí)例和執(zhí)行工作流。Lab中代碼如下:
WorkflowInstance myInstance = new WorkflowInstance(new SayHello(), new SayHelloInArgs(userName)); myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { Console.WriteLine("*** OnCompleted delegate is running on thread {0} ***", Thread.CurrentThread.ManagedThreadId); SayHelloOutArgs outArgs = new SayHelloOutArgs(e.Outputs); greeting = outArgs.Greeting; syncEvent.Set(); }; myInstance.OnUnhandledException = delegate(WorkflowUnhandledExceptionEventArgs e) { Console.WriteLine(e.UnhandledException.ToString()); return UnhandledExceptionAction.Terminate; }; myInstance.OnAborted = delegate(WorkflowAbortedEventArgs e) { Console.WriteLine(e.Reason); syncEvent.Set(); }; myInstance.Run();
4.0中有一個(gè)WorkflowInvoker類,這個(gè)類也可以執(zhí)行工作流,只不過這個(gè)類是用來測試工作流的,這很大的改進(jìn)了前一版本中工作流難以測試的問題。
[TestMethod] public void ShouldReturnGreetingWithName() { Dictionary<string, object> input = new Dictionary <string, object>() { {"UserName", "Test"} }; IDictionary<string, object> output; output = WorkflowInvoker.Invoke(new SayHello(), input); Assert.AreEqual("Hello, Test from Workflow 4", output["Greeting"]); }
3.5中Activity是所有活動的基類,要實(shí)現(xiàn)自定義活動,只需重寫Activity 的Execute()方法;在4.0中所有的活動都是從抽象類WorkflowElement派生出來的,而且Visual Studio中默認(rèn)自定義活動都是從CodeActivity或CodeActivity<T>繼承的,相似的是也需要重寫Execute()方法,從而實(shí)現(xiàn)自定義執(zhí)行邏輯。
public class MyActivity1 : CodeActivity { protected override void Execute(CodeActivityContext context) { } }
當(dāng)然,你還是可以從Activity派生自定義活動,不過與3.5有很大不同。
public class SayHelloInCode : Activity { protected override WorkflowElement CreateBody() { return new Sequence() { Activities = { new WriteLine() { Text = "Hello Workflow 4 in code" } } }; } }
4.0中新增加的工作流服務(wù)功能,可以直接把工作流發(fā)布為WCF服務(wù),當(dāng)然工作流也必須設(shè)計(jì)為具有WCF應(yīng)答功能才行。4.0提供4個(gè)與WCF相關(guān)的活動:Receive、ReceiveReply、Send、SendReply,通過這些活動可以可視化定義WCF的服務(wù)操作。
4.0中實(shí)現(xiàn)了工作流設(shè)計(jì)器的基本模型,可以很容易的實(shí)現(xiàn)自定義設(shè)計(jì)器。
本文鏈接:http://m.95time.cn/tech/program/2010/7337.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|