/// <summary> /// Serialise a <see cref="WorkflowTrackingRecord" /> ready for persistence. This /// method deals with WorkflowTrackingRecords that contain workflow change /// details. /// </summary> /// <param name="workflowTrackingRecord"> /// The original <see cref="WorkflowTrackingRecord" /> to serialise. /// </param> /// <returns> /// Modified copy of the <see cref="WorkflowTrackingRecord" /> containing /// serialised data. /// </returns> private static SerialisableWorkflowChangeRecord buildSerialisableWorkflowChangeTrackingRecord(WorkflowTrackingRecord workflowTrackingRecord) { SerialisableWorkflowChangeRecord serialisableWorkflowChangeRecord = new SerialisableWorkflowChangeRecord(); serialisableWorkflowChangeRecord.Annotations.AddRange(workflowTrackingRecord.Annotations); serialisableWorkflowChangeRecord.EventDateTime = workflowTrackingRecord.EventDateTime; serialisableWorkflowChangeRecord.EventOrder = workflowTrackingRecord.EventOrder; serialisableWorkflowChangeRecord.TrackingWorkflowEvent = workflowTrackingRecord.TrackingWorkflowEvent; if (workflowTrackingRecord.EventArgs != null && workflowTrackingRecord.EventArgs is TrackingWorkflowChangedEventArgs) { TrackingWorkflowChangedEventArgs eventArgs = (TrackingWorkflowChangedEventArgs)workflowTrackingRecord.EventArgs; serialisableWorkflowChangeRecord.EventArgs = buildSerialisableTrackingWorkflowChangedEventArgs(eventArgs); } return(serialisableWorkflowChangeRecord); }
/// <summary> /// Serialise a <see cref="TrackingWorkflowChangedEventArgs" /> ready for persistence. /// </summary> /// <param name="eventArgs"> /// The original <see cref="TrackingWorkflowChangedEventArgs" /> to serialise. /// </param> /// <returns> /// A <see cref="SerialisableTrackingWorkflowChangedEventArgs" /> containing a /// serialised copy of the <see cref="TrackingWorkflowChangedEventArgs" />. /// </returns> private static SerialisableTrackingWorkflowChangedEventArgs buildSerialisableTrackingWorkflowChangedEventArgs(TrackingWorkflowChangedEventArgs eventArgs) { SerialisableTrackingWorkflowChangedEventArgs serialisableEventArgs = new SerialisableTrackingWorkflowChangedEventArgs(); byte [] serialisedData; bool nonSerialisable; serialiseData(eventArgs, out serialisedData, out nonSerialisable); serialisableEventArgs.NonSerialisable = nonSerialisable; serialisableEventArgs.SerialisedData = serialisedData; serialisableEventArgs.StringData = eventArgs.ToString(); serialisableEventArgs.Type = eventArgs.GetType(); serialisableEventArgs.UnserialisedData = eventArgs; for (int i = 0; i < eventArgs.Changes.Count; i++) { AddedActivityAction addedActivityAction = eventArgs.Changes[i] as AddedActivityAction; if (addedActivityAction != null) { List <SerialisableActivityAddedAction> addedActions = buildSerialisableAddedActivityAction(addedActivityAction, i); foreach (SerialisableActivityAddedAction addedAction in addedActions) { serialisableEventArgs.Changes.Add(addedAction); } continue; } RemovedActivityAction removedActivityAction = eventArgs.Changes[i] as RemovedActivityAction; if (removedActivityAction != null) { List <SerialisableActivityRemovedAction> removedActions = buildSerialisableRemovedActivityAction(removedActivityAction, i); foreach (SerialisableActivityRemovedAction removedAction in removedActions) { serialisableEventArgs.Changes.Add(removedAction); } continue; } } return(serialisableEventArgs); }