.net 4.0 嵌套ActivityDesigner执行

.net 4.0 嵌套ActivityDesigner执行,.net-4.0,workflow-foundation-4,activitydesigner,.net 4.0,Workflow Foundation 4,Activitydesigner,我有两个自定义的NativeActivity(根活动和最终活动)以及各自的ActivityDesigner: 在根本地活动中,我有: [ContentProperty("Body")] [Designer(typeof(RootActivityDesigner))] public class RootActivity : NativeActivity { public Activity Body { get; set; } protected override void Execut

我有两个自定义的NativeActivity(根活动和最终活动)以及各自的ActivityDesigner:

在根本地活动中,我有:

[ContentProperty("Body")]
[Designer(typeof(RootActivityDesigner))]
public class RootActivity : NativeActivity
{
  public Activity Body { get; set; }

  protected override void Execute(NativeActivityContext context)
  {
    if (this.Body != null)
    {
      context.ScheduleActivity(this.Body);
    }
  }
}
[Designer(typeof(FinalActivityDesigner))]
public class FinalActivity : NativeActivity
{
  protected override void Execute(NativeActivityContext context)
  {
    //Do Stuff
  }
}
我最后的本土活动是:

[ContentProperty("Body")]
[Designer(typeof(RootActivityDesigner))]
public class RootActivity : NativeActivity
{
  public Activity Body { get; set; }

  protected override void Execute(NativeActivityContext context)
  {
    if (this.Body != null)
    {
      context.ScheduleActivity(this.Body);
    }
  }
}
[Designer(typeof(FinalActivityDesigner))]
public class FinalActivity : NativeActivity
{
  protected override void Execute(NativeActivityContext context)
  {
    //Do Stuff
  }
}
所以,当我创建一个新的工作流时,我会拖动第一个RootActivity,然后再拖动根主体中的其他活动,所有活动都可以正常工作,但最终性并没有被执行,所以“do stuff”不会被点击

怎么了

我必须调用context.ScheduleActivity(this.Body);也是为了最终性


非常感谢

最终性在树中的位置。从设计者的角度看,它似乎是RootActivity的一部分,但它的源代码在任何地方都不包含引用。

我不知道Final在哪里或什么地方,但您必须以某种方式安排它。如果
RootActivity
是控制实体,那么您可以这样做

public class RootActivity : NativeActivity
{
  public Activity Body { get; set; }
  public Activity Final { get; set; }

  protected override void Execute(NativeActivityContext context)
  {
    if (this.Body != null)
    {
      context.ScheduleActivity(this.Body, OnBodyComplete);
    }
  }
    // callback fired after Body completes execution
    private void OnBodyComplete(NativeActivityContext context, 
                                ActivityInstance completedInstance)
    {
        context.ScheduleActivity(Final);
    }

}

我试过这么做,但还是不行。在WF持久性数据库上,我发现以下错误:System.ArgumentNullException-值不能为null。参数名称:活动。我怀疑在“公共活动最终{get;set;}”行中,WF如何将最终结果与我的最终结果关联?位于树的底部。这是设计师的标记:这是我再次感兴趣的活动树。谁是它的父母,因为那是负责执行它的人。