Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }