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); }
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); } } } }
public void RegisterWorkItemsWithHistoryTree(WorkItemWithHistory lookupTree, long messageIndex) { InvokeCallback(() => _serviceCallbackProxy.RegisterWorkItemsWithHistoryTree(lookupTree, messageIndex)); }