I have a .net 4.0 Workflow, which I am hosting myself (just with WorkflowInstance.Run) and when I rehydrate the workflow I would like to initialize some of its internal arguments so that subsequent activities can use these values... How might I go about doing this?
2 回答
使用参数 (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);
在您的工作流程图中,定义输入参数,然后您将能够访问参数的值。
通常,参数用于在您第一次开始执行工作流程之前提供给您的工作流程。
例如,您可能有 InArgument 输入 1、InArgument 输入 2、OutArugment 输出,当您创建工作流时传入所有输入,以及用于存储所有输出的工作流变量。
一旦工作流已经运行,它就会有参数,它不期望它们会因某些外部因素而改变。(如果这是一个混淆点:它通常不会在您的工作流程开始时恢复执行 - 它会在中间的某个任意书签处恢复。)那么您如何将数据传递到您的工作流程在执行中?
在这里,我建议查看消息传递活动。数据在 ReceiveMessage 的 Value OutArgument 上“进入”工作流。它是如何到达那里的?它是由 Receive 活动设置的。但是接收活动是如何设置它的呢?好吧,首先服务主机告诉接收活动恢复,因为它有一条消息。然后接收活动说“我收到了什么消息?” 没有人会神奇地将数据推送到其中,而是在活动被激活后,它知道从某处的队列中提取数据。
希望您可以使用以下想法: 1) 有人存储工作流所需的数据 2) 运行时或服务主机或任何重新激活工作流的东西 3) 活动在运行时(重新激活后)提取他们需要的数据作为模型你的解决方案。