Partager via


Orchestration ExceptionHandler

La solution de gestion des processus d'entreprise utilise deux types d'exceptions : les exceptions de système et les exceptions d'application. Les exceptions de système incluent des erreurs de ressource, telles qu'un échec de connexion réseau. Il se peut qu'un tel problème puisse se résoudre de lui-même après un intervalle afin que la solution tente à nouveau toutes les opérations qui produisent des exceptions de système. Les exceptions d'application sont produites par des problèmes moins susceptibles de se résoudre d'eux-mêmes, tels que des erreurs logiques ou une certaine forme d'incohérence. La solution utilise l’orchestration ExceptionHandlerOrch pour traiter les erreurs système et d’application.

Les étapes de traitement des commandes (CableOrder1, CableOrder2) et leurs orchestrations satellites (Activate, Analyze, Cancel, Change, Complete, Validate) utilisent toutes ExceptionHandlerOrch.

Notes

Vous pouvez lire cette section avec l’orchestration ExceptionHandlerOrch ouverte dans Microsoft Visual Studio.

Erreurs d'application

Le gestionnaire d’exceptions enregistre d’abord l’erreur en appelant la méthode PostError de l’objet ErrorHandler dans l’assembly Utilities . Le gestionnaire d'exceptions vérifie ensuite si l'erreur était une erreur système ou d'application. La capture d'écran suivante montre la branche d'orchestration qui traite les exceptions d'application :

Branche d’application d’ExceptionHandler Orchestrati

Pour une erreur d’application, l’orchestration construit une chaîne décrivant l’erreur et appelle l’orchestration ErrorHandlerOrch . Cette orchestration envoie l'erreur aux opérations où un opérateur décide de réparer l'erreur ou de terminer l'opération. Si l'opérateur répare l'erreur, le message réparé revient de l'orchestration ErrorHandlerOrch et l'opération est tentée à nouveau. Pour ce faire, le gestionnaire d’exceptions appelle la méthode Invoke de l’objet Recaller dans l’assembly Utilities . L’objet Recaller utilise la réflexion pour appeler le code à l’origine de l’erreur.

Si l’appel à Invoke réussit, le gestionnaire d’exceptions se ferme. Sinon, il effectue une boucle arrière et tente à nouveau l’appel à Invoke . Pour plus d’informations sur l’objet Recaller , consultez L’objet Recaller.

Erreurs système

Le diagramme suivant montre la branche d’erreur système de l’orchestration ExceptionHandler :

Erreur système de l’orchestration du gestionnaire

Pour une erreur système, le gestionnaire d’exceptions appelle d’abord l’orchestration CheckInterrupt , puis attend une minute. Cette attente permet aux erreurs temporaires, à court terme, telles que des problèmes de connexion réseau, de se résoudre avant une nouvelle tentative. Lors d'appels distants, le risque d'un problème réseau existe toujours.

Notes

Dans une conception pouvant être interrompue, en règle générale, vous voulez vérifier l'existence d'une interruption pendant ou immédiatement après une période d'attente afin de voir si une interruption a eu lieu.

Après l’attente, le gestionnaire utilise la méthode Invoke de l’objet Recaller pour exécuter le code d’origine. Si l'appel aboutit, le gestionnaire se ferme. Dans le cas contraire, le gestionnaire essaie à deux nouvelles reprises d'exécuter le code d'origine. Si les trois tentatives échouent, le gestionnaire construit une chaîne d’erreur et appelle l’orchestration ErrorHandlerOrch .

Si le traitement d'une exception de système provoque une exception, le bloc d'exception l'intercepte :

Gestionnaire d’exceptions pour l’exception de branche d’erreur

Le gestionnaire d'exceptions teste le type d'exception et décrémente le compte de tentatives s'il s'agit d'une exception de système ou définit un indicateur pour spécifier une exception d'application.

Orchestration ErrorHandlerOrch

Le diagramme suivant montre la première partie de l’orchestration ErrorHandlerOrch :

Orchestration du gestionnaire d’erreurs, Première partie

L’orchestration ErrorHandlerOrch teste d’abord le paramètre IsBadOrder pour voir si l’erreur est un ordre incorrect (IsBadOrder a la valeur true) ou une autre erreur. Si l'erreur est une commande incorrecte, elle attribue la destination du message à partir de l'adresse de l'expéditeur de la commande d'origine et renvoie le message au système de service client. Si l'erreur n'est pas une commande incorrecte, l'orchestration crée un message d'erreur de commande et l'envoie au système d'opérations.

Après chaque erreur, l'orchestration écoute un message de réponse ou un message d'interruption :

Gestionnaire d’erreurs deuxième partie

Si l'orchestration reçoit une réponse, elle la renvoie à l'appelant. Si l’orchestration reçoit un message d’interruption, elle transmet le message à un port d’interruption et lève une exception InterruptException personnalisée.

Pour plus d’informations sur la façon dont la solution utilise et gère les interruptions, consultez Gestion des interruptions dans la solution de gestion des processus métier.

Voir aussi

Gestion des exceptions dans la solution de gestion des processus d’entreprise
Exceptions personnalisées
Gestion des interruptions dans la solution de gestion des processus d’entreprise
Objet Recaller