WEB开发网
开发学院软件开发C语言 WF4.0 Beta1之旅:基本介绍 阅读

WF4.0 Beta1之旅:基本介绍

 2010-10-01 08:29:29 来源:WEB开发网   
核心提示: 参数中有一个很重要的属性Direction,有In,WF4.0 Beta1之旅:基本介绍(4),Out,In/Out,Propery四个值,新增了WorkflowInvoker类来调用工作流,增加WF的可测试,如下图:图片看不清楚?请点击这里查看原图(大图),然后我们来设置Greeting 输出

参数中有一个很重要的属性Direction,有In,Out,In/Out,Propery四个值。如下图:

WF4.0 Beta1之旅(1):基本介绍

图片看不清楚?请点击这里查看原图(大图)。

然后我们来设置Greeting 输出参数的返回值,我们使用WF本身提供的Assign活动来实现,我们拖一个该活动,然后将To设置为Greeting,设置Value为“Hello World”+UserName,如下图:

WF4.0 Beta1之旅(1):基本介绍

在这里插一下,在工作流设计器中你双击任意一个活动,设计器会"drill into"该活动,左上角有导航如下图:

WF4.0 Beta1之旅(1):基本介绍

2.下面是宿主程序,在宿主程序中我们使用WorkflowInstance的一个重载传入输入参数,在OnCompleted中得到工作流的输出参数。

static void Main(string[] args)
{
   AutoResetEvent syncEvent = new AutoResetEvent(false);      
   Console.WriteLine("Main() is running on thread{0}",Thread.CurrentThread.ManagedThreadId);
   Console.Write("Enter you name:");
   string userName = Console.ReadLine();
   string greeting = null;
   Dictionary<string, object> input = new Dictionary<string, object>();
   input.Add("UserName", userName);
   
   WorkflowInstance myInstance = new WorkflowInstance(new WorkflowConsoleApplication2.Sequence1(),input);

   myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) 
   {
     Console.WriteLine("OnCompleted is running on thread{0}",Thread.CurrentThread.ManagedThreadId);        
    greeting = e.Outputs["Greeting"].ToString();
     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();
   syncEvent.WaitOne();
   Console.WriteLine(greeting);

}

 

四:可测试性

1.微软最近发布的ASP.NET MVC中很大程度是给开发者提供了强大的单元测试的支持,WF4.0 Beta1也对单元测试提供了增强。新增了WorkflowInvoker类来调用工作流,增加WF的可测试。下面是对上面程序的测试代码:

[TestMethod]
public void TestHelloWorld()
{
  Dictionary<string, object> input = new Dictionary<string, object>()
  {
    {"UserName","Cary"}
  };
  IDictionary<string, object> output;
  output = WorkflowInvoker.Invoke(new WorkflowConsoleApplication2.Sequence1(), input);
  Assert.AreEqual("Hello Workflow,Cary", output["Greeting"]);
}

好了这次就简单到这里吧!

上一页  1 2 3 4 

Tags:WF 之旅

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接