WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Cuando se implementa en una clase derivada, carga de nuevo en la memoria el estado especificado de la instancia de flujo de trabajo.
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
Parámetros
Devoluciones
Activity que representa la actividad raíz de la instancia de flujo de trabajo.
Ejemplos
En el siguiente ejemplo se muestra una implementación del método LoadWorkflowInstanceState
. Este ejemplo pertenece a la muestra Servicio de persistencia personalizado, del archivo FilePersistenceService.cs. Para obtener más información, consulte Ejemplo de Custom Persistence Service.
// 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
Comentarios
Debe restaurar una copia idéntica de la actividad. Para ello, debe restaurar un Stream válido a partir de su representación de la instancia de flujo de trabajo en el almacén de datos; a continuación, debe pasar Stream a uno de los métodos Load sobrecargados para deserializar el estado de la instancia de flujo de trabajo. Si su servicio de persistencia no puede cargar el estado de la instancia de flujo de trabajo de su almacén de datos, debe iniciar PersistenceException con un mensaje adecuado.
El motor en tiempo de ejecución de flujo de trabajo implementa la semántica del bloqueo para restringir el acceso a un estado de la instancia de flujo de trabajo guardado en un almacén de datos. Los servicios de persistencia que se ejecutan en varios procesos pueden tener acceso a esto. Las semántica del bloqueo está diseñadas para evitar que los servicios de persistencia que se ejecutan en dos procesos diferentes se carguen a la misma instancia de flujo de trabajo al mismo tiempo en la memoria. Dependiendo del tipo de entorno que pueda admitir su servicio de persistencia, puede decidir si admitir esta funcionalidad. Si decide admitir las semántica del bloqueo en tiempo de ejecución, y si otro proceso ha bloqueado previamente este estado de la instancia de flujo de trabajo, a continuación, debe iniciar WorkflowOwnershipException. De lo contrario, debe bloquear el acceso al estado de instancia de flujo de trabajo en su almacén de datos. Se puede desbloquear el estado de la instancia de flujo de trabajo mediante una llamada a UnlockWorkflowInstanceState o una llamada a SaveWorkflowInstanceState con el parámetro desbloqueado establecido en true
.