Les fonctions de nœud simplifient la représentation de structures de données hiérarchiques

Les fonctions des nœuds MapForce simplifient la transformation de données hiérarchiques, telles que les nœuds XML ou les fichiers CSV, JSON, EDI, ou les champs de bases de données, en permettant aux utilisateurs de définir une fonction de traitement des données au niveau du nœud et de l'appliquer de manière récursive à tous les éléments descendants.

De même, des valeurs par défaut peuvent être attribuées aux nœuds et appliquées automatiquement à leurs éléments descendants.

Les paramètres par défaut et les fonctions de nœud sont particulièrement utiles lorsque la tâche de mappage et de transformation des données nécessite la même logique de traitement pour plusieurs éléments descendants dans une structure, par exemple :

  • Remplacer les valeurs nulles par une autre valeur, de manière récursive pour tous les éléments descendants
  • Remplacer une valeur spécifique (par exemple, "N/A") par une autre valeur, de manière récursive, pour tous les éléments descendants
  • Remplacez toutes les valeurs nulles de la base de données lorsque vous lisez des données à partir d'une table de base de données
  • Supprimer tous les espaces superflus à la fin de toutes les valeurs provenant d'une base de données source
  • Ajouter un préfixe ou un suffixe personnalisé à toutes les valeurs écrites dans un fichier ou une base de données cible
  • Formatage des valeurs de sortie
  • Et beaucoup d'autres

Les valeurs par défaut et les fonctions de nœud simplifient la représentation de données hiérarchiques en éliminant la nécessité de copier-coller la même fonction plusieurs fois dans une représentation. La répétition inutile de la même fonction encombre la structure de la représentation et la rend plus difficile à comprendre ou à modifier.

Examinons un exemple.

La correspondance entre XML et CSV présentée ci-dessous est un exemple appelé OrderinUSD.mfd, fourni dans le projet MapForce Examples, et elle illustre à la fois l'efficacité et la flexibilité des fonctions de nœud.

Cet exemple permet de convertir des données provenant d'un fichier XML source en un fichier texte au format CSV. Des exigences supplémentaires sont les suivantes : le prix, exprimé en euros dans le fichier source, doit être converti en dollars, et le nom de chaque article commandé doit être converti en majuscules.

Une fonction de nœud satisfait les deux exigences et est indiquée par le symbole de la fonction, situé à droite du nœud "Article". Un double-clic sur le symbole de la fonction ouvre la fenêtre de définition des fonctions du nœud, située au-dessus du panneau de mappage :

Cette fonction à nœud unique combine deux opérations MapForce pour effectuer à la fois les conversions de devise et de chaîne de caractères nécessaires. Il est possible d'ajouter davantage de lignes à cette fonction en cliquant sur les icônes situées à gauche pour définir une valeur par défaut ou ajouter une ligne de fonction.

La première colonne de chaque ligne indique si la ligne s'applique à un seul niveau d'enfant ou à tous les descendants du mode parent.

Le deuxième champ définit le type de données qui sera modifié. En cliquant sur le bouton «...», une fenêtre de dialogue s'ouvre, comme celle présentée ici, pour permettre de choisir le type de données :

Notre exemple contient des lignes pour seulement deux types de données, mais une fonction de nœud pourrait être définie avec des lignes pour tous les types de données possibles. Pour chaque enfant du nœud parent, la ligne correspondant au type de données approprié sera exécutée.

Le troisième champ indique si la ligne utilise une fonction ou une valeur par défaut. Dans les deux cas, le bouton "Modifier" permet de définir le contenu de cette ligne

La définition d'une fonction de nœud se fait en faisant glisser des fonctions depuis la fenêtre de la bibliothèque de fonctions, et/ou en définissant des constantes pour la fonction, puis en les connectant aux sources et aux sorties.

L'élément "Amount" (montant) dans le fichier d'entrée exemple représente en réalité la quantité commandée pour chaque article, et ne doit pas être multiplié par le facteur de conversion de devise défini dans la fonction du nœud. Il est facile de définir "Amount" comme une exception en cliquant avec le bouton droit sur le symbole de la fonction correspondante et en désélectionnant l'option "Hériter des fonctions du nœud de sortie" dans le menu contextuel.

Il existe une exigence supplémentaire concernant le fichier de sortie CSV. Le prix unitaire de chaque article et le sous-total pour chaque article doivent être indiqués avec un signe dollar au début. La définition du fichier de sortie montre que les colonnes "SinglePrice" et "Price" sont définies comme des données de type chaîne de caractères, et MapForce convertit automatiquement les valeurs décimales provenant de la source en chaînes de caractères.

L'ajout des signes dollar au début est réalisé grâce à une fonction de nœud supplémentaire, appliquée au nœud "Rows" du composant de sortie, comme illustré ici :

Pour éviter que cette fonction de nœud ne s'applique à toutes les colonnes contenant des données textuelles, des exceptions ont été appliquées aux colonnes "Entreprise" et "Article". L'exemple de mappage de données hiérarchiques à l'aide de fonctions de nœuds est maintenant complet.

Comme pour les autres exemples de MapForce, un fichier de données source est fourni pour cette transformation, afin d'illustrer les résultats. Voici le fichier source tel qu'il apparaît dans XMLSpy Éditeur XML:

Les règles de transformation MapForce qui nécessitent des opérations répétitives, comme celles utilisées dans un système de traitement de commandes en ligne, peuvent être automatisées grâce à MapForce Advanced Server. Pour exécuter la règle de transformation, que ce soit pour des tests ou pour une conversion ponctuelle, il suffit de cliquer sur le bouton "Sortie" situé sous la fenêtre de conception de la règle.

Quoi qu'il en soit, notre exemple de mappage produit ce résultat :

En plus de la correspondance de données décrite dans cet article, MapForce propose plusieurs autres exemples de fonctions de nœud. Le système d'aide intégré de MapForce comprend même un tutoriel étape par étape pour créer une correspondance de fonctions de nœud à partir de zéro.

Pour constater par vous-même comment les fonctions de nœud simplifient la transformation de données hiérarchiques, cliquez ici pour télécharger une version d'essai gratuite et entièrement fonctionnelle de MapForce.

MISE À JOUR : Consultez cet article pour découvrir une autre stratégie permettant d'appliquer des fonctions aux nœuds en fonction des métadonnées du nœud, telles que le nom du nœud, sa longueur, la précision du type de données du nœud, des annotations personnalisées et bien plus encore.