Bagikan melalui


WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Metode

Definisi

Saat diimplementasikan di kelas turunan, menyimpan cakupan lengkap yang ditentukan ke penyimpanan data.

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)

Parameter

activity
Activity

Yang Activity mewakili cakupan yang telah selesai.

Contoh

Contoh berikut menunjukkan implementasi SaveCompletedContextActivity metode . Contoh ini berasal dari sampel Layanan Persistensi Kustom, dari file FilePersistenceService.cs. Untuk informasi selengkapnya, lihat Sampel Layanan Persistensi Kustom.

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

Keterangan

Mesin runtime alur kerja menghemat status aktivitas cakupan yang selesai untuk menerapkan kompensasi. Anda harus memanggil salah satu metode yang kelebihan beban Save untuk diserialisasikan activity ke dalam Stream; Anda kemudian dapat memilih untuk memprosesnya Stream secara tambahan sebelum menulisnya ke penyimpanan data Anda. Namun, ketika mesin runtime alur kerja memanggil LoadCompletedContextActivity, Anda harus memulihkan salinan aktivitas yang identik.

Anda harus dapat mengaitkan cakupan yang telah selesai dengan instans alur kerja yang mencakupnya untuk menandai cakupan sebagai tidak diperlukan di penyimpanan data Anda saat instans alur kerja selesai atau dihentikan. Oleh karena itu, Anda juga harus menyimpan Guid instans alur kerja yang terkait dengan cakupan yang telah selesai; ini dapat diperoleh dari InstanceId properti yang WorkflowInstance terkait dengan activity.

LoadCompletedContextActivityGuid mengambil dari cakupan yang telah selesai sebagai parameter. Oleh karena itu, Anda juga harus menyimpan properti yang ContextGuid terkait dengan activity. Properti ini dapat dirujuk melalui ActivityContextGuidProperty bidang activity.

Jika Anda menerapkan layanan persistensi yang menggunakan penyimpanan tahan lama, untuk menjaga konsistensi dengan status internal mesin runtime alur kerja, Anda harus berpartisipasi dalam batching transaksi alur kerja untuk menunda penulisan aktual ke penyimpanan tahan lama Anda hingga titik penerapan alur kerja. Untuk berpartisipasi dalam batching, tambahkan item kerja ke WorkBatch properti yang mewakili perubahan tertunda pada database, dan terapkan IPendingWork antarmuka di layanan persistensi Anda.

Jika Anda tidak dapat menyimpan cakupan yang telah selesai ke penyimpanan data, Anda harus melempar PersistenceException dengan pesan kesalahan yang sesuai.

Berlaku untuk