Вложенное выполнение ActivityDesigner - PullRequest
0 голосов
/ 14 марта 2012

У меня есть две пользовательские 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);
    }
  }
}

и у меня есть 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 ]

1 голос
/ 14 марта 2012

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

0 голосов
/ 14 марта 2012

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

}
...