《WF编程》系列之17 - 工作流与外部事件:工作流参数 居然有两个多月没有更新WF笔记,这段时间也许真的太忙了,毕业的事情,工作的事情,从今天起继续更新....

本文介绍了WF编程中工作流参数的应用,通过Runtime的CreateWorkflow方法传递参数,并探讨了参数与工作流属性之间的关联,以及参数如何在工作流活动中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《WF编程》系列之17 - 工作流与外部事件:工作流参数

 

居然有两个多月没有更新WF笔记,这段时间也许真的太忙了,毕业的事情,工作的事情,从今天起继续更新.

3.2.2 工作流参数

Runtime的CreateWorkflow方法有一个重载允许我们向新的工作流实例传递参数,参数的类型是Dictionary(名值对的集合).

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

parameters.Add(
" FirstName " " Scott " );

parameters.Add(
" LastName " " Allen " );

WorkflowInstance instance 
=  workflowRuntime.CreateWorkflow( typeof (chapter3_parameter.Workflow1), parameters);

instance.Start();

当工作流Runtime创建了新的工作流实例时,它会尝试寻找每个参数名称的伴随属性(Companion Property).伴随属性是工作流对象中公开并可写的属性,它们有着和工作流参数项相同的名字.举例来说,工作流会接受上面代码中的FirstName和LastName参数是因为在其内部有着同样名字的属性:

// 只写

public   string  FirstName

{

set  { _firstName  =  value; }

}

private   string  _firstName;

// 只写

public   string  LastName

{

set  { _lastName  =  value; }

}

private   string  _lastName;

// 只读

public   string  FullName

{

get  {  return  _fullName; }

}

private   string  _fullName;

如果我们尝试传递一个FullName参数,Runtime会抛出异常,因为FullName属性是只读的.Runtime无法为其找到相应的公开并可写的伴随属性,Runtime会抛出System.ArgumentException异常.对于参数来说,必须有公开并可写的属性与之对应;而对属性来说,并不是每一个公开并可写的属性都必须对应一个参数,输入参数是可选的.

工作流内的活动不需要关心如何取得参数值.Runtime会在工作流执行前将所有的参数指派给相应的属性.在上面的代码中, CodeActivity的ExecuteCode事件将接收到的FirstName和LastName参数合并到FullName属性中.不仅仅可以向工作流输入数据,我们还可以将FullName属性作为工作流的输出参数.当工作流完成时,Runtime触发WorkflowCompleted事件, 该事件的WorkflowCompletedEventArgs参数包含一个OutputParameters属性(输出参数的Dictionary集合),Runtime将复制每个公开可读的工作流属性到OutputParameters集合中.

现在来测试一下,输出的结果如下图所示:

 

可以看到我们输入的两个参数(Scott和Allen)合并的结果,但是DynamicUpdateCondition是什么呢?它并不是我们的输入参数,之前提到过Runtime会把每个公开可读的工作流属性复制到OutputParameters集合中,而DynamicUpdateCondition正是SequentialWorkflowActivity的一个公开并可读的属性.但问题又出来了, SequentialWorkflowActivity有很多公开并可读的属性,为什么仅仅是DynamicUpdateCondition被作为输出参数?期待园子里的朋友可以回答我这个问题.
http://xiaoshatian.cnblogs.com/

转载于:https://www.cnblogs.com/andylaufzf/archive/2008/08/27/1277524.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值