다음을 통해 공유


TrackingProfileSerializer.Serialize(TextWriter, TrackingProfile) 메서드

정의

추적 프로필 XSD(XML 스키마 정의)를 사용하여 추적 프로필을 XML 문서로 serialize합니다.

public:
 void Serialize(System::IO::TextWriter ^ writer, System::Workflow::Runtime::Tracking::TrackingProfile ^ profile);
public void Serialize (System.IO.TextWriter writer, System.Workflow.Runtime.Tracking.TrackingProfile profile);
member this.Serialize : System.IO.TextWriter * System.Workflow.Runtime.Tracking.TrackingProfile -> unit
Public Sub Serialize (writer As TextWriter, profile As TrackingProfile)

매개 변수

writer
TextWriter

유효한 TrackingProfile입니다.

profile
TrackingProfile

이 메서드가 반환될 때 XML 문서가 들어 있는 TextWriter를 포함합니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

예외

profile이(가) null인 경우

또는

writer이(가) null인 경우

profile이 올바른 추적 프로필이 아닌 경우

예제

다음 코드 예제에서는 TrackingProfileSerializer 생성자를 사용하여 TrackingProfileSerializer을 serialize하는 TrackingProfile를 만드는 방법을 보여 줍니다. 또한 이 코드에서는 Serialize 메서드를 사용합니다.

이 코드 예제는 Program.cs 파일에 있는 Query using SQLTrackingService SDK 샘플의 일부입니다. 자세한 내용은 쿼리를 사용 하 여 SQLTrackingService합니다.

private static void CreateAndInsertTrackingProfile()
{
    TrackingProfile profile = new TrackingProfile();
    ActivityTrackPoint activityTrack = new ActivityTrackPoint();
    ActivityTrackingLocation activityLocation = new ActivityTrackingLocation(typeof(Activity));
    activityLocation.MatchDerivedTypes = true;
    IEnumerable<ActivityExecutionStatus> statuses = Enum.GetValues(typeof(ActivityExecutionStatus)) as IEnumerable<ActivityExecutionStatus>;
    foreach (ActivityExecutionStatus status in statuses)
    {
        activityLocation.ExecutionStatusEvents.Add(status);
    }

    activityTrack.MatchingLocations.Add(activityLocation);
    profile.ActivityTrackPoints.Add(activityTrack);
    profile.Version = version;

    WorkflowTrackPoint workflowTrack = new WorkflowTrackPoint();
    WorkflowTrackingLocation workflowLocation = new WorkflowTrackingLocation();
    IEnumerable<TrackingWorkflowEvent> eventStatuses = Enum.GetValues(typeof(TrackingWorkflowEvent)) as IEnumerable<TrackingWorkflowEvent>;
    foreach (TrackingWorkflowEvent status in eventStatuses)
    {
        workflowLocation.Events.Add(status);
    }

    workflowTrack.MatchingLocation = workflowLocation;
    profile.WorkflowTrackPoints.Add(workflowTrack);

    TrackingProfileSerializer serializer = new TrackingProfileSerializer();
    StringWriter writer = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture);
    serializer.Serialize(writer, profile);
    string trackingprofile = writer.ToString();
    InsertTrackingProfile(trackingprofile);
}
Shared Sub CreateAndInsertTrackingProfile()
    Dim profile As TrackingProfile = New TrackingProfile()

    Dim activityTrack As ActivityTrackPoint = New ActivityTrackPoint()
    Dim activityLocation As ActivityTrackingLocation = New ActivityTrackingLocation(GetType(Activity))
    activityLocation.MatchDerivedTypes = True
    Dim statuses As IEnumerable(Of ActivityExecutionStatus) = CType(System.Enum.GetValues(GetType(ActivityExecutionStatus)), IEnumerable(Of ActivityExecutionStatus))
    For Each status As ActivityExecutionStatus In statuses
        activityLocation.ExecutionStatusEvents.Add(status)
    Next

    activityTrack.MatchingLocations.Add(activityLocation)
    profile.ActivityTrackPoints.Add(activityTrack)
    profile.Version = version

    Dim workflowTrack As WorkflowTrackPoint = New WorkflowTrackPoint()
    Dim workflowLocation As WorkflowTrackingLocation = New WorkflowTrackingLocation()
    Dim eventStatuses As IEnumerable(Of TrackingWorkflowEvent) = CType(System.Enum.GetValues(GetType(TrackingWorkflowEvent)), IEnumerable(Of TrackingWorkflowEvent))
    For Each status As TrackingWorkflowEvent In eventStatuses
        workflowLocation.Events.Add(status)
    Next

    workflowTrack.MatchingLocation = workflowLocation
    profile.WorkflowTrackPoints.Add(workflowTrack)

    Dim serializer As TrackingProfileSerializer = New TrackingProfileSerializer()
    Dim writer As StringWriter = New StringWriter(New StringBuilder(), CultureInfo.InvariantCulture)
    serializer.Serialize(writer, profile)
    Dim trackingProfile As String = writer.ToString()
    InsertTrackingProfile(trackingProfile)
End Sub

설명

serialization은 올바른 TrackingProfile에서 올바른 형식의 XML 문서를 만드는 프로세스를 말합니다. Serialize는 추적 프로필 Schema를 사용하여 추적 프로필을 serialize합니다. profile은 적어도 하나의 올바른 추적 지점을 포함하는 올바른 TrackingProfile이어야 합니다. serialization 중에 추적 프로필에 대한 유효성이 검사되고, 추적 프로필이 잘못된 경우 ArgumentException이 throw됩니다. 이 예외를 catch하고 메시지 속성을 검사하여 유효성 검사 오류의 원인을 확인할 수 있습니다. 추적 프로필을 serialize하는 동안 처리되지 않은 예외가 있으면 추적 프로필이 요청된 워크플로 인스턴스가 종료됩니다.

적용 대상

추가 정보