Share via


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Metodo

Definizione

Se implementato in una classe derivata, carica di nuovo lo stato specificato dell'istanza del flusso di lavoro in memoria.

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

Parametri

instanceId
Guid

Guid dell'attività radice dell'istanza del flusso di lavoro.

Restituisce

Activity che rappresenta l'attività radice dell'istanza del flusso di lavoro.

Esempio

Nell'esempio seguente viene illustrata un'implementazione del metodo LoadWorkflowInstanceState. Questo esempio è tratto dall'esempio SDK Custom Persistence Service nel file FilePersistenceService.cs. Per altre informazioni, vedere Esempio di servizio di persistenza personalizzata.

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

Commenti

È necessario ripristinare una copia identica dell'attività. Per questo scopo, è necessario ripristinare un Stream valido dalla rappresentazione dell'istanza del flusso di lavoro nell'archivio dati; quindi è necessario passare questo Stream a uno dei metodi Load di overload per deserializzare lo stato dell'istanza del flusso di lavoro. Se il servizio di persistenza non può caricare lo stato dell'istanza del flusso di lavoro dall'archivio dati, deve generare un'eccezione PersistenceException con un messaggio adatto.

Il motore di runtime del flusso di lavoro implementa la semantica di blocco per limitare l'accesso allo stato di un'istanza del flusso di lavoro salvato in un archivio dati. L'accesso può essere eseguito dai servizi di persistenza che sono in esecuzione in più processi. La semantica di blocco è progettata per impedire il caricamento della stessa istanza del flusso di lavoro in memoria contemporaneamente a servizi di persistenza in esecuzione in due processi diversi. A seconda del tipo di ambiente supportato dal servizio di persistenza, è possibile scegliere se supportare questa funzionalità. Se si sceglie di supportare la semantica di blocco della fase di esecuzione e questo stato dell'istanza del flusso di lavoro è stato precedentemente bloccato da un altro processo, è necessario generare un'eccezione WorkflowOwnershipException. In caso contrario, è necessario bloccare l'accesso allo stato dell'istanza del flusso di lavoro nell'archivio dati. Lo stato dell'istanza del flusso di lavoro può essere sbloccato mediante una chiamata a UnlockWorkflowInstanceState oppure a SaveWorkflowInstanceState con il parametro di sblocco impostato su true.

Si applica a