Altova FlowForce Server 2025 Advanced Edition

Cet exemple vous permet de copier plusieurs fichiers sur le système de fichier local avec l'aide d'une tâche FlowForce Server.

 

Partons du principe que vous souhaitez copier tous les fichiers depuis le répertoire C:\FlowForceExamples\CopyFiles\Source vers un nouveau répertoire C:\FlowForceExamples\CopyFiles\Target. (Dans un système UNIX, veuillez ajuster les chemins.) Il nous faut une étape "for-each" qui itère dans tous les fichiers se trouvant dans un répertoire, puis qui invoque la fonction /system/filesystem/copy pour chaque item dans la boucle loop.

 

Prérequis

Licences requises : FlowForce Server

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

Vous détenez un compte d'utilisateur FlowForce Server contenant des permissions vers un des conteneurs (par défaut, le conteneur /public utilisé dans cet exemple est accessible à tout utilisateur authentifié).

Cette tâche copie des fichiers depuis le répertoire C:\FlowForceExamples\CopyFiles\Source vers le répertoire C:\FlowForceExamples\CopyFiles\Target. Veillez à créer ces répertoires sur le système de fichier local avant de créer la tâche. Aussi, assurez-vous que le répertoire de source contient quelques fichiers pour tester la tâche.

 

Créer la tâche

Se connecter sur FlowForce Server et se rendre dans un conteneur pour lequel vous possédez une permission de créer de nouvelles tâches. Pour rester cohérent avec les autres exemples, ce tutoriel utiliser le conteneur /public/Examples. Si vous n’avez pas encore ce conteneur, le créer en utilisant la commande Créer | Créer Conteneur.

 

Dans le conteneur /public/Examples, créer une nouvelle tâche. Saisir un nom de tâche (par exemple, "CopyFiles"), et en option, une description de tâche.

ff_example_copy_01

Afin d'itérer sur des items se trouvant dans une liste, FlowForce Server permet une étale d'exécution "for-each". Cette étape itère sur une séquence (liste) d'items allant jusqu'au dernier item (inclus) dans la séquence. Dans cet exemple, notre séquence d'items sera la liste des fichiers se trouvant dans le répertoire de source. Pour créer la liste requise, cliquez sur Nouvelle étape d'exécution et saisissez /system/compute à côté de "Exécuter fonction". Vous pouvez aussi choisir ce chemin depuis la liste déroulante, voir ci-dessous.

ff_example_copy_02

Ensuite, saisir l'expression suivante dans le champ Expression :

 

list-files("C:\FlowForceExamples\CopyFiles\Source\*.*")

 

Ensuite, saisir un nom pour la liste dans le champ Attribuer le résultat de cette étape dans (dans ce cas, le nom est list). Cela permet de référer aisément à la liste de fichiers récemment qui sera créée dans une étape suivante. Votre première étape d'exécution devrait maintenant ressembler à l'exemple ci-dessous :

fs_ex_copyfiles_03

L'expression ci-dessus invoque la fonction d'expression list-files. La fonction prend un chemin en tant qu'argument (dans ce cas, C:\Source\*.*) et retourne la liste des fichiers (ou répertoires) dans le chemin donné. Veuillez noter que le chemin contient le caractère générique *.* pour sélectionner tous les fichiers dans le répertoire. Si nécessaire, vous pouvez ajuster le caractère générqiue pour sélectionner uniquement des extensions de fichier spécifiques, par exemple *.txt. Pour plus d'information concernant les expressions dans FlowForce, voir Expressions FlowForce.

 

Vous pouvez maintenant passer à l'étape de la création de l'étape d'itération "for-each". Cliquez sur Nouvelle étape For-Each et saisissez list dans le champ "dans séquence". (Cela réfère à la list créée dans l'étape d'exécution précédente.)

fs_ex_copyfiles_04

Astuce : Vous pouvez aussi copier l'expression dans le champ "dans séquence" de l'étape "for-each" et donc vous débarrasser entièrement de la première étape d'exécution.

 

Ensuite, cliquez sur la touche add et ajoutez une nouvelle étape d'exécution dans l'étape "for-each". Cette étape invoquera la fonction /system/filesystem/copy pour chaque item dans la boucle, comme illustré ci-dessous.

fs_ex_copyfiles_05

Comme indiqué ci-dessus, la fonction copy est appelée avec les arguments suivants :

 

La Source est l'item actuel (fichier) dans la boucle. Vous pouvez soit saisir {item} dans la boîte de Source ou cliquez sur la touche ff_ic_set_to et sélectionnez item.

La Cible est le chemin cible. Dans cet exemple, le chemin est saisi tel quel, néanmoins, vous pourriez également le fournir en tant qu'un argument de la tâche.

L'option Écraser est activée, ce qui signifie que si un fichier portant le même nom existe déjà dans le répertoire de source, il sera écrasé. Pour éviter cette situation, cliquer sur le bouton delete .

 

Pour simplifier la procédure, nous n'allons pas configurer les deux autres arguments contenus dans cet exemple. Pour plus d'informations, voir la description de la fonction /system/filesystem/copy.

 

La tâche créée jusqu'alors contient toutes les étapes de traitement nécessaires, mais ne contient pas encore de déclencheur. Pour déclencher la tâche à des intervalles réguliers, vous pouvez utiliser un déclencheur horaire, voir Minuteurs. Ou bien, vous pouvez contrôler le répertoire source pour des modifications et déclencher la tâche par le biais d'un déclencheur de système de fichier, voir Déclencheurs de système de fichier. Enfin, vous pouvez déclencher la tâche sur demande, en tant qu'appel de service Web.

 

Dans cet exemple, nous allons déclencher la tâche sur demande, en cliquant sur une URL dans le navigateur (en fait, cela invoque la tâche en tant qu'un service Web). 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.

ff_example_copy_06

Enfin, la tâche nécessite vos identifiants pour être exécutée. Pour cette raison, saisissez le nom utilisateur et mot de passe de votre système utilisateur (pas votre nom utilisateur et mot de passe FlowForce Server) dans la section « Identifiants », tel qu’affiché ci-dessous. En alternative, si vous avez créé des identifiants individuels auparavant, comme décrit dans Définir des identifiants, vous pouvez les sélectionner en utilisant l'option Sélectionner identifiant existant.

fs_deploy_mapping_05

 

Exécuter la tâche

Pour tester la tâche, suivre une des étapes 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/CopyFilesService 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 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.

 

En cas de réussite de l'exécution, la tâche copiera tous les fichiers depuis la source vers le répertoire cible. Sinon, un message d'erreur "Échec d'exécution de Service" s'affiche dans le navigateur. Si vous voyez cette erreur, contrôlez le journal de la tâche pour plus d'informations, voir Consulter le journal de tâche. Des causes possibles peuvent inclure des identifiants incorrects, des chemins de fichier incorrects, des permissions insuffisantes sur le système de fichier et d’autres. Par exemple, la tâche échoue si la case Écraser n'a pas été sélectionnée et que le répertoire cible contient déjà un fichier portant le même nom, comme illustré ci-dessous :

fs_ex_copyfiles_07

© 2018-2024 Altova GmbH