1、安装Windows Workflow Foundation。
目前微软发布的最新版本为:Visual Studio 2005 Extensions for Windows Workflow Foundation Beta 1.2.exe。
微软的WebCast课堂讲师说要先安装 WWF,然后安装 VS2005,才能够正常使用Workflow Foundation,如果流程相反,VS 2005将不能够创建项目。我也遇到了这个问题,但还好,只是无法创建Workflow的Project,因为新建项目中根本就没有WWF项目,其他的项目还能够正常使用,经查找,是WWF的Project Templates以及 Item Templates没有被注册到VS 2005中。
解决方法:
首先,进入VS.net2005的安装目录下的:/Common7/IDE/ProjectTemplates/CSharp
然后,复制整个workflow文件夹
再次,进入 c:(系统盘符:)/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Templates/ProjectTemplates/visual c#/,粘贴workflow文件夹
找到Workflow 模版所在位置:
D:/Program Files/Microsoft Visual Studio 8/Common7/IDE/ProjectTemplates/CSharp/Workflow/1033
D:/Program Files/Microsoft Visual Studio 8/Common7/IDE/ItemTemplates/CSharp/1033
打开VS 2005 工具菜单中的选项,如下图:
将用户模版的位置指定到Workflow模版的目录上,新建,可以看到Workflow项目了。
2、Simple Sequential Workflow
成功安装WWF后,在其帮助文档中,我们可以找到 Windows Workflow Foundation Simples,这里面是微软为开发者提供的Simples,几乎涵盖了WWF中的各种技术的应用,就连微软WebCast讲师所使用的DEMO也是源于这里。
先从简单的学起:Sequential Workflow
这是一个只采用了一个IfElse Activity的工作流,很简单只有一个选择路径。
很可惜这个例子中的设计代码和程序代码并没有分离。
运行Workflow::
看看Workflow是怎样启动的
static AutoResetEvent waitHandle = new AutoResetEvent(false); //控制线程用 static void Main (string[] args) { //首先建立一个WorkflowRuntime 对象 WorkflowRuntime workflowRuntime = new WorkflowRuntime(); Console.WriteLine("Runtime Started."); //获取这个事例中workflow的类型type Type type = typeof(SimpleSequentialWorkflow); // 添加一个事件,当workflow运行后执行 workflowRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(OnWorkflowCompleted); // 启动这个workflow workflowRuntime.StartWorkflow(type); Console.WriteLine("Workflow Started."); // 停止这个线程,直至WorkflowCompleted时,启动 waitHandle.WaitOne(); Console.WriteLine("Program Complete."); } static void OnWorkflowCompleted(object sender, WorkflowCompletedEventArgs instance) { MessageBox.Show("workflowRuntime Complete."); waitHandle.Set(); } |
IfElse Activity 一个非常重要的属性Condition,这个属性确定了if else 最后返回的结果是什么。
3、Simple State Machine
Sequential Workflow 是按照某种顺序的流程进行工作的,State Machine 则是根据每个Activity 的状态决定是否执行下一个Activty。如,审批流程中,如果Activity的状态值为0或1,1代表同意,0代表不同意,如果是1执行下一个Activity,如果是0返回。
这个事例中有3个State Activity,对一个state machine workflow 而言必须有一个InitialState 和CompletedState,以表明行为从哪里开始,到哪里结束。对State Activity而言,执行具体的行为,需要在该对象中,添加Event Driven对象,用于驱动这个状态行为,双击EventDriven对象进入到一个状态行为的具体设计流程中,如下图
对于一个状态行为内部流程,我们可以象执行Sequential流程那样定义,最后用Set State对象结尾,Set State 对象的TargetState属性用于表明,由该状态行为中跳出,跳转到TargetState指定的对象。
最后,重新打开visual studio2005 IDE,在新建项目是就可以看到workflow选项!
WWF需要SQLServer2000 SP4或者SQLServer2005。