public override string ToString() { using (StringWriter stringWriter = new StringWriter()) { XmlWriterSettings xmlSettings = new XmlWriterSettings(); xmlSettings.Indent = true; xmlSettings.OmitXmlDeclaration = true; using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, xmlSettings)) { OrderedTraces orderedTraces = new OrderedTraces(); lock (_steps) { foreach (IActualTraceStep step in _steps) { if (step is WorkflowTraceStep) { orderedTraces.Steps.Add(step as WorkflowTraceStep); } } } orderedTraces.WriteXml(xmlWriter); } return(stringWriter.ToString()); } }
public override TraceGroup GetPlaceholderTrace() { OrderedTraces trace = new OrderedTraces(); _body.GetTrace(trace); return(trace); }
//makes a copy of the existing trace group public static TraceGroup GetNewTraceGroup(TraceGroup traceGroup) { TraceGroup newTraceGroup = null; if (traceGroup.ordered) { newTraceGroup = new OrderedTraces(); } else { newTraceGroup = new UnorderedTraces(); } foreach (WorkflowTraceStep step in traceGroup.Steps) { ActivityTrace activityTrace = step as ActivityTrace; if (activityTrace != null) { newTraceGroup.Steps.Add(new ActivityTrace(activityTrace) { Optional = step.Optional }); continue; } WorkflowInstanceTrace workflowInstanceTrace = step as WorkflowInstanceTrace; if (workflowInstanceTrace != null) { newTraceGroup.Steps.Add(new WorkflowInstanceTrace(workflowInstanceTrace.InstanceName, workflowInstanceTrace.InstanceStatus) { Optional = step.Optional }); continue; } UserTrace userTrace = step as UserTrace; if (userTrace != null) { newTraceGroup.Steps.Add(new UserTrace(userTrace.InstanceId, userTrace.ActivityParent, userTrace.Message)); continue; } BookmarkResumptionTrace bookmarkResumptionTrace = step as BookmarkResumptionTrace; if (bookmarkResumptionTrace != null) { newTraceGroup.Steps.Add(new BookmarkResumptionTrace(bookmarkResumptionTrace.BookmarkName, bookmarkResumptionTrace.SubinstanceId, bookmarkResumptionTrace.ActivityName)); continue; } SynchronizeTrace synchronizeTrace = step as SynchronizeTrace; if (synchronizeTrace != null) { newTraceGroup.Steps.Add(new SynchronizeTrace(synchronizeTrace.userTrace.InstanceId, synchronizeTrace.userTrace.Message)); continue; } ActivityPlaceholderTrace activityPlaceholderTrace = step as ActivityPlaceholderTrace; if (activityPlaceholderTrace != null) { newTraceGroup.Steps.Add(activityPlaceholderTrace); continue; } TraceGroup tempTraceGroup = step as TraceGroup; if (tempTraceGroup != null) { newTraceGroup.Steps.Add(TraceGroup.GetNewTraceGroup(tempTraceGroup)); continue; } } return(newTraceGroup); }