WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk