工作流基础4工作流应用程序完成的输出是空白的

本文关键字:工作流 输出 空白 应用程序 | 更新日期: 2023-09-27 17:54:50

我刚刚开始思考WF4;我正在努力理解为什么我的输出在我的工作流程中是空白的。

首先,我有一个.xaml,包含一个序列对象(或活动?);它依次包含一个"FirstCodeActivity",它包含以下代码:

public class FirstCodeActivity : NativeActivity
{
  public OutArgument<string> FirstCodeHasExecuted { get; set; }
  protected override void Execute(NativeActivityContext context)
  {
    context.CreateBookmark("FirstBookmark", OnResumeBookmark);
  }
  protected override bool CanInduceIdle
  {
    get { return true; }
  }
  public void OnResumeBookmark(NativeActivityContext context, Bookmark bookmark, object obj)
  {
    FirstCodeHasExecuted.Set(context, "Yes");
  }
}

根据我的理解,当设置书签时,这应该在firstcodehasperformed属性中返回值"Yes"。

调试时,我可以确认书签事件被成功触发。

这是我的WF4初始化代码:

var idleEvent = new AutoResetEvent(false);
var workflowApplication = new WorkflowApplication(new MyWorkFlow())
{
  Idle = delegate { idleEvent.Set(); },
  Completed = delegate(WorkflowApplicationCompletedEventArgs e)
  {
    Outputs = e.Outputs;
  }
};
workflowApplication.Run();
idleEvent.WaitOne();
workflowApplication.ResumeBookmark("FirstBookmark", "Resume me!");
idleEvent.WaitOne();

我的问题是,我可以理解为什么e.s outoutput在它的字典中没有返回任何项,即使我在FirstCodeActivity中设置了属性。

我做错了吗?我的第一个想法是序列作为不同的上下文运行,因此不包含FirstCodeActivity的输出。

如有任何帮助,不胜感激。

马特

工作流基础4工作流应用程序完成的输出是空白的

Completed回调中的Outputs字典包含来自工作流的OutArguments,而不是作为工作流一部分执行的活动。如果你想在那里看到你的活动的结果,你需要创建一个工作流级别的OutArgument,并使用VB表达式将firstcodehasperformed绑定到它。