我一直在关注endpoint.tv上的WF向导示例,这里: http://stevenalexander.posterous.com/integrating-a-persisted-wf40-workflow-with-mv
我希望能够使用WF来驱动向导,但也可以充当不完整向导的临时存储。这意味着对于向导的每个步骤,我都不会持久保存数据,直到工作流程结束时,所有数据都已输入。
我有一个基本的例子,基于上面的链接工作:
然而,问题在于虽然WF正在保存数据,但我看不到中途检索数据的方法。即如果用户重新加载步骤1,我不知道如何将该持久模型返回给用户。
有什么建议吗?
答案 0 :(得分:2)
好吧..给其他人..
我通过使用自己的“通知”扩展程序来解决这个问题,该扩展程序具有Notification事件处理程序:
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