Вложенное выполнение ActivityDesigner

У меня есть два пользовательских NativeActivity (Root и Final) с соответствующим ActivityDesigner:

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

и Final 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 ответа

Где находится FinalActivity в дереве. Со стороны дизайнера это выглядит как часть RootActivity, но его исходный код нигде не содержит ссылок на FinalActivity.

Я не знаю, где или что такое Финал, но вы должны как-то запланировать это. Если 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);
    }

}
Другие вопросы по тегам