Вложенное выполнение 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);
}
}