コード例 #1
0
        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);
        }