Travailler avec plusieurs copies de Transformers personnalisés
Si un même Transformer personnalisé est utilisé plusieurs fois (après l'avoir dupliqué par exemple), il est important de comprendre comment chaque instance de son utilisation fait référence à des parties différentes du traitement.
Par exemple, si vous avez une seule instance d'un Transformer personnalisé qui fait référence à un nom d'attribut, la première instance d'un Transformer personnalisé verra le nom de l'attribut comme étant disponible, car FME peut garantir que l'attribut est disponible dans ce flux. Cependant, lorsque vous réutilisez le Transformer, FME ne peut pas garantir que le Transformer sera connecté à un flux contenant le même ensemble d'attributs.
Pour éviter le problème potentiel de référence à un attribut inexistant, lorsque vous dupliquez et réutilisez un Transformer personnalisé, FME publie automatiquement tous les paramètres qui sont référencés en entrée. Cela vous permet de sélectionner individuellement différents attributs pour chaque instance du Transformer, et de garder le Transformer personnalisé valide et utilisable.
Il y a deux scénarii potentiels lorsque vous réutilisez un Transformer personnalisé :
- Si vous voulez changer les attributs d'entrée, alors l'utilisation de paramètres publiés est la meilleure solution. Voir Réutilisation des Transformers personnalisés : modification des attributs d'entrée, ci-dessous.
- Si vous savez que vous allez utiliser les mêmes attributs, vous pouvez introduire un AttributeExposer pour remplacer le ou les paramètres publiés. Voir Autres moyens d'identifier les attributs référencés.
Réutiliser des Transformers personnalisés : modifier les attributs en entrée
L'exemple ci-dessous montre ce qui se passe lorsque vous créez un Transformer personnalisé qui fait référence à des attributs différents à chacune de ces utilisations.
Cet exemple montre un ensemble de Transformers. Comme le montre le résumé, le champ Amount du Buffer est lié à l'attribut road_width créé via le Transformer Creator.
|
Créer un Transformer personnalisé à partir du Transformer Bufferer. Sélectionnez le Transformer personnalisé et copiez/collez-le (ou choisissez Dupliquer dans le menu de commandes). Le bouton des propriétés du Transformer dupliqué est rouge parce que le Transformer recherche l'attribut road_width original.
|
Cliquer sur l'onglet Principal dans la fenêtre de traitement.
Sélectionnez le Transformer personnalisé et copiez/collez-le (ou choisissez Dupliquer dans le menu de commandes). Le bouton des propriétés du Transformer dupliqué est rouge parce que le Transformer recherche l'attribut road_width original.
|
Cliquer sur l'onglet qui contient le nouveau Transformer personnalisé.
FME a automatiquement publié le paramètre Buffer Amount, et l'attribut manquant est listé sous les paramètres publiés dans le Navigateur.
Si vous supprimez ce paramètre publié, le bouton des propriétés du Transformer personnalisé passera rouge, car il fait référence à l'attribut road_width. |
Publier des paramètres signifie que si vous connectez maintenant les rivières au Transformer personnalisé réutilisé, vous avez la possibilité de choisir river_length comme attribut au lieu de road_width.
|
Cet exemple montre une situation où un Transformer personnalisé est utilisé deux fois avec les mêmes attributs.
|
Autres manières d'identifier les attributs référencés
L'insertion d'un AttributeExposer dans le Transformer personnalisé peut identifier tout attribut caché référencé. Dans ce scénario, il n'est pas nécessaire de sélectionner un autre attribut lorsque vous insérez un Transformer personnalisé dans un traitement.
Dans cet exemple, nous avons supprimé le paramètre publié que FME a créé et l'avons remplacé par l'insertion d'un AttributeExposer. En exposant manuellement l'attribut road_width, nous avons rendu l'attribut disponible dans chaque instance de ce Transformer personnalisé.
Note: Notez cependant que vous devez être absolument certain que chaque projet qui utilise le Transformer personnalisé comporte l'attribut road_width, puisqu'il est désormais "en dur" dans le Transformer.
|