Traitement des erreurs dans les services

Pour les services, vous pouvez utiliser des événements intermédiaires d'erreur pour intercepter les erreurs et des événements de fin d'erreur pour émettre des erreurs.

Tableau 1. Utilisation des événements d'erreur dans les services
Evénement de service Description
Evénement intermédiaire d'erreur Icône associé à la limite d'une erreur (événement de limite d'erreur) Intercepte les erreurs de l'étape.
Icône d'événement intermédiaire d'erreur faisant partie du flux de services Intercepte toutes les erreurs soulevées par les étapes du flux de service qui ne sont pas traitées par un événement intermédiaire d'erreur à la frontière d'une étape. Cet événement ne peut comporter que des liens sortants.
Icône d'événement de fin d'erreur Emet une erreur et termine le traitement de ce service. Par exemple, vous pouvez utiliser un événement de fin d'erreur lorsque vous souhaitez qu'un résultat coach arrête un service utilisateur.

Pour déterminer si vous devez utiliser des événements d'erreur dans les service, tenez compte des points suivants :

  • Vous devez associer des événements intermédiaire d'erreur aux étapes dans le service. L'événement d'erreur associé est également connu sous le nom d'événement de limite d'erreur.
  • Incluez des événements intermédiaires d'erreur dans le flux de services pour qu'ils fassent office de gestionnaires d'erreurs globaux dans le service.
  • Déterminez si les erreurs peuvent être traitées immédiatement et si le traitement normal peut continue ou si une autre erreur est émise à un autre niveau. Implémentez ensuite le traitement d'erreur de bas en haut.
  • Utilisez un événement de fin d'événement pour émettre une erreur spécifique. Vous pouvez indiquer un code d'erreur et des données d'erreur pour cette erreur.
  • Envisagez de définir les données d'erreur pour intercepter des erreurs spécifiques. Par exemple, vous pouvez filtrer le code d'erreur des types d'erreurs qui sont interceptées et mapper le code d'erreur à une variable après l'interception des erreurs. Lorsque toutes les erreurs ont été interceptées, ou si un seul code d'erreur est précisé, les données d'erreur sont capturées dans un XMLElement dans la variable tw.system.error.

Utilisation des événements intermédiaires d'erreur dans le flux de services

Les événements intermédiaires d'erreur au sein d'un flux de services offrent de nombreuses options de traitement des erreurs, mais ils doivent être utilisés avec précaution afin d'éviter tout comportement inattendu.

Un événement intermédiaire d'erreur peut agir en tant que gestionnaire d'erreurs global dans le service. Il intercepte les erreurs qui ne sont pas encore traitées par les événements d'erreur de limite. Cet événement ne peut pas intercepter les erreurs spécifiques, il s'agit d'un événement d'erreur de type catchAll. Il est destiné à traiter les erreurs pouvant être corrigées dans ce flux de service en particulier. Nous vous conseillons de ne pas le reconnecter au flux normal. Une fois l'erreur traitée, la logique doit être conclue avec un événement de fin. Une fois le traitement d'erreurs terminé, vous pouvez entrez de nouveau le service et exécuter le flux normal avec les données corrigées.

Pour gérer les erreurs de validation survenues dans un service de sauvegarde pour objets métier partagés, recherchez l'erreur BPMBOSaveFailedError qui est disponible dans la liste des erreurs spécifiques. Cette erreur est disponible uniquement sur les noeuds qui sauvegardent le contexte d'exécution, que ce soit automatiquement (par exemple, les Coaches) ou explicitement en activant l'option Sauvegarder le contexte d'exécution. Pour en savoir plus à ce sujet, voir Services de sauvegarde pour les objets métier partagés.

Pour traiter les erreurs d'un service et reconnecter ce dernier au flux normal du même service, utilisez un ou plusieurs événements de limite d'erreur avec les erreurs spécifiques et les options catchAll.

Capture d'écran illustrant un diagramme du service décrit dans les paragraphes ci-dessus.

Remarque : Un événement intermédiaire d'erreur du flux de service intercepte également les erreurs émises par le biais des événements de fin d'erreur dans ce flux de services.
Important : L'événement intermédiaire d'erreur peut provoquer des boucles sans fin si les activité de suivi de l'événement émettent une erreur modélisée ou une erreur d'exécution. Le moteur de service empêche la formation de ces boucles. Dans certains cas, il peut se révéler utile de modéliser une boucle avec un événement de fin d'erreur intermédiaire. Pour autoriser le bouclage, ajoutez l'entrée suivante au fichier 100Custom.xml :
<server>   <!-- insert if not already present -->
       <execution-context> <!-- insert if not already present -->
            <prevent-intermediate-error-loop  merge="replace">false</prevent-intermediate-error-loop>
        </execution-context> <!-- insert if not already present -->  
</server> <!-- insert if not already present -->

Le fait de modifier cette propriété supprimera la détection de boucle d'erreur du moteur de service. Ne modifiez cette propriété que si tous vos modèles ne présentent aucune boucle d'erreur sans fin.