3

这似乎是一个简单的问题:我有一个 WF4 活动,可以引导用户完成一组问题。显示每个问题后,活动应处于空闲状态,直到问题得到回答。回答完每个问题后,我想提示用户下一个问题。(下一个问题是根据上一个问题的答案确定的。)

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

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

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

无论如何在空闲时从 Activity 获取数据值?

谢谢,大卫伯吉特

4

1 回答 1

5

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

  1. 将变量显式保存到数据库等外部位置,并让客户端从那里读取它。使用自定义活动很容易做到,但会给您的应用程序增加另一个断开连接。
  2. 使用工作流持久性和属性提升来提取值并将其存储在工作流实例存储中。提升的属性不是最好的使用,它需要使用 WorkflowInstanceStore。此外,仅当工作流持续存在时,该值才会更新。
  3. 使用自定义工作流跟踪扩展并使用 ActivityStateQuery 提取值。我怀疑这将是在很多情况下最简单的方法。
于 2010-04-06T17:16:28.963 回答