Sdílet prostřednictvím


WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Metoda

Definice

Při implementaci v odvozené třídě nástroj uloží zadaný dokončený obor do úložiště dat.

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

Představuje Activity dokončený obor.

Příklady

Následující příklad ukazuje implementaci SaveCompletedContextActivity metody . Tento příklad je z ukázky vlastní služby trvalosti ze souboru FilePersistenceService.cs. Další informace najdete v ukázce vlastní služby trvalosti.

// 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

Poznámky

Modul modulu runtime pracovního postupu ukládá stav dokončených aktivit oboru za účelem implementace kompenzace. Je nutné volat jednu z přetížených Save metod serializovat activity do Stream; pak můžete zvolit další zpracování Stream před zápisem do úložiště dat. Pokud však modul runtime pracovního postupu volá LoadCompletedContextActivity, musíte obnovit identickou kopii aktivity.

Dokončený obor musí být možné přidružit k jeho nadřazené instanci pracovního postupu, aby se při dokončení nebo ukončení instance pracovního postupu označil v úložišti dat jako nepotřebný. Proto byste měli uložit Guid také instanci pracovního postupu, která je přidružena k dokončený obor; to lze získat z InstanceId vlastnosti přidružené activityk WorkflowInstance .

LoadCompletedContextActivity Guid přebírá jako parametr dokončený obor. Proto musíte uložit také vlastnost přidruženou k ContextGuidactivity. Na tuto vlastnost lze odkazovat prostřednictvím ActivityContextGuidProperty pole activity.

Pokud implementujete službu trvalosti, která používá trvalé úložiště, chcete-li zachovat konzistenci s interním stavem modulu modulu runtime pracovního postupu, měli byste se účastnit dávkování transakcí pracovního postupu, aby se odložil skutečný zápis do trvalého úložiště až do bodu potvrzení pracovního postupu. Pokud se chcete zapojit do dávkování, přidejte pracovní položku do WorkBatch vlastnosti, která představuje čekající změny databáze, a implementujte IPendingWork rozhraní ve vaší službě trvalosti.

Pokud dokončený obor nemůžete uložit do úložiště dat, měli byste zobrazit příslušnou chybovou PersistenceException zprávu.

Platí pro