程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 詳解 VS 2010中WF 4.0的應用

詳解 VS 2010中WF 4.0的應用

編輯:.NET實例教程

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

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

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

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

我們知道3.5中工作流都是托管在WorkflowRuntime中的,通過WorkflowRuntime來創建、執行工作流實例;在4.0中沒有WorkflowRuntime類,可以方便的直接創建WorkflowInstance實例和執行工作流。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();   
   &n
bsp;         };   
             myInstance.Run(); 
4.0中有一個WorkflowInvoker類,這個類也可以執行工作流,只不過這個類是用來測試工作流的,這很大的改進了前一版本中工作流難以測試的問題。

[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是所有活動的基類,要實現自定義活動,只需重寫Activity 的Execute()方法;在4.0中所有的活動都是從抽象類WorkflowElement派生出來的,而且Visual Studio中默認自定義活動都是從CodeActivity或CodeActivity<T>繼承的,相似的是也需要重寫Execute()方法,從而實現自定義執行邏輯。

public class MyActivity1 : CodeActivity   
  {   
      protected override void Execute(CodeActivityContext context)   
      {   
          //你的實現代碼   
      }   
  } 
當然,你還是可以從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中新增加的工作流服務功能,可以直接把工作流發布為WCF服務,當然工作流也必須設計為具有WCF應答功能才行。4.0提供4個與WCF相關的活動:Receive、ReceiveReply、Send、SendReply,通過這些活動可以可視化定義WCF的服務操作。

4.0中實現了工作流設計器的基本模型,可以很容易的實現自定義設計器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved