WorkflowInstance Classe

Définition

WorkflowInstance est un runtime léger par instance permettant l'exécution d'un programme de flux de travail. Il peut être construit pour créer une instance de flux de travail entièrement nouvelle ou créer une instance à partir de l'état d'une instance existante. Les API exposées par WorkflowInstance.WorkflowInstanceControl constituent le jeu minimal de contrôles runtime à partir duquel des opérations de niveau supérieur peuvent être implémentées. Ce jeu d'API représente l'éventail complet de fonctionnalités du runtime. WorkflowInstance est une classe abstraite qui repose sur l’implémentation par un hôte de ses méthodes abstraites pour fournir des fonctionnalités hôtes telles que la synchronisation, la persistance, le suivi et les extensions.

public ref class WorkflowInstance abstract
public abstract class WorkflowInstance
type WorkflowInstance = class
Public MustInherit Class WorkflowInstance
Héritage
WorkflowInstance
Dérivé

Remarques

WorkflowInstance est un thread unique et suppose que l’hôte synchronise tous les accès à celui-ci. Toute tentative d'appel simultané de plusieurs API lève une InvalidOperationException.

En interne, un WorkflowInstance a deux états : En cours d'exécution (Running) et Suspendu (Paused). Le seul moyen de faire passer le runtime de l'état Suspendu à l'état En cours d'exécution est d'appeler Run. Toutes les actions (sauf Suspendre) ne peuvent être réalisées que lorsque le runtime présente l'état Suspendu. Le runtime sera spontanément suspendu dans les situations suivantes :

  • Une erreur fatale s'est produite dans le runtime. L'hôte sera signalé via OnRequestAbort (lequel ne signale pas une transition à l'état Suspendu), puis notifié via OnNotifyPaused.

  • Une exception dans le flux de travail n'a pas été interceptée et a placé la racine dans une séquence d’échappement. L'hôte sera notifié via la méthode OnNotifyUnhandledException.

  • Le planificateur n’a plus d’élément de travail et est maintenant Idle. L'hôte sera notifié via la méthode OnNotifyPaused. Notez que le planificateur peut ne plus avoir d’élément de travail car l’instance est inactive ou terminée. La valeur State de la propriété Controller peut être utilisée pour différencier ces deux causes.

L'hôte peut demander le passage de l'état En cours d'exécution à l'état Suspendu en appelant les méthodes RequestPause ou PauseWhenPersistable de l'instance WorkflowInstance.WorkflowInstanceControl retournée par la propriété Controller. La réponse à cette demande ne doit pas être considérée comme signifiant que l'hôte ne doit pas essayer de mettre en corrélation OnNotify * ou OnRequestAbort avec un appel de suspension spécifique. En réponse à une demande de suspension, le runtime peut passer à l’état Suspendu et appeler OnNotifyPaused alors que le planificateur a encore des éléments de travail en attente. La valeur State de la propriété Controller peut être utilisée pour déterminer si le planificateur n'a plus de travail ou s'il a été interrompu par une demande de suspension.

La méthode RequestPause de l'instance WorkflowInstance.WorkflowInstanceControl retournée par la propriété Controller est la seule méthode qui peut être appelée lorsque WorkflowInstance se trouve dans l'état En cours d'exécution. Toutes les autres méthodes lèveront une InvalidOperationException. En prenant en considération les règles déterminant la manière dont WorkflowInstance passe d'un état à un autre, les états En cours d'exécution et Suspendu peuvent être définis de la manière suivante :

  • Running-l’état entre un appel à Run et le suivant WorkflowInstance. OnNotify *.

  • Paused : état entre la dernière WorkflowInstance. OnNotify * et l’appel suivant à Run .

Constructeurs

WorkflowInstance(Activity)

Initialise une nouvelle instance de la classe WorkflowInstance avec la définition de flux de travail spécifiée.

WorkflowInstance(Activity, WorkflowIdentity)

Initialise une instance de la classe WorkflowInstance avec la définition de flux de travail et l'identité de définition spécifiées.

Propriétés

Controller

Obtient l'instance WorkflowInstance.WorkflowInstanceControl de ce WorkflowInstance.

DefinitionIdentity

Obtient ou définit l'identité de la définition de l'WorkflowInstance.

HostEnvironment

Obtient ou définit l’environnement racine pour les arguments et les variables de l’instance de flux de travail.

Id

Obtient l'identificateur unique de l'instance de workflow.

IsReadOnly

Obtient une valeur qui indique si l'instance de flux de travail a été initialisée.

SupportsInstanceKeys

Obtient une valeur qui indique si l'hôte prend en charge l'association de InstanceKeys avec une instance à l'exécution.

SynchronizationContext

Obtient ou définit le SynchronizationContext utilisé pour planifier l'instance de flux de travail.

WorkflowDefinition

Obtient la définition de flux de travail de l'instance de flux de travail.

Méthodes

BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

Appelée par l'exécution du flux de travail pour commencer à envoyer de façon asynchrone des enregistrements de suivi en attente aux participants de suivi.

DisposeExtensions()

Appelle la méthode Dispose() sur toutes les extensions qui implémentent IDisposable.

EndFlushTrackingRecords(IAsyncResult)

Appelée par l'exécution du flux de travail pour terminer l'opération de suivi.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
FlushTrackingRecords(TimeSpan)

Appelée par l'exécution du flux de travail pour envoyer les enregistrements de suivi en attente aux participants de suivi.

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

Récupère la liste d'activité qui bloque la mise à jour du flux de travail.

GetExtension<T>()

Retourne une extension du type spécifié.

GetExtensions<T>()

Retourne toutes les extensions trouvées pour le type spécifié.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

Appelée par l’hôte pour initialiser l’instance de flux de travail avec les valeurs d’argument et les propriétés d’exécution.

Initialize(Object)

Appelée par l'hôte pour initialiser l'instance de flux de travail avec l'état à l'exécution du flux de travail.

Initialize(Object, DynamicUpdateMap)

Appelée par l'hôte pour initialiser l'instance de flux de travail avec l'état à l'exécution et la carte de mise à jour.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

Appelée par l'exécution du flux de travail pour notifier l'hôte que les nouvelles clés d'instance doivent être associées à cette instance.

OnBeginFlushTrackingRecords(AsyncCallback, Object)

Appel asynchrone pour demander à l'hôte de vider les enregistrements de suivi vers les participants de suivi.

OnBeginPersist(AsyncCallback, Object)

Appel asynchrone pour demander à l'hôte de rendre le flux de travail persistant.

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

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'une opération de reprise de signet commence.

OnDisassociateKeys(ICollection<InstanceKey>)

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'un certain jeu de clés d'instance ne doit plus être associé à cette instance.

OnEndAssociateKeys(IAsyncResult)

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'une opération d'association de clés est terminée.

OnEndFlushTrackingRecords(IAsyncResult)

Appelée par l'exécution du flux de travail pour notifier l'hôte lorsque l'opération de vidage des enregistrements de suivi est terminée.

OnEndPersist(IAsyncResult)

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'une opération de persistance est terminée.

OnEndResumeBookmark(IAsyncResult)

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'une opération de reprise de signet est terminée.

OnNotifyPaused()

Appelée par l'exécution du flux de travail pour notifier l'hôte que l'instance de flux de travail est passée de l'état En cours d'exécution à l'état Suspendu.

OnNotifyUnhandledException(Exception, Activity, String)

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'une exception non gérée s'est produite dans l'instance de flux de travail.

OnRequestAbort(Exception)

Appelée par l'exécution du flux de travail pour notifier l'hôte qu'une opération d'abandon a été demandée pour l'instance de flux de travail.

RegisterExtensionManager(WorkflowInstanceExtensionManager)

Appelée par l'hôte pour inscrire le gestionnaire d'extensions spécifié, vérifier que toutes les extensions obligatoires sont présentes et initialiser la collection d'extensions à utiliser.

ThrowIfReadOnly()

Lève une InvalidOperationException si l'instance de flux de travail a été initialisée, comme déterminé par IsReadOnly.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à