Compartir a través de


WorkflowInstance Clase

Definición

El objeto WorkflowInstance es un motor ligero de tiempo de ejecución que funciona por instancias para ejecutar un programa de flujo de trabajo. Se puede construir para crear una nueva instancia de flujo de trabajo o a partir de un estado de instancia existente. Las API que expone el objeto WorkflowInstance.WorkflowInstanceControl son el conjunto mínimo de controles de tiempo de ejecución a partir de las que se pueden implementar operaciones de nivel más alto. Este conjunto de API representa toda la riqueza de funcionalidad del tiempo de ejecución. WorkflowInstance es una clase abstracta y se basa en la implementación de un host de sus métodos abstractos para proporcionar funcionalidad de host, como sincronización, persistencia, seguimiento y extensiones.

public ref class WorkflowInstance abstract
public abstract class WorkflowInstance
type WorkflowInstance = class
Public MustInherit Class WorkflowInstance
Herencia
WorkflowInstance
Derivado

Comentarios

WorkflowInstance es de un solo subproceso y supone que el host sincroniza todo el acceso a él. Si se intenta llamar simultáneamente a varias API, se producirá una excepción InvalidOperationException.

Internamente, una instancia WorkflowInstance tiene dos estados: En ejecución y En pausa. La única manera de hacer que el tiempo de ejecución pase del estado de pausa al de ejecución es llamando al método Run. Todas las acciones (excepto la de Pausa) se pueden realizar mientras el tiempo de ejecución se encuentra en el estado En pausa. El tiempo de ejecución volverá espontáneamente al estado En pausa en las siguientes situaciones:

  • Se ha producido un error grave en el tiempo de ejecución. El host se señalará mediante el método OnRequestAbort (que no señala una transición a En pausa) y, a continuación, lo notificará mediante el método OnNotifyPaused.

  • No se detectó una excepción en el flujo de trabajo y se escapó de la raíz. El host recibirá notificación mediante el método OnNotifyUnhandledException.

  • El programador se ha quedado sin elementos de trabajo y ahora está en estado Idle. El host recibirá notificación mediante el método OnNotifyPaused. Tenga en cuenta que el programador podría haberse quedado sin elementos de trabajo porque la instancia está en estado inactivo o porque la instancia ha finalizado. El valor State de la propiedad Controller se puede utilizar para diferenciar entre los dos.

El host puede solicitar un cambio del estado En ejecución a En pausa llamando a los métodos RequestPause o PauseWhenPersistable de la instancia WorkflowInstance.WorkflowInstanceControl devueltos por la propiedad Controller. No se debe considerar que esta solicitud tenga una respuesta concreta que significa que el host no debería intentar poner en correlación un método OnNotify* o el método OnRequestAbort con una llamada específica para poner en estado de pausa. En respuesta a una solicitud de pausa, el runtime puede realizar la transición al estado En pausa y llamar al método OnNotifyPaused mientras el programador todavía tiene elementos de trabajo pendientes. El valor State de la propiedad Controller se puede utilizar para determinar si el programador ya no tiene trabajo pendiente o si lo interrumpió una solicitud de pausa.

El método RequestPause de la instancia WorkflowInstance.WorkflowInstanceControl devuelto por la propiedad Controller es el único método al que se puede llamar mientras la instancia WorkflowInstancese encuentra en estado de En ejecución. Todos los demás métodos producirán una excepción InvalidOperationException si se los llama. Teniendo en cuenta las reglas de cómo realiza la instancia WorkflowInstance la transición desde un estado a otro, la noción pública de En ejecución y En pausa se puede definir de esta manera:

  • Running: el estado entre una llamada a Run y la siguiente WorkflowInstance. alnotify *.

  • En pausa: el estado entre la última WorkflowInstance. alnotify * y la siguiente llamada a Run .

Constructores

WorkflowInstance(Activity)

Inicializa una nueva instancia de la clase WorkflowInstance con la definición de flujo de trabajo especificada.

WorkflowInstance(Activity, WorkflowIdentity)

Inicializa una nueva instancia de la clase WorkflowInstance con la definición de flujo de trabajo e identidad de la definición especificados.

Propiedades

Controller

Obtiene la instancia WorkflowInstance.WorkflowInstanceControl para este objeto WorkflowInstance.

DefinitionIdentity

Obtiene o establece la identidad de definición de WorkflowInstance.

HostEnvironment

Obtiene o establece el entorno raíz de los argumentos y las variables de la instancia de flujo de trabajo.

Id

Obtiene el identificador único de la instancia de flujo de trabajo.

IsReadOnly

Obtiene un valor que indica si se ha inicializado la instancia de flujo de trabajo.

SupportsInstanceKeys

Obtiene un valor que indica si el host admite la asociación de la propiedad InstanceKeys con una instancia en tiempo de ejecución.

SynchronizationContext

Obtiene o establece el objeto SynchronizationContext utilizado para programar la instancia de flujo de trabajo.

WorkflowDefinition

Obtiene la definición de flujo de trabajo de la instancia de flujo de trabajo.

Métodos

BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

El tiempo de ejecución del flujo de trabajo lo llama para comenzar a enviar de manera asincrónica los registros de seguimiento pendientes a los participantes en el seguimiento.

DisposeExtensions()

Llama al método Dispose() en todas las extensiones que implementan la interfaz IDisposable.

EndFlushTrackingRecords(IAsyncResult)

El tiempo de ejecución llama a este método para finalizar la operación de seguimiento.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
FlushTrackingRecords(TimeSpan)

El tiempo de ejecución del flujo de trabajo llama a este método para enviar los registros de seguimiento pendientes a los participantes en el seguimiento.

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

Recupera la lista de actividad que está bloqueando la actualización del flujo de trabajo.

GetExtension<T>()

Devuelve una extensión del tipo especificado.

GetExtensions<T>()

Devuelve todas las extensiones encontradas del tipo especificado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

El host lo llama para inicializar la instancia de flujo de trabajo con los valores de argumentos y las propiedades de ejecución.

Initialize(Object)

El host lo llama para inicializar la instancia de flujo de trabajo con el estado de ejecución del flujo de trabajo.

Initialize(Object, DynamicUpdateMap)

El host lo llama para inicializar la instancia de flujo de trabajo con el estado de ejecución del flujo de trabajo y el mapa de actualización.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

Llamado por el tiempo de ejecución de flujo de trabajo para notificar al host que se deberían asociar con esta instancia nuevas claves de instancia.

OnBeginFlushTrackingRecords(AsyncCallback, Object)

Llamada asincrónica para pedir al host que vacíe los registros de seguimiento pendientes de realizar en los participantes en el seguimiento.

OnBeginPersist(AsyncCallback, Object)

Llamada asincrónica para pedir al host que haga persistir el flujo de trabajo.

OnBeginResumeBookmark(Bookmark, Object, TimeSpan, AsyncCallback, Object)

El tiempo de ejecución de flujo de trabajo llama al método para notificar al host que va a comenzar una operación de marcador de reanudación.

OnDisassociateKeys(ICollection<InstanceKey>)

El tiempo de ejecución de flujo de trabajo lo llama para notificar al host que un determinado conjunto de claves de instancia deben dejar de estar asociadas a esta instancia.

OnEndAssociateKeys(IAsyncResult)

Llamado por el tiempo de ejecución de flujo de trabajo para notificar al host que ha finalizado una operación de claves asociadas.

OnEndFlushTrackingRecords(IAsyncResult)

Llamado por el tiempo de ejecución de flujo de trabajo para notificar al host cuándo ha finalizado la operación de vaciado de los registros de seguimiento.

OnEndPersist(IAsyncResult)

Llamado por el tiempo de ejecución de flujo de trabajo para notificar al host que ha finalizado una operación de persistencia.

OnEndResumeBookmark(IAsyncResult)

El tiempo de ejecución de flujo de trabajo llama al método para notificar al host que ha finalizado una operación de marcador de reanudación.

OnNotifyPaused()

El tiempo de ejecución de flujo de trabajo lo llama para notificar al host que la instancia de flujo de trabajo ha pasado por la transición desde el estado de ejecución al estado de pausa.

OnNotifyUnhandledException(Exception, Activity, String)

El tiempo de ejecución de flujo de trabajo lo llama para notificar al host que se ha producido una excepción no controlada en la instancia de flujo de trabajo.

OnRequestAbort(Exception)

El tiempo de ejecución del flujo de trabajo lo llama para notificar al host que se ha solicitado una operación de anulación para la instancia de flujo de trabajo.

RegisterExtensionManager(WorkflowInstanceExtensionManager)

El host lo llama para registrar el administrador de extensiones especificado, validar que están presentes todas las extensiones requeridas e inicializar la colección de extensiones que se deben usar.

ThrowIfReadOnly()

Produce una excepción InvalidOperationException si se ha inicializado la instancia de flujo de trabajo, tal y como lo determina la propiedad IsReadOnly.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a