示例#1
0
        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());
            }
        }
示例#2
0
        public override TraceGroup GetPlaceholderTrace()
        {
            OrderedTraces trace = new OrderedTraces();

            _body.GetTrace(trace);
            return(trace);
        }
示例#3
0
        //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);
        }