您的位置:首页 > 其它

Windows Workflow Foundation (wwf) 学习笔记(二)

2006-05-08 15:07 525 查看
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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: