Type : Script Python et Tcl

Si vous choisissez Scripté (Python) ou Scripté (Tcl) dans les champs de la boîte de dialogue Ajouter/Modifier un paramètre, vous pouvez écrire un script qui affecte la valeur d'un paramètre à l'exécution du traitement. Ce script calculera une valeur et l'affectera à un paramètre global avant même que les données ne soient lues (par exemple, vous pourriez vouloir ouvrir une base de données, extraire une valeur, puis exécuter le traitement).

Vous pouvez aussi utiliser ces paramètres dans un Transformer personnalisé.

Templates FME Hub

Les modèles qui contiennent des paramètres Script (Python) peuvent être téléchargés à partir de FME Hub. Pour les télécharger :

  • Sélectionner Fichier > Nouveau
  • Sélectionner FME Hub.
  • Dans la barre de recherche, taper python.
  • Choisissez l'un des modèles depuis la liste en haut à droite.

Exemple : Regrouper des couches dans un Traitement (script Python)

Définir le paramètre dans le Traitement.

Vous pouvez utiliser le paramètre Script" (Python) pour permettre le regroupement de types d'entités (couches) dans un traitement. Dans cet exemple, tiré de l'un des modèles décrits ci-dessus, le paramètre vous permet de choisir le regroupement par différentes couches lorsque vous exécutez le traitement.

Ouvrez le gestionnaire de paramètres publiés de Workbench.

Le paramètre est défini à l'aide des options suivantes :

Ecrire un script Python (ou Tcl)

Cliquez sur le bouton de navigation à côté du champ Valeur pour afficher l'éditeur de code source. Le code dans l'éditeur est décrit ici :

Code Description
Définit la variable featureTypes à vide.
Si vous choisissez Bus Information en paramètre global, définissez les types d'entités à Bus Routes et BusStops.
Si vous choisissez Route et Rail en paramètre global de couches, définissez les types d'entités suivants : metrorail et Routes
Si vous choisissez All transits en paramètre global de couches, définissez les types d'entités suivants : metrorail, Routes, Itinéraires Bus, Arrêts de Bus et Etiquettes.

Note: Pour Python et Tcl, votre code doit contenir une déclaration return sur la dernière ligne de code. S'il n'y a pas de déclaration return (et en supposant qu'il y a plus d'une ligne de code), FME ajoutera return au début de la ligne. Exemple pour une seule ligne de code : FerméLorsque l'on trouve la dernière ligne de code, les expressions multiligne ou les commentaires ne sont pas supportés.

Retourne la variable featureTypes.

Le paramètre global feature_types_to_read sera défini selon la valeur de ce retour.

Le paramètre global feature_types_to_read est lié au paramètre readerFeature Types to Read ; ainsi, les types d'entités qui sont lus seront les types d'entités spécifiés dans cette valeur de retour.

Note: Prenez note du style d'indentation des blocs de code. L'éditeur de code source de FME utilise des tabulations pour l'indentation des blocs, alors que d'autres environnements de développement Python (comme IDLE) remplacent les tabulations par quatre espaces (par défaut). Les styles mixtes dans un même bloc ne sont pas autorisés. Pour éviter les erreurs, vous devrez peut-être remplacer les tabulations ou les espaces dans le code copié depuis un autre environnement.

Exécuter le Traitement

Pour exécuter le traitement, sélectionnez Exécuter > Saisie des paramètres ou appuyez sur Ctrl+r, ou cliquez sur le bouton .

La boîte de dialogue Paramètres de traitement s'affiche. Le traitement sera mise en pause jusqu'à ce que vous choisissiez les couches à regrouper.

Si vous sélectionnez Tout, les entités sont définies comme tous les types d'entités :

Si vous sélectionnez seulement Information Bus, par exemple, les types d'entités sont définis comme Itinéraires Bus et ArrêtsBus :

Actions Python/Tcl supplémentaires

Ce tableau donne des exemples d'actions qu'il est possible d'inclure dans votre script Python ou Tcl.

Action Python Tcl
Accéder aux autres paramètres

FME_MacroValues['MacroName']

FME_MacroValues est un lexique où la clé est le nom de la macro et la valeur est la valeur de la macro

$FME_MacroValues(MacroName)

FME_MacroValues est un lexique où la clé est le nom de la macro et la valeur est la valeur de la macro

Changer la valeur de la macro dans le lexique n'aura en aucun cas un effet en-dehors de votre code.

Installer d'autres paramètres Non applicable

pose {MACRO MyOtherMacro someValue};

Noter que cela va installer ce paramètre dans le lexique FME_MacroValues après l'exécution de votre code.

Changer FME_MacroValues directement dans votre code si vous souhaitez accéder à la valeur mise à jour plus tard dans votre code.

Écrire dans le fichier de log. Le message apparaîtra dans la fenêtre de journal du Workbench en contexte d'exécution avec la couleur indiquée par le niveau d'erreur. Non applicable

pose {Tcl2 FME_LogMessage fme_fatal {message message}}

Pour écrire à la fin du fichier de log. Le message apparaîtra à la fin, au niveau "Info".

print ‘my message’ ou sys.stdout.write('dive in error')

Si vous avez plusieurs déclarations stdout.write, seule la première apparaîtra.

pose {Tcl2 error {my message}}

Voir l'aide FME Factories and Functions pour une description complète de la fonction FME_LogMessage.