Windows Workflow Foundation (wwf) 学习笔记(二)
4、
Sequential Workflow With Parameters
Workflow
的流程是可以带参数的,这样,流程代码可以根据外界参数的值来对后面执行情况进行选择判断。
在本例用选中
SequentialWorkflow
对象,可以看到该对象有
Parameters
属性,点击该属性,探出如下图窗体:
这里可以定义多个
Parameter
对象,包括对象的
Name
、
Type
等属性,
Direction
用于表明该参数是输入参数还是输出参数。本例中定义了
amount
输入参数,和
status
输出参数。
本例流程如图,
ifElseBranch1
的
Condition
属性的执行方法如下:
private bool IsApproved(object sender, EventArgs e)
{
if (Convert.ToInt32(this.Parameters["amount"].Value) < 500)
return true;
else
return false;
}
这里是根据外界传递来的参数
amount
的值判断
ifElse
最终选择的路径的。
在
Code1
中:
private
void Approved(object sender, EventArgs e)
{
this.Parameters["status"].Value = "approved";
}
在
Code2
中:
private
void Rejected(object sender, EventArgs e)
{
this.Parameters["status"].Value = "rejected";
}
Code1
和
Code2
分别给出了
2
种路径的输出参数值。
在看看
Program.cs
中是怎样调用这个带参数的工作流的
Dictionary
<string, object> parameters = new Dictionary<string, object>();
parameters.Add("amount", Convert.ToInt32(args[0]));
// Load the workflow type
Type
type = typeof(SequentialWorkflowWithParameters);
// Create and start an instance of the workflow
workflowRuntime.StartWorkflow(type, parameters);
在工作流结束的事件中,通过
OutputParameters
属性,拿到了输出参数
status
的值。
static
void OnWorkflowCompleted(object sender, WorkflowCompletedEventArgs workflowCompletedEventArgs)
{
//The order status is stored in the "status" "in" parameter
string
orderStatus = workflowCompletedEventArgs.OutputParameters["status"].ToString();
Console
.WriteLine("Order was " + orderStatus);
waitHandle.Set();
}
posted on 2006-05-08 15:07 安徒生的童话 阅读(1152) 评论(2) 编辑 收藏 引用 网摘
评论
-
Posted @ 2006-05-08 16:16
顶,我手上的工作也正需要研究这一块,一起讨论。
徐汇 回复 更多评论 -
# re: Windows Workflow Foundation (wwf) 学习笔记(二)随风飘散
Posted @ 2006-05-09 15:18
兄弟加入WinFX团队呀,一起研究WinFX 回复 更多评论