Fonctions par défaut et Fonctions de nœud
Les fonctions par défaut et les fonctions de nœud sont particulièrement utiles lorsque vous souhaitez appliquer la même logique de traitement à plusieurs items descendants dans une structure, par exemple : Normalement, pour ce faire, vous devriez copier-coller la même fonction plusieurs fois sur le mappage. Néanmoins, cela encombrerait le mappage et le rendrait plus compliqué à lire. Les fonctions par défaut et fonctions de nœud peuvent être appliqués à un seul item ou à plusieurs items à la fois. Les défauts remplacent les séquences vides. Si la connexion transporte une valeur, le défaut sera ignoré.
Les défauts et fonctions de nœud sont idéales pour presque la plupart des composants qui ont une arborescence avec des nœuds (par ex., XML, EDI, composants Join, variables).
Les défauts et fonctions de nœud sont compatibles uniquement avec le langage de transformation Built-In. L'exécution de tels mappages provenant du code de programme C#, C++, Java, ou avec les transformations XSLT/XQuery générées n'est pas prise en charge. Du côté du serveur, vous pouvez exécuter ces mappages avec MapForce Server Advanced Edition.
Les avantages de fonctions de nœud et les défauts
Créer des fonctions de nœud et des défauts signifient définir une règle. Les règles ont les caractéristiques importantes suivantes qui les rendent particulièrement flexibles et faciles à utiliser :
•Héritage. Lorsque vous définissez une règle sur un item qui a des descendants, la règle sera héritée par des descendants par défaut sauf si vous avez choisi de désactiver cette option. Si l'item dans lequel vous définissez la fonction est doté de plusieurs niveaux d'items enfants imbriqués sous lui, vous pouvez choisir d'appliquer la règle uniquement aux items d'enfant directs, ou à tous les items descendants.
•Filtrer MapForce applique les règles de manière conditionnelle, basées sur le type de données de chaque item. Cela permet par exemple, d'appliquer certaines valeurs par défaut ou une fonction pour tous les items de type string, et un défaut différent ou une fonction pour tous les items de type décimal Pour les détails, voir le Scénario 2 dans Scénarios Use-Case. Vous pouvez également définir des options de filtrage plus avancées : Par exemple, vous pouvez spécifier un type de données à laquelle votre fonction doit correspondre (ceci pourrait être une catégorie de types de données tels que numérique), puis filtrer les nœuds de ce type de données basé sur le nom de nœud ou le type de nœud (par ex., integer). Pour plus de détails, voir le Scénario 5.
Par exemple, vous pouvez demander à MapForce de faire la chose suivante :
•Chaque fois qu'une valeur vide ou nulle survient, la remplacer avec une autre valeur et le faire récursivement pour tous les items descendants.
•Chaque fois qu'une valeur spécifique survient, la remplacer avec une autre valeur (ou avec un string vide), et le faire récursivement pour tous les items descendants.
•Remplacer toutes les valeurs null de la base de données avec des strings vides et du texte personnalisé.
•Ajouter un préfixe ou un suffixe à toutes les valeurs qui sont rédigées dans un fichier cible ou une base de données
Côté sortie vs. entrée
Vous pouvez définir des fonctions de nœud et des défauts du côté entrée, du côté sortie, ou des deux côtés d’un composant, dépendant de vos besoins. Dans MapForce, un mappage fonctionne de la manière suivante : (i) d’abord, il lit les données du composant source (par ex., un fichier XML), (ii) puis, en option, il les traite d’une manière (par ex., en utilisant une fonction), et (iii) finalement, il écrit les données dans un composant cible (par ex., une base de données). En tenant compte de ce principe de base, vous pouvez définir les fonctions de nœud et les défauts à des niveaux différents :
•Immédiatement après la lecture des données depuis la source, mais avant qu’elles ne soient traitées par votre mappage, ce qui signifie que la fonction/le défaut a été défini du côté de la sortie du composant source (voir l’exemple ci-dessous).
•Immédiatement avant l’écriture des données au composant cible (et une fois tous les traitements intermédiaires terminés), ce qui signifie que la . fonction/le défaut a été défini du côté de l’entrée du composant cible (voir l’exemple ci-dessous).
•À un stage intermédiaire du processus de mappage. Par exemple, si le mappage contient une variable intermédiaire de type complexe (par ex., une structure XML), vous pourriez réduire toutes les valeurs avant qu'elles soient fournies à la structure XML, ou juste après qu'elles soient retournées par la structure XML (voir l’exemple ci-dessous).
•Du côté sortie d’un composant de source et du côté entrée du composant cible. Dans l’exemple ci-dessous, un défaut a été défini pour tous les nœuds de type string dans le composant ArticlesOfClothing. Dans le composant ArticlesInfo, nous avons défini une fonction de nœud qui transformera toutes les valeurs de nœud e string en caractères majuscules.
Dans cette section
Cette section explique comment configurer une règle, décrit les scénarios de vie réelle dans lesquels les défauts et fonctions de nœud peuvent être utiles, et montre comment ajouter des métadonnées de nœud aux fonctions de nœud. La section est organisée en rubriques suivantes :
•Métadonnées de nœud dans les fonctions de nœud