• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
鱼要的是海洋,鸟要的是天空,我要的是自由!
平凡的人不平凡的人生
博客园    首页    新随笔    联系   管理    订阅  订阅

Windows Workflow Beta2 HOL学习笔记(二):向工作流中传递参数

本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation Beta 2中的HOL01中的第二个练习,其中包括三个任务:

Ø         定义工作流的参数

Ø         修改Code Activity

Ø         运行修改好的工作流

 

1.打开上一个练习创建好的HelloWorldWorkflow项目,打开Workflow1.xoml顺序工作流文件,并转到查看代码。

2.找到如下代码,然后在其中添加两个属性。

     public partial class Workflow1 : SequentialWorkflowActivity

     {

        private void codeActivity1_CodeHandler(object sender, EventArgs e)

        {

            Console.WriteLine("Hello, World!");

        }

    }

在方法codeActivity1_CodeHandler下面打“prop”按Tab键,即可由VS2005自动生成属性的格式代码。
   

然后使用Tab键在绿色的区域中进行切换,,输入好后使用回车键即可转到代码下面,完成一个属性的定义。

这里定义两个属性,FirstName和LastName。

3.因为例子需要控制台弹出一个Windows中的MessageBox消息提示框,所以添加System.Windows.Forms引用。

4.修改Code Activiity实例的代码。

        private void codeActivity1_CodeHandler(object sender, EventArgs e)

        {

            System.Windows.Forms.MessageBox.Show("Hello world: " + firstName + " " + lastName);

        }

5.在当前解决方案下添加一个Windows Application项目,名字为WinFormTestHost。在菜单中选择File | Add | New Project。
   

6.删除其中的Form1.cs和Program.cs两个文件。

7.在我们安装HOL的如下路径找到以下四个文件,使用添加现有项添加到WinFormTestHost项目中。

C:\Windows Workflow Foundation\Labs\Lab01\Resources\WinFormTestHost Files
      

8.将WinFormTestHost项目设置为启动项目。

9.查看Form1.cs其中的代码如下:

     public partial class Form1 : Form

     {

         private WorkflowRuntime wr;

         private string workflowAssembly = "";

         private string workflowTypeName = "";

 

         public Form1()

         {

              InitializeComponent();

 

              workflowAssembly = "HelloWorldWorkflow";

              workflowTypeName = "HelloWorldWorkflow.Workflow1";

         }

 

         private void btnStartWorkflow_Click(object sender, EventArgs e)

         {

            if (wr == null)

            {

                wr = new WorkflowRuntime();

                wr.StartRuntime();

            }

 

              Dictionary<string, object> parameters = new Dictionary<string, object>();

              parameters.Add("FirstName", txtFirstName.Text);

              parameters.Add("LastName", txtLastName.Text);

 

            WorkflowInstance instance = wr.CreateWorkflow(typeof(HelloWorldWorkflow.Workflow1), parameters);

            instance.Start();

         }

 

         private void Form1_FormClosed(object sender, FormClosedEventArgs e)

         {

              if (wr != null)

              {

                   if (wr.IsStarted)

                   {

                       wr.StopRuntime();

                   }

              }

         }

     }

(1)运行工作流需要工作流运行时的支持,所以首先定义并实例化了一个WorkflowRuntime对象。然后使用这个对象的StartRuntime方法启动运行时。

(2)定义了Dictionary<string, object>对象用来传递参数的数组。两个参数FirstName和LastName。界面如下:
   

(3)在往下就是创建工作流实例并执行工作流对象的代码了。

       WorkflowInstance instance = wr.CreateWorkflow(typeof(HelloWorldWorkflow.Workflow1), parameters);

       instance.Start();

(4)最后在窗口关闭的时候停止运行时。

10.其中用到的工作流的对象和方法,所以我们要添加几个引用:

项目HelloWorldWorkflow的引用

System.Workflow.Activities.dll

System.Workflow.ComponentModel.dll

System.Workflow.Runtime.dll

三个程序集的应用。

11.按F5运行程序,会出现上面的窗口,在两个输入框中输入相应的值点击Start Workflow按钮,就会看到一个Windows消息提示框。
   

 

至此完成第二个练习。

其中涉及到两个我自己不太明白的东东,准备查查MSDN放在下面:

Dictionary类

WorkflowRuntime.CreateWorkflow方法

现在仅知道在顺序工作流类中建立属性后,可以通过这个方法,将参数放到Dictionary类中,创建工作流实例时给属性赋值。

MSDN中的原文:

WorkflowRuntime.CreateWorkflow Method (Type, Generic Dictionary)

Creates a workflow instance by using the specified workflow Type and the arguments to the workflow contained in the specified Dictionary.

Namespace: System.Workflow.Runtime
Assembly: System.Workflow.Runtime (in system.workflow.runtime.dll)

public WorkflowInstance CreateWorkflow (

        Type workflowType,

        Dictionary<string,Object> namedArgumentValues

)

Parameters

workflowType

The Type of the workflow to create.

namedArgumentValues

A Dictionary of objects keyed by string that represents the arguments to the workflow.

Return Value

A WorkflowInstance object that represents the workflow instance created.

Exceptions

Exception type

Condition

ArgumentNullException

workflowType is a null reference (Nothing in Visual Basic).

 

参考资料:

Microsoft Hands-on Labs for Windows Workflow Foundation Beta 2

WorkflowRuntime.CreateWorkflow Method (Type, Generic Dictionary)

posted @ 2007-09-04 17:41  伊凡  阅读(352)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3