练习2、通过宿主程序向工作流传递参数

本文介绍如何在工作流项目中定义并使用参数,包括修改工作流活动以显示参数、添加WindowsForms引用、创建WindowsForm宿主程序及调试运行流程。
        在这个练习中,我们将以 练习1的 HelloWorldWorkflow 工作流项目为基础,实现在工作流运行时,通过宿主程序向工作流传递参数。在本练习中我们将修改工作流的 Code  活动,使其向用户显示传入的参数;最后,我们修改启动项目(宿主程序),使其运行时显示一个窗体,实现用户参数的输入,最后运行一个工作流实例。
        本练习共包括三个任务:
        1、为工作流定义参数;
        2、修改code 活动;
        3、调试运行修改后的工作流项目;
注:本练习是完全手动建立,因此与英文说明不完全相同

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

None.gif          private   string  firstName;
None.gif
None.gif        
public   string  FirstName
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get dot.gifreturn firstName; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set dot.gif{ firstName = value; }
ExpandedBlockEnd.gif        }

None.gif
None.gif        
private   string  lastName;
None.gif
None.gif        
public   string  LastName
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get dot.gifreturn lastName; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set dot.gif{ lastName = value; }
ExpandedBlockEnd.gif        }
编译解决方案,通过完成下一个任务47.gif
        2、修改code 活动;由于我们的工作流应用程序要通过 MessageBox 向用户显示信息,所以我们必须先
在工作流项目添加对  System.Windows.Forms  的引用。
        2.1、为工作流项目添加 System.Windows.Forms 引用;
        2.2、进入工作流 Workflow1.xoml 的代码视图,定位到方法:codeActivity1_CodeHandler,并修改
代码:
None.gif          private   void  codeActivity1_CodeHandler( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
//Console.WriteLine("Hello, World!");
InBlock.gif
            System.Windows.Forms.MessageBox.Show("Hello world: " + firstName + " " + lastName);
InBlock.gif
ExpandedBlockEnd.gif        }
        编译解决方案,通过完成下一个任务47.gif
        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 代码如下:
None.gif          private   void  btnStartWorkflow_Click( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if (wr == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                wr 
= new System.Workflow.Runtime.WorkflowRuntime();
InBlock.gif                wr.StartRuntime();
ExpandedSubBlockEnd.gif            }

InBlock.gif            System.Collections.Generic.Dictionary
<stringobject> parameters = new Dictionary<stringobject>();
InBlock.gif
InBlock.gif            parameters.Add(
"FirstName", tbFirstName.Text);
InBlock.gif            parameters.Add(
"LastName", tbLastName.Text);
InBlock.gif
InBlock.gif            System.Workflow.Runtime.WorkflowInstance instance 
= wr.CreateWorkflow(typeof(HelloWorldWorkflow.Workflow1), parameters);
InBlock.gif            instance.Start();
ExpandedBlockEnd.gif        }
        3.7、实现对窗体 FormClosed 事件的处理,主要是在窗体关闭后,应该同时停止流程。
None.gif          private   void  Form1_FormClosed( object  sender, FormClosedEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if (wr != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if (wr.IsStarted)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    wr.StopRuntime();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

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

转载于:https://www.cnblogs.com/CNWF/archive/2007/02/01/637461.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值