【问题标题】:Get parameters from running workflow从正在运行的工作流中获取参数
【发布时间】:2012-01-18 14:44:53
【问题描述】:

我一直在 endpoint.tv 和这里查看 WF Wizard 示例: http://stevenalexander.posterous.com/integrating-a-persisted-wf40-workflow-with-mv

我希望能够使用 WF 来驱动向导,同时也可以充当未完成向导的临时存储。这意味着对于向导的每个步骤,我都不会保留数据,直到工作流结束,当所有数据都输入时。

根据上面的链接,我有一个几乎可以工作的基本示例:

  1. 创建并保持新的工作流程
  2. //用户然后导航到第一个向导步骤//
  3. WF 被恢复,模型被传递给 BookMarkCallback
  4. WFs 全局模型集合已更新。
  5. 如果用户选择了下一步,WF 将移至下一步。

但是,问题是虽然 WF 正在保存数据,但我看不到中途检索数据的方法。即,如果用户重新加载第 1 步,我不知道如何才能将该持久模型返回给用户。

有什么建议吗?

【问题讨论】:

    标签: .net asp.net-mvc c#-4.0 workflow-foundation-4


    【解决方案1】:

    好吧..给其他人..

    我通过使用我自己的“通知”扩展解决了这个问题,它有一个这样的通知事件处理程序:

    public class HostEventNotifier : IHostNotification
    {
        public event EventHandler<HostNotifyEventArgs> Notification;
    
        public void Notify(object model)
        {
            if(Notification != null)
            {
                Notification(this, new HostNotifyEventArgs(model));
    
            }
        }
    }
    

    扩展已添加到 WF 应用程序中,可以在我的向导事件步骤中调用为:

     var ext = context.GetExtension<IHostNotification>();
            var parentModel = context.GetValue(ParentModel);
            if(ext!=null && parentModel !=null)
            {
                if(parentModel.ContainsKey(bookmarkName))
                {
                    ext.Notify(parentModel[bookmarkName]);
                    Thread.Sleep(500);
                }
    
            }
    

    最后,扩展事件处理程序设置为知道如何处理我的数据的方法。

    这仍然不完整 - 我还没有制定出线程模型(因此是 uglt Thread.Sleep),但我想给其他人一个答案。

    这个想法来自“Pro WF 4/ Bukovics”,apress

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多