【问题标题】:WF4: Get argument/variable information while idleWF4:在空闲时获取参数/变量信息
【发布时间】:2010-04-05 21:53:21
【问题描述】:

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

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

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

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

有没有办法在 Activity 空闲时从它获取数据值?

谢谢, 大卫·伯吉特

【问题讨论】:

    标签: workflow-foundation workflow-foundation-4


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢莫里斯!选项 3 正是我想要的!我创建了一个自定义跟踪扩展,当我的活动空闲时触发。然后它抛出了一个我的应用程序处理的事件,用下一个问题的文本更新 UI。完美!
    • 你能解释一下你是怎么做到的吗?我也在尝试做同样的事情。无法理解这个概念。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多