/// <summary> /// Processes the bookmark resumption record to notify the view model of a transition. /// </summary> /// <param name="bookmarkResumptionRecord"> /// The bookmark resumption record. /// </param> private void ProcessBookmarkResumptionRecord(BookmarkResumptionRecord bookmarkResumptionRecord) { if (bookmarkResumptionRecord != null && !string.IsNullOrWhiteSpace(bookmarkResumptionRecord.BookmarkName)) { this.atmViewModel.Notify(ConvertToAtmTransition(bookmarkResumptionRecord.BookmarkName), bookmarkResumptionRecord.Payload); } }
public TrackingCommand(TrackingRecord record) : this() { ActivityScheduledRecord activityScheduledRecord = record as ActivityScheduledRecord; if (activityScheduledRecord != null) { CreateTrackingCommand(activityScheduledRecord); return; } CancelRequestedRecord cancelRequestedRecord = record as CancelRequestedRecord; if (cancelRequestedRecord != null) { CreateTrackingCommand(cancelRequestedRecord); return; } FaultPropagationRecord faultPropagationRecord = record as FaultPropagationRecord; if (faultPropagationRecord != null) { CreateTrackingCommand(faultPropagationRecord); return; } ActivityStateRecord activityStateRecord = record as ActivityStateRecord; if (activityStateRecord != null) { CreateTrackingCommand(activityStateRecord); return; } WorkflowInstanceRecord workflowInstanceRecord = record as WorkflowInstanceRecord; if (workflowInstanceRecord != null) { CreateTrackingCommand(workflowInstanceRecord); return; } BookmarkResumptionRecord bookmarkResumptionRecord = record as BookmarkResumptionRecord; if (bookmarkResumptionRecord != null) { CreateTrackingCommand(bookmarkResumptionRecord); return; } CustomTrackingRecord customTrackingRecord = record as CustomTrackingRecord; if (customTrackingRecord != null) { CreateTrackingCommand(customTrackingRecord); return; } }
protected override void Track(TrackingRecord record, TimeSpan timeout) { // Log header information AddEvent(String.Format("Type: {0} Level: {1}, RecordNumber: {2}", record.GetType().Name, record.Level, record.RecordNumber)); // If this is a instance record WorkflowInstanceRecord instance = record as WorkflowInstanceRecord; if (instance != null) { AddEvent(String.Format(" InstanceID: {0} State: {1}", instance.InstanceId, instance.State)); } // If this is a bookmark record BookmarkResumptionRecord bookmark = record as BookmarkResumptionRecord; if (bookmark != null) { AddEvent(String.Format(" Bookmark {0} resumed", bookmark.BookmarkName)); } // If this is an activity record ActivityStateRecord activity = record as ActivityStateRecord; if (activity != null) { IDictionary <String, object> variables = activity.Variables; StringBuilder s = new StringBuilder(); if (variables.Count > 0) { s.AppendLine(" Variables:"); foreach (KeyValuePair <string, object> v in variables) { s.AppendLine(String.Format(" {0} Value: [{1}]", v.Key, v.Value)); } } AddEvent(String.Format(" Activity: {0} State: {1} {2}", activity.Activity.Name, activity.State, s.ToString())); } // If this is a user record CustomTrackingRecord user = record as CustomTrackingRecord; if ((user != null) && (user.Data.Count > 0)) { AddEvent(String.Format(" User Data: {0}", user.Name)); foreach (string data in user.Data.Keys) { AddEvent(String.Format(" {0} : {1}", data, user.Data[data])); } } }
private void TrackBookmarkResumptionRecord(BookmarkResumptionRecord bookmarkResumptionRecord, ActualTrace _trace) { TestTraceManager.OptionalLogTrace("[InMemoryTrackingParticipant]BookmarkName = {0}, bookmarkResumptionRecord = {1} ", bookmarkResumptionRecord.BookmarkName, bookmarkResumptionRecord.ToString()); _trace.Add(new BookmarkResumptionTrace( bookmarkResumptionRecord.BookmarkName, bookmarkResumptionRecord.BookmarkScope, bookmarkResumptionRecord.Owner.Name)); //_trace.Add(new ActivityTrace(bookmarkResumptionRecord.ToString(), // ActivityInstanceState.Executing)); }
private void TrackBookmarkRecord(BookmarkResumptionRecord record) { if (WfEtwTrackingEventSource.Instance.BookmarkResumptionRecordIsEnabled()) { WfEtwTrackingEventSource.Instance.BookmarkResumptionRecord(record.InstanceId, record.RecordNumber, record.EventTime, record.BookmarkName, record.BookmarkScope, record.Owner.Name, record.Owner.Id, record.Owner.InstanceId, record.Owner.TypeName, record.HasAnnotations ? JsonConvert.SerializeObject(record.Annotations, Formatting.Indented) : emptyItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference); } }
void CreateTrackingCommand(BookmarkResumptionRecord record) { this.Procedure = "[MOJ.WorkflowManger.Tracking].[InsertBookmarkResumptionEvent]"; this.parameters.Add(CreateTrackingCommandParameter("@WorkflowInstanceId", SqlDbType.UniqueIdentifier, null, record.InstanceId)); this.parameters.Add(CreateTrackingCommandParameter("@RecordNumber", SqlDbType.BigInt, null, record.RecordNumber)); this.parameters.Add(CreateTrackingCommandParameter("@TraceLevelId", SqlDbType.TinyInt, null, record.Level)); this.parameters.Add(CreateTrackingCommandParameter("@BookmarkName", SqlDbType.NVarChar, 1024, record.BookmarkName)); this.parameters.Add(CreateTrackingCommandParameter("@BookmarkScope", SqlDbType.UniqueIdentifier, null, record.BookmarkScope)); this.parameters.Add(CreateTrackingCommandParameter("@OwnerActivityName", SqlDbType.NVarChar, 256, record.Owner.Name)); this.parameters.Add(CreateTrackingCommandParameter("@OwnerActivityId", SqlDbType.NVarChar, 256, record.Owner.Id)); this.parameters.Add(CreateTrackingCommandParameter("@OwnerActivityInstanceId", SqlDbType.NVarChar, 256, record.Owner.InstanceId)); this.parameters.Add(CreateTrackingCommandParameter("@OwnerActivityType", SqlDbType.NVarChar, 2048, record.Owner.TypeName)); this.parameters.Add(CreateTrackingCommandParameter("@AnnotationsXml", SqlDbType.NVarChar, null, this.SerializeData(record.Annotations))); this.parameters.Add(CreateTrackingCommandParameter("@TimeCreated", SqlDbType.DateTime, null, record.EventTime)); }
protected override void Track(TrackingRecord record, TimeSpan timeout) { WorkflowInstanceRecord instanceRecord = record as WorkflowInstanceRecord; if (instanceRecord != null) { this.InstanceStates.Add(instanceRecord.State); return; } ActivityStateRecord activityStateRecord = record as ActivityStateRecord; if (activityStateRecord != null) { this.ActivityStates.Add(Colonize(activityStateRecord.Activity.Name, activityStateRecord.State)); return; } CustomTrackingRecord customRecord = record as CustomTrackingRecord; if (customRecord != null) { foreach (KeyValuePair <string, object> kvp in customRecord.Data) { this.CustomRecords.Add(Colonize(kvp.Key, kvp.Value.ToString())); } return; } BookmarkResumptionRecord bookmarkRecord = record as BookmarkResumptionRecord; if (bookmarkRecord != null) { this.BookmarkResumptionRecords.Add(Colonize(bookmarkRecord.BookmarkName, bookmarkRecord.Payload.ToString())); return; } ActivityScheduledRecord scheduledRecord = record as ActivityScheduledRecord; if (scheduledRecord != null) { // For the root activity, the "parent" will be null, so tolerate that case. this.ActivityScheduledRecords.Add(Colonize((scheduledRecord.Activity != null) ? scheduledRecord.Activity.Name : "<null>", scheduledRecord.Child.Name)); return; } }
private void LogBookmarkRecord(BookmarkResumptionRecord record) { Contract.Requires(null != record); var annotations = JsonConvert.SerializeObject(record.Annotations, Formatting.Indented); var payload = JsonConvert.SerializeObject(record.Payload); var owner = JsonConvert.SerializeObject(record.Owner); Logger.Get(_loggingTrackingParticipantSettings.TraceSourceName) .TraceInformation("{0} {1} {2} - InstanceId = '{3}', Annotations = '{4}', BookmarkName = '{5}', BookmarkScope = '{6}', Owner = '{7}', Payload = '{8}'", record.GetType().Name, record.EventTime, record.Level, record.InstanceId, annotations, record.BookmarkName, record.BookmarkScope, owner, payload ); }
protected override void Track(TrackingRecord record, TimeSpan timeout) { WorkflowInstanceRecord instanceTrackingRecord = record as WorkflowInstanceRecord; if (instanceTrackingRecord != null) { TrackInstance t = new TrackInstance(); t.WorkflowID = instanceTrackingRecord.InstanceId; t.Status = instanceTrackingRecord.State; t.EventDate = DateTime.UtcNow; // Insert a record into the TrackInstance table LeadDataDataContext dc = new LeadDataDataContext(_connectionString); dc.TrackInstances.InsertOnSubmit(t); dc.SubmitChanges(); } BookmarkResumptionRecord bookTrackingRecord = record as BookmarkResumptionRecord; if (bookTrackingRecord != null) { TrackBookmark t = new TrackBookmark(); t.WorkflowID = bookTrackingRecord.InstanceId; t.BookmarkName = bookTrackingRecord.BookmarkName; t.EventDate = DateTime.UtcNow; // Insert a record into the TrackBookmark table LeadDataDataContext dc = new LeadDataDataContext(_connectionString); dc.TrackBookmarks.InsertOnSubmit(t); dc.SubmitChanges(); } ActivityStateRecord activityStateRecord = record as ActivityStateRecord; if (activityStateRecord != null) { TrackActivity t = new TrackActivity(); t.ActivityName = activityStateRecord.Activity.Name; t.WorkflowID = activityStateRecord.InstanceId; t.Status = activityStateRecord.State; t.EventDate = DateTime.UtcNow; // Concatenate all the variables into a string IDictionary <String, object> variables = activityStateRecord.Variables; StringBuilder s = new StringBuilder(); if (variables.Count > 0) { foreach (KeyValuePair <string, object> v in variables) { s.AppendLine(String.Format("{0}: Value = [{1}]", v.Key, v.Value)); } } // Store the variables string t.Variables = s.ToString(); // Insert a record into the TrackActivity table LeadDataDataContext dc = new LeadDataDataContext(_connectionString); dc.TrackActivities.InsertOnSubmit(t); dc.SubmitChanges(); } CustomTrackingRecord customTrackingRecord = record as CustomTrackingRecord; if (customTrackingRecord != null) { TrackCustom t = new TrackCustom(); t.WorkflowID = customTrackingRecord.InstanceId; t.CustomEventName = customTrackingRecord.Name; t.EventDate = DateTime.UtcNow; // Concatenate all the user data into a string string s = ""; if ((customTrackingRecord != null) && (customTrackingRecord.Data.Count > 0)) { foreach (string data in customTrackingRecord.Data.Keys) { if (s.Length > 1) { s += "\r\n"; } s += String.Format("{0}: Value = [{1}]", data, customTrackingRecord.Data[data]); } } t.UserData = s; // Insert a record into the TrackUser table LeadDataDataContext dc = new LeadDataDataContext(_connectionString); dc.TrackCustoms.InsertOnSubmit(t); dc.SubmitChanges(); } }
public void PushDataToTraceManager(TrackingRecord data) { if (this.PushToTrackingDataManager != true) { return; } TraceEventType eventType = TraceEventType.Information; if (data is ActivityScheduledRecord) { ActivityScheduledRecord record = (ActivityScheduledRecord)data; string displayName = record.Child.Name; if (this.TestTraceManager.TraceFilter.Contains(displayName)) { return; } AddActivityTrace(eventType, record.InstanceId, displayName, ActivityInstanceState.Executing, record); } else if (data is ActivityStateRecord) { ActivityStateRecord record = (ActivityStateRecord)data; ActivityInstanceState state; if (TryConvertToEnum(record.State, out state)) { string displayName = record.Activity.Name; if (this.TestTraceManager.TraceFilter.Contains(displayName)) { return; } AddActivityTrace(eventType, record.InstanceId, displayName, state, record); } } else if (data is WorkflowInstanceAbortedRecord) { WorkflowInstanceAbortedRecord record = (WorkflowInstanceAbortedRecord)data; AddWorkflowInstanceAbortedTrace(eventType, record.InstanceId, record.Reason); } //else if (data is WorkflowInstanceUpdatedRecord) //{ // WorkflowInstanceUpdatedRecord record = (WorkflowInstanceUpdatedRecord)data; // AddWorkflowInstanceUpdatedTrace(eventType, record.InstanceId, record.OriginalDefinitionIdentity, record.WorkflowDefinitionIdentity, record.State, record.BlockingActivities, record.IsSuccessful); //} else if (data is WorkflowInstanceRecord) { WorkflowInstanceRecord record = (WorkflowInstanceRecord)data; WorkflowInstanceState state = (WorkflowInstanceState)Enum.Parse(typeof(WorkflowInstanceState), record.State); //these are new states that got added as part of the DCR = 109342, we do not contain them in the expceted states, hence //explicitly removing them. have separate test cases to test the states. if ((state == WorkflowInstanceState.Suspended) || (state == WorkflowInstanceState.Unsuspended)) { return; } AddWorkflowInstanceTrace(eventType, record.InstanceId, record.WorkflowDefinitionIdentity, state); } else if (data is BookmarkResumptionRecord) { BookmarkResumptionRecord record = (BookmarkResumptionRecord)data; AddBookmarkResumptionTrace(eventType, record.InstanceId, record.Owner.Name, record.BookmarkName, record.BookmarkScope); } }