在这个练习中,我们将以练习1的 HelloWorldWorkflow 工作流项目为基础,实现在工作流运行时,通过宿主程序向工作流传递参数。在本练习中我们将修改工作流的 Code 活动,使其向用户显示传入的参数;最后,我们修改启动项目(宿主程序),使其运行时显示一个窗体,实现用户参数的输入,最后运行一个工作流实例。
本练习共包括三个任务:
1、为工作流定义参数;
2、修改code 活动;
3、调试运行修改后的工作流项目;
注:本练习是完全手动建立,因此与英文说明不完全相同
本练习共包括三个任务:
1、为工作流定义参数;
2、修改code 活动;
3、调试运行修改后的工作流项目;
注:本练习是完全手动建立,因此与英文说明不完全相同
|
1、为工作流定义参数。 |
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<string, object> parameters = new Dictionary<string, object>();![]() parameters.Add("FirstName", tbFirstName.Text); parameters.Add("LastName", tbLastName.Text);![]() System.Workflow.Runtime.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(); } } } |




}
}
浙公网安备 33010602011771号