Share via


Gestion des erreurs dans les workflows

La gestion d'erreur dans Windows Workflow Foundation fait référence à la gestion d'exceptions de façon asynchrone. Cela signifie que les exceptions levées dans une activité (explicitement ou implicitement) sont interceptées par le moteur d'exécution de workflow puis sont planifiées dans une file d'attente pour être gérées plus tard. Ceci diffère de la gestion normale des exceptions dans ce sens que si une exception est levée dans un bloc try, elle est interceptée par le bloc catch exception approprié ou bien levée immédiatement pour l'utilisateur.

Raisons des exceptions

Dans un workflow, les exceptions peuvent être générées des différentes manières suivantes :

Exceptions d'interception

Dans la gestion d'erreur, si l'activité qui a levé l'exception ne peut pas la gérer, l'exception est transférée à son activité parente pour être résolue. L'exception est transférée au sommet de la hiérarchie du workflow jusqu'à ce qu'elle soit gérée ou que l'instance de workflow soit arrêtée par le moteur d'exécution de workflow.

La gestion de l'exception est faite par l'activité FaultHandlerActivity. Chaque activité FaultHandlerActivity est associée au type d'exception du .NET Framework et contient également un jeu d'activités exécutées si l'exception déclenchée correspond au type d'exception. Une activité FaultHandlerActivity est apparentée à une activité FaultHandlersActivity qui contient des activités FaultHandlerActivity de 0 à n. L'activité FaultHandlersActivity peut être une activité enfant de n'importe quelle activité composite.

Le but de la gestion des erreurs dans Windows Workflow Foundation est d'annuler le travail partiel et infructueux d'une activité dans laquelle une exception s'est produite. L'achèvement de l'activité FaultHandlerActivity n'est jamais considéré comme un achèvement réussi de son activité associée. Cela signifie que pendant que l'activité FaultHandlerActivity s'exécute, l'activité qui a levé l'exception est mise dans un état Erreur. Lorsque l'activité FaultHandlerActivity est achevée, l'activité associée est mise dans un état Fermé. De plus, toutes les activités sœurs de cette activité associée, telle que d'autres enfants d'une activité ParallelActivity, passent à l'état Annulation, puis à l'état Fermé. Elles n'ont jamais la possibilité de s'exécuter avec succès.

Gestion d'erreur et compensation

La différence entre la gestion d'erreur et la compensation est que la compensation peut être effectuée uniquement sur une activité qui s'est achevée avec succès, pas sur une activité qui a levé une exception et passée à un état Erreur ; toutefois, l'activité CompensateActivity peut être exécutée à l'intérieur d'une activité FaultHandlerActivity associée à une activité qui a levé une exception. Par exemple, un scénario typique de traitement de la compensation consisterait en l'achèvement d'une activité avec succès, alors qu'une exception a été levée ultérieurement dans une autre activité du workflow. Le gestionnaire d'erreur de cette activité contient un CompensateActivity qui inverse toutes les actions précédemment effectuées dans le workflow. Pour extrapoler, vous pouvez rembourser son argent à un client après qu'un ItemDiscontinuedException a été levé ultérieurement dans votre workflow par une autre activité.

Pour plus d'informations sur la gestion des erreurs, consultez Utilisation de l'activité FaultHandlerActivity et Utilisation de l'activité ThrowActivity.

Pour plus d'informations sur la compensation, consultez Utilisation de l'activité CompensateActivity.

Voir aussi

Référence

ThrowActivity

Concepts

Utilisation de l'activité FaultHandlerActivity
Utilisation de l'activité ThrowActivity

Autres ressources

Développement de workflows

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.