Кто-нибудь знает, возможно ли в собственном действии WF4 запланировать динамически создаваемое дочернее действие? Действие принимает аргументы, которые определяют дочернее действие, которое нужно создать и запустить. Я столкнулся с проблемами CacheMetadata.
Можно ли запланировать динамически создаваемое дочернее действие
Ответы (2)
Это невозможно, но вы можете использовать поддержку InvokeWorkflow / LoadActivity, которую я встроил в Microsoft.Activities. См. Как вызвать дочерний рабочий процесс как XAML
Среда выполнения рабочего процесса должна знать, какие действия вы собираетесь запустить перед выполнением. Таким образом, вы не можете делать следующее:
protected override void Execute(NativeActivityContext context)
{
context.ScheduleActivity(new MyActivity());
}
К сожалению, то же самое касается обработчика ActivityAction. или ActivityFunc. Они также должны быть установлены и представлены среде выполнения во время вызова CacheMetadata.
Единственное возможное решение - реализовать IActivityTemplateFactory и обеспечьте некоторую реализацию дочернего действия во время разработки, когда оно помещается на поверхность конструктора, и, возможно, обновите своего дочернего элемента во время вызовов CacheMetadata, изучив текущий рабочий процесс и ответив соответствующим образом, прежде чем регистрировать дочерний элемент в среде выполнения.