Copy Files

www.altova.com Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  Exemples de configuration de tâche >

Copy Files

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:\Source vers un nouveau répertoire C:\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.

 

Conditions préalables

Licences requises : FlowForce Server
FlowForce Server doit être exécuté sous l'adresse de réseau et le port configurés (voir Configurer l'adresse de réseau et le port)
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:\Source vers le répertoire C:\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 l'interface d'Administration de FlowForce Server et cliquer sur Configuration. Ouvrir le conteneur /public et créer une nouvelle tâche. Saisir le nom d'une 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, cliquer sur Nouvelle étape d'exécution et saisir /system/compute à côté de "Exécuter fonction". Vous pouvez aussi sélectionner 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:\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 :

ff_example_copy_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. Le cas échéant, vous pouvez ajuster le caractère générique pour ne sélectionner que des extensions de fichier spécifiques, par exemple *.txt. Pour plus d'informations concernant les expressions dans FlowForce, voir Le langage d'expression FlowForce.

 

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

ff_example_copy_04

Astuce : Vous pouvez aussi copier l'expression list-files("C:\Source\*.*") 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, cliquer sur la touche add et ajouter 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.

ff_example_copy_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 fenêtre Source soit cliquer sur la touche ff_ic_set_to et choisir 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 la touche 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'à lors 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 Déclencheurs horaires. Ou bien, vous pouvez contrôler la présence éventuelle de modifications dans le répertoire de source  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, cocher la case Rendre cette tâche disponible via HTTP... et saisir le nom du service Web.

ff_example_copy_06

Enfin, la tâche nécessite vos identifiants pour être exécutée. C'est pourquoi, saisir votre nom d'utilisateur et mot de passe que vous utilisez pour votre système d'exploitation (pas votre nom d'utilisateur et mot de passe FlowForce Server) dans la section "Identifiants", comme indiqué 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

Les identifiants sont la combinaison du nom d'utilisateur et du mot de passe associés à un compte d'utilisateur sur le système d'exploitation sur lequel la tâche FlowForce Server est exécutée. Lorsque vous définissez une tâche dans FlowForce Server, vous devez fournir les identifiants avec lesquels la tâche doit être effectuée. Veuillez noter que si le compte utilisateur associé avec les identifiants fournis ne dispose pas des droits suffisants pour le système d'exploitation, la tâche ne pourra pas être exécutée correctement.

 

Exécuter la tâche

Pour tester la tâche, saisir http://127.0.0.1:4646/service/CopyFilesService dans la barre d'adresse du navigateur, si FlowForce Server est exécuté sur l'hôte et le nom de port par défaut. Si vous avez défini d'autres paramètres d'hôte et de port dans la page de Configuration, changer l'adresse, comme décrit dans Définir les paramètres de réseau. Si vous êtes invité à saisir des identifiants lorsque vous accédez au service Web, fournir les mêmes identifiants que vous utilisez pour vous connecter sur FlowForce Server.

 

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. Les 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 :

ff_example_copy_07


© 2019 Altova GmbH