WF4:空闲时获取参数/变量信息

时间:2010-04-05 21:53:21

标签: workflow-foundation workflow-foundation-4

这似乎是一个简单的问题:我有一个WF4活动,引导用户完成一系列问题。显示每个问题后,活动应该闲置,直到问题得到解答。在回答每个问题后,我想提示用户下一个问题。 (下一个问题是根据前一个问题的答案确定的。)

为此,我有一个实现书签的简单工作流活动。我有一个使用WorkflowApplication.Run运行工作流的控制台应用程序,等待输入,然后调用.ResumeBookmark。

我需要做的是在工作流空闲时从工作流中获取Current_Question_Text的值。我已将WorkflowApplication.Idle属性设置为委托,并且在该委托中,我想获取存储在Activity中的当前问题的文本。但是,在Completed方法触发并且WorkflowApplicationIdleEventArgs不提供有关当前数据状态的任何信息之前,输出参数不可用。

我还查看了Idle委托中的Activity和WorkflowApplication变量,无法看到以这种方式获取数据的任何方法。

无论如何在空闲时从活动中获取数据值吗?

谢谢, 大卫伯吉特

1 个答案:

答案 0 :(得分:5)

有几种方法可以做到这一点。什么最有效取决于具体情况。

  1. 将变量显式保存到某个外部位置(如数据库),并让客户端从那里读取它。使用自定义活动很容易,但会为您的应用程序添加另一个断开连接。
  2. 使用工作流持久性和属性提升来提取值并将其存储在工作流实例存储中。提升的属性不是最好的,它需要使用WorkflowInstanceStore。此值仅在工作流持续存在时更新。
  3. 使用自定义工作流跟踪扩展并使用ActivityStateQuery提取值。我怀疑这是最容易接受很多案件的方法。