国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

詳解 VS 2010中WF 4.0的應(yīng)用

2019-11-17 03:49:30
字體:
供稿:網(wǎng)友

本文將為大家介紹的Windows Workflow 4.0在Visual Studio 2010中的相關(guān)應(yīng)用,希望簡短的文章能為大家搞好Workflow 4.0開發(fā)有所幫助。

最近在虛擬機(jī)中安裝了Visual Studio 2010。界面是WPF的,CPU和內(nèi)存占用不是很夸張,打開一個很簡單的附帶的Lab PRoject, CPU使用率一般在20%一下,內(nèi)存使用不到800M。

言歸正傳,還是來介紹Windows Workflow 4.0。

與3.5相比工作流模型有了很大改變和不同。

我們知道3.5中工作流都是托管在WorkflowRuntime中的,通過WorkflowRuntime來創(chuàng)建、執(zhí)行工作流實例;在4.0中沒有WorkflowRuntime類,可以方便的直接創(chuàng)建WorkflowInstance實例和執(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中有一個WorkflowInvoker類,這個類也可以執(zhí)行工作流,只不過這個類是用來測試工作流的,這很大的改進(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是所有活動的基類,要實現(xiàn)自定義活動,只需重寫Activity 的Execute()方法;在4.0中所有的活動都是從抽象類WorkflowElement派生出來的,而且Visual Studio中默認(rèn)自定義活動都是從CodeActivity或CodeActivity<T>繼承的,相似的是也需要重寫Execute()方法,從而實現(xiàn)自定義執(zhí)行邏輯。

public class MyActivity1 : CodeActivity  
  {  
      protected override void Execute(CodeActivityContext context)  
      {  
          //你的實現(xiàn)代碼  
      }  
  }
當(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è)計為具有WCF應(yīng)答功能才行。4.0提供4個與WCF相關(guān)的活動:Receive、ReceiveReply、Send、SendReply,通過這些活動可以可視化定義WCF的服務(wù)操作。

4.0中實現(xiàn)了工作流設(shè)計器的基本模型,可以很容易的實現(xiàn)自定義設(shè)計器。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兰县| 喀喇| 苍山县| 绵阳市| 茌平县| 华安县| 孟村| 新沂市| 江陵县| 肇庆市| 广宁县| 日喀则市| 唐河县| 天门市| 新绛县| 新和县| 华池县| 蓝山县| 肇源县| 中宁县| 东莞市| 扶风县| 明水县| 南充市| 白山市| 淅川县| 台北市| 吐鲁番市| 陇西县| 昌吉市| 日喀则市| 海原县| 沈丘县| 木兰县| 三门县| 枞阳县| 万载县| 浦北县| 江孜县| 江孜县| 翁源县|