Altova FlowForce Server 2024 Advanced Edition

Ajouter la gestion d'erreur à une tâche

Accueil Préc Haut Suivant

Cet exemple illustre comment ajouter une gestion d'erreur dans une tâche. La tâche utilisée dans cet exemple recense les contenus d’un répertoire et sera invoquée depuis le navigateur, en tant que service Web. Vous allez apprendre à configurer FlowForce Server pour gérer le résultat de la tâche comme suit :

 

Si l’exécution de la tâche est réussie, afficher le résultat de la tâche dans le navigateur

Lorsque la tâche ne parvient pas à exécuter pour une raison quelconque, envoyer une notification d'e-mail à un destinataire nommé.

Lorsque l'exécution de tâches s'achève, quel que soit le statut d'exécution, connecter l'ID interne de tâche dans un fichier sur le système local.

 

En termes FlowForce Server, dans cet exemple, vous créez un bloc protégé avec deux conditions de gestion d'erreur : "Sur Erreur" et "Toujours" (chacun gérera un des scénarios mentionné ci-dessus).

 

Conditions préalables

Licences nécessaires : FlowForce Server

Les services FlowForce Web Server et FlowForce Server doivent écouter sur l’adresse réseau et le port configurés.

Les paramètres mail de FlowForce Server doivent être configurés, voir Configurer les paramètres de mail

Vous nécessitez un compte d'utilisateur FlowForce Server avec des permissions vers un des conteneurs (par défaut, le conteneur /public est accessible à tout utilisateur authentifié).

La tâche créée dans cet exemple écrit une sortie dans le disque. C’est pourquoi, dans le système d’exploitation sur lequel FlowForce Server est installé, il vaus faut un accès de lecture t d’écriture à certains répertoires. Cet exemple utilise C:\FlowForceExamples\ErrorHandling.

 

Astuces

Bien que cet exemple utilise des chemins et des commandes Windows, vous pouvez le tester sur d’autres systèmes d'exploitation en modifiant les chemins et les commandes.

 

Créer la tâche

1.Sur l’ordinateur sur lequel FlowForce Server est exécuté, créer un répertoire qui sera le répertoire de travail de cette tâche. Cet exemple utilise C:\FlowForceExamples\ErrorHandling.

2.Se connecter dans l’interface d'administration Web de FlowForce Server et se rendre dans le conteneur /public/Examples. Le conteneur public/Examples devrait déjà exister si vous avez bien suivi les exemples précédents, sinon, le créer en utilisant la commande Créer | Créer conteneur.

3.Cliquer sur Créer tâche et saisir un nom pour la tâche que vous êtes en train de créer, par exemple "ListDirectory". La description de la tâche est optionnelle.

4.Sous "Paramètres d’entrée de la tâche", cliquer sur la touche add, et ajouter un paramètre de type "string". Lors de l'exécution de la tâche, le paramètre fournira le chemin du répertoire.. Dans cet exemple, le nom du paramètre est "inputDir"; il sera utilisé dans les étapes suivantes.

5.Sous Étapes d'exécution, cliquer sur nouvelle étape handling erreur/succès.

6.Sous "Exécuter avec le handling erreur/succès", cliquer sur la touche add, et choisir d'ajouter une nouvelle étape d'exécution, avec les paramètres suivants :

 

Exécuter la fonction

Chercher la fonction /system/shell/commandline.

Commande

Saisir la commande shell suivante :

 

dir {inputDir}

 

inputDir est le nom du paramètre créé précédemment. Le nom est contenu dans des accolades parce que lors de l’exécution de la tâche, son contenu sera remplacé dynamiquement par la valeur de paramètre. Pour plus d’informations, voir Intégrer des expressions dans des champs String .

Abandonner sur erreur

Ne pas toucher à cette option Pour plus d’informations, voir la description de la fonction /system/shell/commandline.

Répertoire de travail

Saisir le chemin dans le répertoire de travail créé précédemment, par exemple C:\FlowForceExamples\ErrorHandling

7.Sous la condition "En cas d'erreur", cliquer la touche add et choisir d'ajouter une nouvelle étape d'exécution, avec les paramètres suivants :

 

Exécuter la fonction

Chercher la fonction /system/mail/send.

De

Saisir l'adresse e-mail de l'expéditeur, par exemple flowforce@localhost. Ne pas remplir ce champ si vous avez configuré les paramètres e-mail à partir de la page d'administration.

À

Saisir l'adresse e-mail.

Objet

Saisir le sujet de l'e-mail de notification comme suit :

 

Job {instance-id()} has failed

 

La partie située entre les accolades est une expression FlowForce qui appelle la fonction instance-id pour obtenir l'ID unique de l'instance de tâche (échouée) actuelle.

Corps de texte

Saisir l'expression suivante :

 

Exit Code: {string(exitcode(failed-step()))}

Standard Error: {content(stderr(failed-step()))}

Error message: {error-message(failed-step())}

 

Les parties situées entre les accolades sont deux expressions FlowForce. Ces expressions reçoivent la sortie erronée et la convertissent en un string qui sera le corps de texte de l'e-mail :

 

La fonction failed-step retourne le result de l'étape échouée. Il s'agit d'un type FlowForce abstrait qui, pour devenir plus utile, doit être fourni en tant qu'un argument à la fonction exitcode, stderr  ou error-message, voir ci-dessous.

La fonction exitcode reçoit le code de sortie de l'erreur depuis le result, en tant que nombre, en partant du principe qu'il y a un code d'erreur de sortie.

La fonction stderr reçoit la sortie d'erreur standard de l'erreur provenant de result, en tant que stream, en partant du principe qu'il y a une sortie d'erreur standard.

La fonction error-message obtient le texte du message d'erreur FlowForce tel qu'il apparaît dans le journal. Il peut aussi retourner un string vide s'il n'y a pas d'erreur ou s'il n'est pas possible techniquement d'extraire le texte de l'erreur

La fonction string convertit le code de sortie numérique dans un string (cela doit être effectué parce que le corps de l'e-mail est de type string).

La fonction content convertit la sortie d'erreur depuis un stream vers un string.

 

Les fonctions exitcode et stderr retournent une valeur uniquement si l'exécution produit un code de sortie et une sortie d'erreur, respectivement. Cela est généralement le cas pour des erreurs comme celles produites par la ligne de commande. La fonction error-message sert uniquement à des fins d'information et il n'est pas garanti qu'elle retourne le texte de l'erreur pour toutes les configurations de tâches possibles et les conditions d'erreur rencontrées.

 

8.Cliquer sur nouvelle étape handling erreur/succès, puis sélectionner Toujours faire.

9.Sous la condition "Toujours faire", cliquer sur la touche add et choisir l'ajouter une nouvelle étape d'exécution, avec les paramètres suivants :

 

Exécuter la fonction

Chercher la fonction builtin_function/system/shell/commandline.

Commande

Saisir la commande shell suivante :

 

echo {instance-id()} >> JobLog.txt

 

Sur Windows, cette commande écrit l'ID de tâche dans un fichier appelé JobLog.txt. Si le fichier contient des données, le nouveau texte sera ajouté après les données existantes.

Répertoire de travail

Saisir le chemin dans le répertoire de travail créé précédemment, par exemple (C:\FlowForceExamples\ErrorHandling).

 

Ce répertoire sera utilisé pour résoudre le chemin vers le fichier JobLog.txt.

 

À ce niveau, la tâche devrait ressembler à l'exemple suivant (si vous n'avez pas utilisé des chemins ou des commandes shell différentes).

fs_error_handling_01

10.Pour transformer la tâche en un service Web, cocher la case Rendre cette tâche disponible via HTTP... et saisir le nom du service Web, par exemple.

fs_error_handling_02

Notez le nom de service, vous en aurez besoin pour appeler le service Web.

 

11.Sous "Identifiants", choisir une entrée d'identifiant existant ou spécifier un identifiant local (voir Identifiants).

12.Cliquer sur Enregistrer.

 

Exécuter la tâche

À ce niveau, vous avez achevé la configuration de tâche. Étant donné que cette tâche est exposée en tant que service Web, vous pouvez l’exécuter d’une des manières suivantes :

 

Se rendre sur Accueil, puis cliquer sur Afficher tous les déclencheurs et les services actifs. Ensuite, cliquer sur l’URL de la tâche affichée dans la colonne "Info ».

Saisir http://127.0.0.1:4646/service/ListDirectoryService dans la barre d'adresse du navigateur. Noter que cette URL fonctionne uniquement si le service FlowForce Server écoute l’adresse d’hôte par défaut et le nom de port. Si vous avez défini d’autres paramètres d’hôte et de port dans la Page de Configuration, modifier l’adresse.

Si vous définissez le champ optionnel Nom d’hôte du FlowForce Server depuis la Page de configuration, vous pouvez exécuter l'appel de service Web directement depuis la page de configuration de la tâche, en cliquant sur la touche fs_ic_call_ws adjacente à la case à cocher Rendre cette tâche disponible via HTTP. Sinon la touche ne sera pas affichée.

 

Lorsque vous êtes invité à accéder au service Web, fournissez les mêmes identifiants que vous utilisez pour vous connecter à FlowForce Server.

 

Vous ne fournirez vos identifiants d’utilisateur FlowForce Server pour l’authentification HTTP qu’à des fins de test. Pour la production, il est recommandé de créer un nouvel utilisateur FlowForce, d’accorder la permission Service - Utiliser à cet utilisateur dans le conteneur dans lequel la tâche est située, puis d’accéder au service Web avec le compte d’utilisateur correspondant. Pour désactiver l'authentification HTTP et rendre le service Web public, accorder la permission Service - Utiliser à l’utilisateur Anonymous, voir Comment fonctionnent les permissions.

 

Puisque cette tâche prend des paramètres, vous serez invité à fournir une valeur de paramètre lorsque vous accédez au service Web depuis le navigateur.

fs_error_handling_03

Si vous saisissez un chemin de répertoire valide comme C:\, par exemple, la tâche est exécutée et le résultat est affiché dans le navigateur.

 

De plus, à chaque fois que vous exécutez la tâche, l’ID de l’instance de tâche est ajoutée aux contenus du fichier JobLog.txt, conformément à la condition "Toujours" configurée précédemment.

 

Pour tester la condition "Sur Erreur", changer le paramètre "inputDir" en une valeur volontairement incorrecte (par exemple, un chemin qui n’existe pas). Dans ce cas, le navigateur affichera une erreur et FlowForce Server enverra un e-mail à l’adresse spécifiée dans le champ du destinataire du handler "Sur Erreur". Par exemple, l'e-mail pourrait ressembler à l'exemple suivant :

fs_error_handling_04

Comme indiqué ci-dessus, les fonctions d'erreur utilisées dans cet exemple ne garantissent pas qu'une valeur sera retournée pour chaque configuration de tâche possible et imaginable. C'est pourquoi, le niveau de détail fournit par l'e-mail dépend de votre configuration de tâche et du type d'erreur rencontrée et il ne faut pas s'attendre à ce que les champs d'e-mail Exit Code, Standard Error et Error message contiennent toujours du texte. La référence la plus autoritaire pour la cause de l'erreur est le journal FlowForce Server.

© 2017-2023 Altova GmbH