Aracılığıyla paylaş


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Yöntem

Tanım

Türetilmiş bir sınıfta uygulandığında, iş akışı örneğinin belirtilen durumunu belleğe geri yükler.

protected public:
 abstract System::Workflow::ComponentModel::Activity ^ LoadWorkflowInstanceState(Guid instanceId);
protected internal abstract System.Workflow.ComponentModel.Activity LoadWorkflowInstanceState (Guid instanceId);
abstract member LoadWorkflowInstanceState : Guid -> System.Workflow.ComponentModel.Activity
Protected Friend MustOverride Function LoadWorkflowInstanceState (instanceId As Guid) As Activity

Parametreler

instanceId
Guid

Guid İş akışı örneğinin kök etkinliğinin sayısı.

Döndürülenler

Activity İş akışı örneğinin kök etkinliğini temsil eden bir.

Örnekler

Aşağıdaki örnekte yönteminin bir uygulaması gösterilmektedir LoadWorkflowInstanceState . Bu örnek, Özel Kalıcılık Hizmeti örneğinden, FilePersistenceService.cs dosyasından alınmalıdır. Daha fazla bilgi için bkz. Özel Kalıcılık Hizmeti Örneği.

// Load workflow instance state.
protected override Activity LoadWorkflowInstanceState(Guid instanceId)
{
    Console.WriteLine("Loading instance: {0}\n", instanceId);
    byte[] workflowBytes = DeserializeFromFile(instanceId);
    return WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, null);
}
' Load workflow instance state.
Protected Overrides Function LoadWorkflowInstanceState(ByVal instanceId As System.Guid) As System.Workflow.ComponentModel.Activity
    Console.WriteLine("Loading instance: 0}" + vbLf, instanceId)
    Dim obj As Object = DeserializeFromFile(instanceId)
    Dim workflowBytes As Byte() = DeserializeFromFile(instanceId)
    Return WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, Nothing)
End Function

Açıklamalar

Etkinliğin özdeş bir kopyasını geri yüklemeniz gerekir. Bunu yapmak için, veri deposundaki iş akışı örneğinin gösteriminden geçerli Stream bir değeri geri yüklemeniz gerekir; ardından bunu Stream iş akışı örneği durumunu seri durumdan kaldırmak için aşırı yüklenmiş Load yöntemlerden birine geçirmeniz gerekir. Kalıcılık hizmetiniz iş akışı örneği durumunu veri deposundan yükleyemiyorsa uygun bir iletiyle birlikte bir PersistenceException oluşturmalıdır.

İş akışı çalışma zamanı altyapısı, veri deposuna kaydedilen bir iş akışı örneği durumuna erişimi kısıtlamak için kilitleme semantiğini uygular. Bu, birden çok işlemde çalışan kalıcılık hizmetleri tarafından erişilebilir. Kilitleme semantiği, iki farklı işlemde çalışan kalıcılık hizmetlerinin aynı iş akışı örneğini aynı anda belleğe yüklemesini önlemek için tasarlanmıştır. Kalıcılık hizmetinizin desteklemek üzere tasarlandığı ortam türüne bağlı olarak, bu işlevselliği destekleyip desteklememeyi seçebilirsiniz. Çalışma zamanı kilitleme semantiğini desteklemeyi seçerseniz ve bu iş akışı örneği durumu daha önce başka bir işlem tarafından kilitlenmişse, bir WorkflowOwnershipExceptionoluşturmanız gerekir. Aksi takdirde, veri deponuzda iş akışı örneği durumuna erişimi kilitlemeniz gerekir. İş akışı örneği durumunun kilidi, kilit açma parametresi olarak ayarlanmış bir çağrısı UnlockWorkflowInstanceState veya çağrısı SaveWorkflowInstanceState ile açılabilir.true

Şunlara uygulanır