WF学习日记(一)
一、什么是WF
WF:Windows Workflow Foundation的缩写,是微软为Windows平台开发工作流应用程序的一个模块、引擎和工具,它包括了Runtime Service (运行时服务)、 Runtime Engine (运行时引擎) 和 Base Activity Library(基础Activity 库)。(具体说明参考MSDNhttp://msdn.microsoft.com/zh-cn/library/ms734631.aspx)
Workflows是Activity的集合,是寄宿于宿主(进程)的应用,而Activity可以理解为一个类库,允许开发人员自行构建,其中的属性、事件供Workflows调用。
二、WF的Workflow模型
1.Sequential 顺序模型:流程按照预先定义好的顺序执行。
2.State Machine 状态机模型:以事件为驱动,使流程本身转换成不同的状态,而每个状态也有其转变范围和事件。
两种模型可以各自独立运行,也可以互相包含。
三、创建一个简单的 Hello World 程序
1.新建一个Workflow工程,选择 Sequential Workflow Console Application 顺序工作流控制台程序
2.双击Workflow1.cs 可以看到一个类型UML的界面(仅仅是类似)
3.从工具栏中拖一个CODE到 Drop Activities to create a Sequential Workflow (人家已经说的很清楚了)
4.双击codeActivity1,可以发现生成了其执行事件,我们在其中自定义一个名叫Message的属性(一定要是属性,否则后面Workflow会找不到),在刚生成的事件中键入 Console.WriteLine(Message);
5.在工程中找到Program.cs双击打开,这是个简单的控制台程序,我们对Workflow的调用就全在using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()){....} 块中了。为了调用Workflow中我们刚定的Message属性,我们定义一个 Dictionary<string,object>myArgs = new Dictionary<string,object>();用来传值,string为属性名,object为值,此处就传入"Hello World"吧........
6.编译运行
CODE:
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(WFSeqDemo.Workflow1));
Dictionary<string,object>myArgs = new Dictionary<string,object>();
myArgs.Add("Message", "Hello World");
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WFSeqDemo.Workflow1), myArgs);
instance.Start();
waitHandle.WaitOne();
}