Esempio n. 1
0
 private CallbackMessageContent GetCallbackMessageContent(TaskProgressCallbackMessage value,
                                                          WorkItemWithHistory parent)
 {
     return(new CallbackMessageContent
     {
         RecordNumber = value.RecordNumber,
         MessageType = value.MessageType,
         ActivityName = value.ActivityName,
         Message = value.Message,
         TimeStamp = value.TimeStamp,
         DepthLevel = parent.CrtDepthLevel
     });
 }
        private WorkItemWithHistory GetLocalWorkItemWithHistory(WorkItemWithHistory lookupTree)
        {
            if (_cloneMessages == false)
            {
                return(lookupTree);
            }

            using (MemoryStream memoryStream = new MemoryStream())
            {
                WorkItemWithHistorySerialiser.WriteObject(memoryStream, lookupTree);
                memoryStream.Seek(0, SeekOrigin.Begin);
                return((WorkItemWithHistory)WorkItemWithHistorySerialiser.ReadObject(memoryStream));
            }
        }
        public void UnregisterWorkflowInstance(Guid workflowInstanceId, long messageIndex)
        {
            WorkItemWithHistory rootWorkItem = _activeWorkItemsRoots[workflowInstanceId];

            int initialCount = _workItemProgressObserver.PendingWorkItems.Count;

            _workItemProgressObserver.UnregisterWorkItemsWithHistoryTree(rootWorkItem.Id, messageIndex);
            Debug.Assert(_workItemProgressObserver.PendingWorkItems.Count == initialCount - 1);

            lock (_sinkRoot)
            {
                _activeWorkItemsRoots.Remove(workflowInstanceId);
            }
        }
        public void PushMessage(Guid workflowInstanceId, TaskProgressCallbackMessage message, long messageIndex)
        {
            WorkItemWithHistory rootWorkItem = GetRootWorkItemForWorkflowInstance(workflowInstanceId);

            message.RouteToChild = rootWorkItem.RouteFromParentToChild(message.RouteToChild[0].Id)
                                   .ConvertAll(workItemWithChildren =>
                                               new WorkItemId
            {
                Id           = workItemWithChildren.Id,
                Name         = workItemWithChildren.Name,
                WorkItemType = workItemWithChildren.WorkItemType
            });

            _workItemProgressObserver.WorkItemLogCallback(message, messageIndex);
        }
Esempio n. 5
0
        private void ProcessProgressMessage(TaskProgressCallbackMessage value, WorkItemWithHistory parent)
        {
            if (value.MessageType == WorkItemStatus.Received)
            {
                return;
            }

            if (value.MessageType == WorkItemStatus.Canceled)
            {
                CallbackMessageContent previousMessage = parent.GetLastUpdateMessage();
                if (previousMessage != null && previousMessage.MessageType == WorkItemStatus.Faulted)
                {
                    return;
                }
            }

            UpdateParentDepthLevelAndInsert(parent, value);
        }
 public void RegisterWorkItemsWithHistoryTree(WorkItemWithHistory lookupTree, long messageIndex)
 {
     if (!_dispatcher.CheckAccess())
     {
         _dispatcher.Invoke((Action <WorkItemWithHistory, long>)RegisterWorkItemsWithHistoryTree,
                            DispatcherPriority.Normal, new object[] { lookupTree, messageIndex });
     }
     else
     {
         WorkItemWithHistory localLookupTree = GetLocalWorkItemWithHistory(lookupTree);
         lock (synckRoot)
         {
             if (_progressMonitor == null)
             {
                 unprocessedMessageQueue.Enqueue(
                     () => _progressMonitor.RegisterWorkItemsWithHistoryTree(localLookupTree, messageIndex));
             }
             else
             {
                 _progressMonitor.RegisterWorkItemsWithHistoryTree(localLookupTree, messageIndex);
             }
         }
     }
 }
Esempio n. 7
0
 public void RegisterWorkItemsWithHistoryTree(WorkItemWithHistory lookupTree, long messageIndex)
 {
     InvokeCallback(() => _serviceCallbackProxy.RegisterWorkItemsWithHistoryTree(lookupTree, messageIndex));
 }