Aracılığıyla paylaş


WorkflowPersistenceService.SaveCompletedContextActivity(Activity) Yöntem

Tanım

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

activity
Activity

Activity Tamamlanan kapsamı temsil eden bir.

Ö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 activityilişkilendirilmiş özelliğinin WorkflowInstance özelliğinden InstanceId alınabilir.

LoadCompletedContextActivity Guid tamamlanmış kapsamın parametresi olarak alır. Bu nedenle, ile activityilişkili özelliği de kaydetmeniz ContextGuid gerekir. Bu özelliğe alanı activityaracı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.

Şunlara uygulanır