WorkflowInvoker,WorkflowApplication和WorkflowServiceHost
WF4.0中提供了3中不同的方式来管理/托管工作流实例。
WorkflowInvoker
提供了一种调用Workflow的快速通道WorkflowInvoker。可以直接通过调用静态方法Invoke来执行一个工作流
可以像执行一个函数一样运行一个工作流。
优点:简单
缺点:在工作流执行过程中,如果和工作流实例进行数据交换
代码:
WorkflowInvoker.Invoke(new Workflow1());
WorkflowApplication
可以控制工作流实例长时间运行,可以在运行过程中和实例进行数据交换。但是只能执行一个的工作流实例。
优点:
支持持久化,可以对实例进行控制,可以通过Bookmark来控制实例或交换数据。
应用例子:
使用工作流辅助建立一个向导的UI程序。
代码:
WorkflowApplication instance = new WorkflowApplication(new Workflow1());
instance.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
Console.WriteLine("workflow completed, Id = " + instance.Id);
};
instance.Run();
//....
instance.ResumeBookmark("Submit", data);
WorkflowServiceHost是一个最主要的工作流主机类。可以同时管理多个工作流实例,同时控制实例的激活等操作。支持WCF,和3.5相比有更强大的消息关联功能。当然WorkflowServiceHost也支持持久化(Persistence)和跟踪(Tracking)等功能。