Ajouter la gestion d'erreur à une tâche
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.
Dans les termes de 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).
Prérequis
•Licences requises : FlowForce Server
•Les services FlowForce Web Server et FlowForce Server doivent écouter 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 disposez d’un compte 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 FlowForce Server et aller au 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 , 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 la condition "Exécuter avec handling erreur/succès", cliquez sur la touche et choisir d'ajouter une nouvelle étape d'exécution, avec les paramètres suivants :
Exécuter fonction | Chercher la fonction /system/shell/commandline. |
Commande | Saisir la commande shell suivante :
dir {inputDir}
Où 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’information, voir Intégrer des expressions dans les champs de String. |
Abandon sur erreur | Laisser cette option telle quelle. Ne pas toucher à cette option Pour plus d’informations, voir la description de la fonction /system/shell/commandline. |
StyleVision Server | Saisir le chemin du répertoire de travail créé précédemment, par exemple C:\FlowForceExamples\ErrorHandling |
7.Sous la condition "En cas d'erreur", cliquez sur la touche et choisir d'ajouter une nouvelle étape d'exécution, avec les paramètres suivants :
Exécuter 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 :
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 message | Saisir l'expression suivante :
Les parties entre accolades représentent 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'échec de l'étape. Il s'agit d'un type abstrait de FlowForce qui, afin de devenir plus utile, doit être fourni en tant qu'argument aux fonctions 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.
|
8.Cliquez sur gestion nouvelle erreur/nouveau succès, puis sélectionnez Toujours.
9.Sous la condition "Toujours", cliquer sur la touche et choisir l'ajouter une nouvelle étape d'exécution, avec les paramètres suivants :
Exécuter fonction | Chercher la fonction /system/shell/commandline. | |
---|---|---|
Commande | Saisir la commande shell suivante :
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. | |
StyleVision Server | Saisir le chemin du 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).
10.Pour transformer la tâche en un service Web, cochez la case Rendre cette tâche disponible via HTTP... et saisissez le nom du service Web, par exemple :
Notez le nom de service ; vous en aurez besoin pour appeler le service Web.
11.Sous « Identifiants », choisissez un enregistrement d'identifiant existant ou spécifiez un identifiant local Identifiant.
12.Cliquez sur Enregistrer.
Exécuter la tâche
À cette étape, vous avez complété 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 Ile 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 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 la tâche prend des paramètres, vous serez invité à fournir une valeur de paramètre quand vous accédez le service Web depuis le navigateur.
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 :
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. |