Мне удалось восстановить связь между двумя действиями после того, как другой (который существовал до этого между ними) был удален.
if (containerAsFlowchart != null)
{
for (int i = 0; i < containerAsFlowchart.Nodes.Count; i++)
{
if (containerAsFlowchart.Nodes[i] is FlowStep)
{
FlowStep fs = containerAsFlowchart.Nodes[i] as FlowStep;
if (fs.Next == null)
{
if (i < containerAsFlowchart.Nodes.Count - 1)
{
fs.Next = (FlowNode)((containerAsFlowchart.Nodes[i + 1] as FlowStep));
}
}
}
}
}
Al работает нормально до сих пор, но даже если соединение было сделано назад, я не могу визуализировать его в дизайнере рабочих процессов. Если я расширяю или сворачиваю действие или любую другую операцию, которая обновляет рабочий процесс, эта красивая стрелка возвращается туда, но.. есть ли способ сделать это программно и вызвать эту перерисовку сразу после удаления одного действия?
Чтобы изменения были видны дизайнеру, вы должны непосредственно редактировать его ModelItem.
var modelItem = Designer.Context.Services.GetService<ModelService>().Root;
// Do changes through modelItem ...
Например, чтобы изменить DisplayName корневой активности:
modelItem.Properties["DisplayName"].Value = "New Name";
То, ModelItem
делает ModelItem
, состоит в том, чтобы сохранить каждую часть рабочего процесса в структуре агностической модели, от сложных типов до простого целого. Эта модель используется самим дизайнером для печати рабочего процесса на экране, среди прочего (чтение аргументов, переменных и т.д.).
Используйте отладчик и смотрите модель, чтобы узнать больше.