Udostępnij za pośrednictwem


WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Metoda

Definicja

Po zaimplementowaniu w klasie pochodnej zapisuje określony ukończony zakres w magazynie danych.

protected public:
 abstract void SaveCompletedContextActivity(System::Workflow::ComponentModel::Activity ^ activity);
protected internal abstract void SaveCompletedContextActivity (System.Workflow.ComponentModel.Activity activity);
abstract member SaveCompletedContextActivity : System.Workflow.ComponentModel.Activity -> unit
Protected Friend MustOverride Sub SaveCompletedContextActivity (activity As Activity)

Parametry

activity
Activity

Element Activity reprezentujący ukończony zakres.

Przykłady

W poniższym przykładzie pokazano implementację SaveCompletedContextActivity metody . Ten przykład pochodzi z przykładowej usługi Custom Persistence Service z pliku FilePersistenceService.cs. Aby uzyskać więcej informacji, zobacz Przykład usługi Custom Persistence Service.

// Save the completed activity state.
protected override void SaveCompletedContextActivity(Activity activity)
{
    Guid contextGuid = (Guid)activity.GetValue(Activity.ActivityContextGuidProperty);
    Console.WriteLine("Saving completed activity context: {0}", contextGuid);
    SerializeToFile(
        WorkflowPersistenceService.GetDefaultSerializedForm(activity), contextGuid);
}
' Save completed activity state
Protected Overrides Sub SaveCompletedContextActivity(ByVal activity As System.Workflow.ComponentModel.Activity)
    Dim contextGuid As Guid = CType(activity.GetValue(activity.ActivityContextGuidProperty), Guid)
    Console.WriteLine("Saving completed activity context: 0}", contextGuid)
    SerializeToFile( _
        WorkflowPersistenceService.GetDefaultSerializedForm(activity), contextGuid)
End Sub

Uwagi

Aparat środowiska uruchomieniowego przepływu pracy zapisuje stan ukończonych działań zakresu w celu zaimplementowania rekompensaty. Przed zapisaniem w magazynie danych należy wywołać jedną z przeciążonych Save metod serializacji activity do klasy Stream. Następnie możesz wybrać dodatkowe przetwarzanie Stream przed zapisaniem go w magazynie danych. Jednak gdy aparat środowiska uruchomieniowego przepływu pracy wywołuje LoadCompletedContextActivitymetodę , należy przywrócić identyczną kopię działania.

Musisz mieć możliwość skojarzenia ukończonego zakresu z jego otaczającym wystąpieniem przepływu pracy, aby oznaczyć zakres jako niepotrzebny w magazynie danych po zakończeniu lub zakończeniu wystąpienia przepływu pracy. W związku z tym należy również zapisać Guid wystąpienie przepływu pracy skojarzone z ukończonym zakresem. Można to uzyskać z InstanceId właściwości skojarzonej WorkflowInstance z activityprogramem .

LoadCompletedContextActivityGuid przyjmuje ukończony zakres jako parametr. W związku z tym należy również zapisać ContextGuid właściwość skojarzona z elementem activity. Tę właściwość można odwoływać się za pomocą ActivityContextGuidProperty pola activity.

Jeśli implementujesz usługę trwałości, która korzysta z trwałego magazynu, aby zachować spójność ze stanem wewnętrznym aparatu środowiska uruchomieniowego przepływu pracy, należy wziąć udział w przetwarzaniu zbiorczym transakcji przepływu pracy w celu odroczenia rzeczywistego zapisu w magazynie trwałym do momentu punktu zatwierdzenia przepływu pracy. Aby uczestniczyć w przetwarzaniu wsadowym, dodaj element roboczy do WorkBatch właściwości reprezentującej oczekujące zmiany w bazie danych i zaimplementuj IPendingWork interfejs w usłudze trwałości.

Jeśli nie możesz zapisać ukończonego zakresu w magazynie danych, należy zgłosić PersistenceException odpowiedni komunikat o błędzie.

Dotyczy