详解Visual Studio 2010中WF 4.0的应用

日期: 2010-01-14 作者:天域小筑 来源:TechTarget中国 英文

    本文将为大家介绍的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();
               }; 
              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中实现了工作流设计器的基本模型,可以很容易的实现自定义设计器。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • API创建影响生产的六个方面

    在API创建方面,简单性至关重要。AnyPresence的Vivek Gupta讨论了开发者可以从6个方面处理好API的创建问题,从而加速API生产。

  • 微服务:是谁看上了这块小鲜肉

    微服务——IT领域的又一个新名词。但它是否能如同OpenStack,如同Docker那样成为众人疯抢的“肥肉”呢?从目前来看,可能还没有到达疯抢的地步,但也不乏支持者。

  • 应用开发工具帮助报社与时俱进

    新闻媒体业务要一直向顶尖技术看齐,如果他们想要打败竞争对手,成为社会的脉搏的话。心态一直是最重要的,无论是在收集和报道新闻方面,还是在内部运营方法。

  • 为移动工作者赋权构建API及工作流的步骤

    主管不能简单地把移动工作者认为是不坐在一起的人。相反,赋权要从评估员工需求开始,因为接下来关键的速度爆发当然就必须来自于移动设备和宽带服务的利用。