Для тех, кто может наткнуться на это, вот что я понял ...
Прежде всего, при создании дизайнера рабочих процессов необходимо подписаться на событие ModelChanged.
_workflowDesigner = new WorkflowDesigner();
_workflowDesigner.Load(new Sequence());
ModelService ms = _workflowDesigner.Context.Services.GetService<ModelService>();
if (ms != null)
ms.ModelChanged += new EventHandler<ModelChangedEventArgs>(ms_ModelChanged);
Мой обработчик событий выглядит так ...
void ms_ModelChanged(object sender, ModelChangedEventArgs e)
{
if (e.ItemsAdded != null && e.ItemsAdded.Count<ModelItem>() == 1)
{
ModelItem item = e.ItemsAdded.FirstOrDefault<ModelItem>();
var test = item.GetCurrentValue() as MyActivityType;
if (test != null && test.Id == null)
{
//do whatever initialization logic is needed here
}
}
}
Мне нужно отдать должное этому источнику за то, что он указал мне правильное направление.
Одна вещь, о которой следует быть осторожным - при перемещении действия внутри модели возникают два события: удаление и добавление. На данный момент мне не нужно беспокоиться о том, добавляю ли я или перемещаю действие, так как могу сказать, было ли оно инициализировано, но если вам нужно узнать, действительно ли что-то было добавлено в модель, вам может понадобиться для отслеживания обоих событий.