private void OnProcessInvoked(Playbook playbook, TrackedProcessInvocation process) { var item = new ListViewItem(process.InstanceUID.ToString("D", CultureInfo.InvariantCulture) + (process.InvocationCounter > 1 ? "/" + process.InvocationCounter.ToString("D", CultureInfo.InvariantCulture) : "")) { Tag = process, }; item.SubItems.Add("-"); item.SubItems.Add(process.Topic); item.SubItems.Add(process.IdentedName); item.SubItems.Add(process.KindToString()); item.SubItems.Add(process.Type); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0").Tag = new Func <string>(() => process.GetFormattedRowFlow(Context)); item.Tag = process; if (ListView.SelectedItems.Count == 0) { item.Selected = true; } if (process.Invoker != null && _itemsByProcessInvocationUid.TryGetValue(process.Invoker.InvocationUid, out var invokerItem)) { var nextIndex = invokerItem.Index + 1; while (nextIndex < _allItems.Count) { var p = _allItems[nextIndex].Tag as TrackedProcessInvocation; if (!p.HasParent(process.Invoker)) { break; } nextIndex++; } _allItems.Insert(nextIndex, item); ListView.Items.Insert(nextIndex, item); } else { _allItems.Add(item); ListView.Items.Add(item); } _itemsByProcessInvocationUid.Add(process.InvocationUid, item); }