嵌套的ActivityDesigner执行

时间:2012-03-14 12:04:49

标签: .net-4.0 workflow-foundation-4 activitydesigner

我有两个自定义的NativeActivity(Root和Final)以及各自的ActivityDesigner: enter image description here

在Root NativeActivity中我有:

[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);
    }
  }
}

和我的最终NativeActivity:

[Designer(typeof(FinalActivityDesigner))]
public class FinalActivity : NativeActivity
{
  protected override void Execute(NativeActivityContext context)
  {
    //Do Stuff
  }
}

因此,当我创建一个新的工作流程时,我先拖动RootActivity,然后在Root Body中拖动其他活动,除了没有执行的FinalActivity之外,一切正常,所以“做东西”不会被击中。

有什么问题?

我必须调用context.ScheduleActivity(this.Body);对于FinalActivity呢?

非常感谢!

2 个答案:

答案 0 :(得分:1)

树中的FinalActivity位于何处。从设计器看起来它是RootActivity的一部分,但它的源代码不包含任何地方的FinalActivity引用。

答案 1 :(得分:0)

我不知道最终的位置和内容,但是你以某种方式安排它。如果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);
    }

}