Windows Workflow Foundation Entry

把知道的都告诉别人,不断地琢磨别人不知道什么,只要先一分钟知道就行了,知识和经验根本就存不住。
MSN群:cnedn.net@hotmail.com(VS.Net SQL 开发交流)cnedn.wf@hotmail.com (Windows Workflow Foundation 开发交流)cnedn@hotmail.com(工作流经验交流)

博客园 首页 新随笔 联系 订阅 管理
        在这个练习中,我们将以练习1的 HelloWorldWorkflow 工作流项目为基础,实现在工作流运行时,通过宿主程序向工作流传递参数。在本练习中我们将修改工作流的 Code  活动,使其向用户显示传入的参数;最后,我们修改启动项目(宿主程序),使其运行时显示一个窗体,实现用户参数的输入,最后运行一个工作流实例。
        本练习共包括三个任务:
        1、为工作流定义参数;
        2、修改code 活动;
        3、调试运行修改后的工作流项目;
注:本练习是完全手动建立,因此与英文说明不完全相同

        1、为工作流定义参数。
        1.1、打开练习1建立的 HelloWorldWorkflow  工作流项目;
        1.2、在解决方案中选择流程图文件 Workflow1.xoml ,单击右键选择[View Code]菜单,进入
Workflow1 类的代码视图,建立如下两个属性定义;

        private string firstName;

        
public string FirstName
        
{
            
get return firstName; }
            
set { firstName = value; }
        }


        
private string lastName;

        
public string LastName
        
{
            
get return lastName; }
            
set { lastName = value; }
        }
编译解决方案,通过完成下一个任务
        2、修改code 活动;由于我们的工作流应用程序要通过 MessageBox 向用户显示信息,所以我们必须先
在工作流项目添加对  System.Windows.Forms  的引用。
        2.1、为工作流项目添加 System.Windows.Forms 引用;
        2.2、进入工作流 Workflow1.xoml 的代码视图,定位到方法:codeActivity1_CodeHandler,并修改
代码:
        private void codeActivity1_CodeHandler(object sender, EventArgs e)
        
{
            
//Console.WriteLine("Hello, World!");
            System.Windows.Forms.MessageBox.Show("Hello world: " + firstName + " " + lastName);

        }
        编译解决方案,通过完成下一个任务
        3、调试运行修改后的工作流项目。现在工作流项目已经修改完了,下一步要做的工作是向
 HelloWorldWorkflow 解决方案中添加一个 Windows Application  项目,即把原控制台宿主程序改为
Windows Form 宿主程序,调试运行工作流。
        3.1、在解决方案中添加 一个 Windows Application  项目,名称为:WinFormTestHost
        3.2、把WinFormTestHost 项目设为启动项目;
        3.3、在 WinFormTestHost 项目中添加如下引用:
                  3.3.1、HelloWorldWorkflow 工作流项目
                  3.3.2、System.Workflow.Activities
                  3.3.3、System.Workflow.ComponentModel
                  3.3.4、System.Workflow.Runtime
        3.4、设计如下界面,控件Name属性按相应标记修改,其它属性不变。
        3.5、在 Form1 中定义模块变量 wr。
private System.Workflow.Runtime.WorkflowRuntime wr = null;
        3.6、双击按钮 btnStartWorkflow,实现Click事件处理, btnStartWorkflow_Click 代码如下:
        private void btnStartWorkflow_Click(object sender, EventArgs e)
        
{
            
if (wr == null)
            
{
                wr 
= new System.Workflow.Runtime.WorkflowRuntime();
                wr.StartRuntime();
            }

            System.Collections.Generic.Dictionary
<stringobject> parameters = new Dictionary<stringobject>();

            parameters.Add(
"FirstName", tbFirstName.Text);
            parameters.Add(
"LastName", tbLastName.Text);

            System.Workflow.Runtime.WorkflowInstance instance 
= wr.CreateWorkflow(typeof(HelloWorldWorkflow.Workflow1), parameters);
            instance.Start();
        }
        3.7、实现对窗体 FormClosed 事件的处理,主要是在窗体关闭后,应该同时停止流程。
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        
{
            
if (wr != null)
            
{
                
if (wr.IsStarted)
                
{
                    wr.StopRuntime();
                }

            }

        }
        3.8、调试运行工作流程序程,运行效果如下

posted on 2007-02-01 23:11  RedStone  阅读(968)  评论(2)    收藏  举报