WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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 activity
programem .
LoadCompletedContextActivity
Guid 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.