技术开发 频道

简单对比微软WorkFlow3.5与4.0四大差异

  可以看到,对于类文件、命名空间的引用,xml使用的schema限定等都在WorkFlow1.xaml中进行了描述。

  .NET3.5中Program.cs中代码如下:

class Program

{

static void Main(
string[] args)

{

using (WorkflowRuntime workflowRuntime
= new WorkflowRuntime())

{

AutoResetEvent waitHandle
= new AutoResetEvent(false);

workflowRuntime.WorkflowCompleted
+= delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };

workflowRuntime.WorkflowTerminated
+= delegate(object sender, WorkflowTerminatedEventArgs e)

{

Console.WriteLine(e.Exception.Message);

waitHandle.Set();

};



WorkflowInstance instance
= workflowRuntime.CreateWorkflow(typeof(WFSequenceTest.Workflow1));

instance.Start();



waitHandle.WaitOne();

}

}

}

   代码中对流程实例完成、流程实例终止进行了事件的处理,然后通过用户定义的Workflow1创建WorkflowInstance,调用instance.Start()开始执行流程。

  .NET4.0中Program.cs代码如下:

class Program

{

static void Main(
string[] args)

{

WorkflowInvoker.Invoke(
new Workflow1());

}

}

   代码中创建了一个Workflow1的实例,然后通过WorkflowInvoker.Invoke来开始执行流程。

  通过对比不难发现,4.0的流程创建执行更简洁,也更符合思维习惯。以请假流程为例,请假人首先会填写个请假条,然后报领导审批就是;用工作流来描述这个过程就是,首先定义个请假流程,包括请假发起环节和请假审批环节,流程定义好之后,谁想请假了,填写请假表单,提交到领导审批环节即可;如果用程序来描述那就是设计一个请假流程(类、xaml等),创建实例并执行。我们很有可能会忘记一些事件的定制,然而有些情况下这往往会导致流程出现一些问题,例如3.5中我们需要定制两个事件,创建并开始流程实例的代码也比较繁琐。

  总起来说4.0更灵活,更全面,更符合发展趋势。

  文章比较浅,希望大家能通过这篇文章对3.0和4.0Workflow之间的不同有个感性的认识。

0
相关文章