WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta uygulandığında, belirtilen tamamlanmış kapsamı bir veri deposuna kaydeder.
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)
Parametreler
Örnekler
Aşağıdaki örnekte yönteminin bir uygulaması gösterilmektedir SaveCompletedContextActivity
. Bu örnek, Özel Kalıcılık Hizmeti örneğinden, FilePersistenceService.cs dosyasından alınıyor. Daha fazla bilgi için bkz. Özel Kalıcılık Hizmeti Örneği.
// 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
Açıklamalar
İş akışı çalışma zamanı altyapısı, telafi uygulamak için tamamlanan kapsam etkinliklerinin durumunu kaydeder. seri hale Streamactivity
getirmek için aşırı yüklenmiş Save yöntemlerden birini çağırmanız gerekir; bunu veri deponuza yazmadan önce ek olarak işlemeyi Stream seçebilirsiniz. Ancak, iş akışı çalışma zamanı altyapısı çağırdığında LoadCompletedContextActivityetkinliğin özdeş bir kopyasını geri yüklemeniz gerekir.
İş akışı örneği tamamlandığında veya sonlandırıldığında kapsamı veri deponuzda gereksiz olarak işaretlemek için tamamlanan kapsamı kapsayan iş akışı örneğiyle ilişkilendirebilmeniz gerekir. Bu nedenle, tamamlanmış kapsamla ilişkilendirilmiş iş akışı örneğini de kaydetmeniz Guid gerekir; bu, ile activity
ilişkilendirilmiş özelliğinin WorkflowInstance özelliğinden InstanceId alınabilir.
LoadCompletedContextActivity
Guid tamamlanmış kapsamın parametresi olarak alır. Bu nedenle, ile activity
ilişkili özelliği de kaydetmeniz ContextGuid gerekir. Bu özelliğe alanı activity
aracılığıyla ActivityContextGuidProperty başvurulabilir.
Dayanıklı depo kullanan bir kalıcılık hizmeti uyguluyorsanız, iş akışı çalışma zamanı altyapısının iç durumuyla tutarlılığı korumak için, dayanıklı deponuza gerçek yazma işlemini bir iş akışı işleme noktasına kadar ertelemek için iş akışı işlemi toplu işlemine katılmanız gerekir. Toplu işlere katılmak için, veritabanında bekleyen değişiklikleri temsil eden özelliğine bir iş öğesi WorkBatch ekleyin ve kalıcılık hizmetinizde arabirimini uygulayın IPendingWork .
Tamamlanan kapsamı veri deponuza kaydedemiyorsanız, uygun bir hata iletisiyle birlikte bir PersistenceException oluşturmalısınız.