Udostępnij za pośrednictwem


TrackingProfileSerializer.Serialize(TextWriter, TrackingProfile) Metoda

Definicja

Serializuje profil śledzenia w dokumencie XML przy użyciu definicji schematu XML profilu śledzenia (XSD).

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)

Parametry

writer
TextWriter

Prawidłowa TrackingProfilewartość .

profile
TrackingProfile

Gdy ta metoda zostanie zwrócona, zawiera element, który zawiera TextWriter dokument XML. Parametr jest przekazywany niezainicjowany.

Wyjątki

profile to null.

-lub-

writer to null.

profile nie jest prawidłowym profilem śledzenia.

Przykłady

W poniższym przykładzie kodu pokazano, jak można utworzyć TrackingProfileSerializer za pomocą konstruktora TrackingProfileSerializer w celu serializacji klasy TrackingProfile. Kod używa Serialize również metody .

Ten przykład kodu jest częścią zapytania przy użyciu zestawu SQLTrackingService SDK z pliku Program.cs. Aby uzyskać więcej informacji, zobacz Query Using SQLTrackingService (Wykonywanie zapytań przy użyciu usługi 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

Uwagi

Serializacja odnosi się do procesu tworzenia dobrze sformułowanego dokumentu XML z prawidłowego TrackingProfileelementu . Serialize używa profilu Schema śledzenia do serializacji profilu śledzenia. profile musi być prawidłowym TrackingProfile punktem, który zawiera co najmniej jeden prawidłowy punkt ścieżki. Walidacja profilu śledzenia jest wykonywana podczas serializacji, a jeśli profil śledzenia jest nieprawidłowy, ArgumentException jest zgłaszany. Ten wyjątek można przechwycić i zbadać jego właściwość komunikatu, aby określić przyczynę błędu walidacji. Jeśli podczas serializacji profilu śledzenia istnieją nieobsługiwane wyjątki, wystąpienie przepływu pracy, dla którego zażądano profilu śledzenia, zostanie zakończone.

Dotyczy

Zobacz też