Type : Python scripté

Vous pouvez écrire un script Python qui affecte la valeur d'un paramètre du traitement au moment de l'exécution. 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é.

Modèles 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 le script Python

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  Votre code doit contenir une instruction de retour (return) sur la dernière ligne de code. S'il n'y a pas d'instruction de retour (et en supposant qu'il y ait plus d'une ligne de code), FME ajoutera l'instruction de retour au début de la ligne. Exemple pour une seule ligne de codeFermé
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 du Reader Types d'entités à lire ; 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 additionnelles

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

Action Exemples
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

Installer d'autres paramètres Non applicable
É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
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 instructions print ou stdout.write, seule la première apparaîtra.