是否可以将值注入工作流参数?

时间:2009-09-06 21:18:09

标签: workflow .net-4.0 workflow-foundation workflow-foundation-4

我有一个.net 4.0工作流程,我自己托管(只使用WorkflowInstance.Run),当我重新水化工作流程时,我想初始化它的一些内部参数,以便后续活动可以使用这些值... 我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

使用Arguments(In / OutArgument)定义工作流的输入或输出(也是活动)..

这是示例语法..

Dictionary <string, object> input = new Dictionary <string, object> (); 
input.Add( "UserName" , userName); 
input.Add ( "UserName", userName); 
WorkflowInstance myInstance = new WorkflowInstance(
new WorkflowConsoleApplication2.Sequence1(),input); 

WorkflowInstance myInstance = new WorkflowInstance (
new WorkflowConsoleApplication2.Sequence1 (), input); 

在工作流程图中,定义输入参数,然后您就可以访问参数的值。

答案 1 :(得分:0)

通常,参数是在第一次开始执行工作流程之前提供给您的工作流程。

例如,您可能具有InArgument input1,InArgument input2,OutArugment输出,以及创建工作流时传入的所有输入,以及工作流的变量以存储所有输出。

一旦工作流程已经运行,它就有参数,它不会期望它们从某些外部因素改变。 (如果这是一个混乱点:它通常不会在你的工作流程开始时恢复执行 - 它将在中间的某个任意书签中恢复。)那么你怎么能将数据传递到你的工作流程在执行中期?

我建议看看消息传递活动。数据进入ReceiveMessage的Value OutArgument的工作流程。它是怎么到达那里的?它由Receive活动设置。但接收活动是如何设置它的呢?好吧,首先服务主机告诉接收活动恢复,因为它有一条消息。然后接收活动说“我得到了什么消息?”没有人神奇地将数据推入其中,而是在激活活动后,它知道从某个队列中提取数据。

希望你能用这个想法 1)有人存储工作流程所需的数据 2)运行时或服务主机或其他任何重新激活工作流程 3)活动在运行时提取所需的数据(重新激活后) 作为解决方案的模型。