Altova MapForce 2024 Enterprise Edition

Exemple: Retourner une valeur par condition

Accueil Préc Haut Suivant

Cet exemple vous montre comment retourner une valeur simple depuis un composant, basée sur une condition vraie/faux. Une Condition If-Else ( mff_ic_if_else ) est utilisée pour atteindre l'objectif. Veuillez noter que les Conditions If-Else ne doivent pas être confondues avec les composants de filtre. Les Conditions If-Else sont uniquement applicables si vous souhaitez traiter des valeurs simples de manière conditionnelle (string, entier, etc.). Si vous souhaitez filtrer des valeurs complexes comme des nœuds, utiliser un filtre à la place (voir Exemple : Filtrer des nœuds).

 

Le mappage décrit dans cet exemple est disponible sous le chemin suivant : <Documents>\Altova\MapForce2024\MapForceExamples\ClassifyTemperatures.mfd.

mff_map_ClassifyTemperatures

Ce mappage lit des données depuis un XML de source qui contient des données de température ("Temperatures") et écrit des données vers un XML de cible XML qui se conforme au même schéma. Il existe plusieurs autres composants entre la cible et la source, un d'entre eux est la condition if-else (marquée en rouge), qui est aussi le sujet de cette rubrique.

 

L'objectif de ce mappage est d'ajouter une brève description à chaque enregistrement de température dans la cible. Spécifiquement, si la température se situe au-dessus de 20 degrés Celsius, la description doit être "high". Si la température se situe à 5 degrés Celsius, la description doit être "low". Pour tous les autres cas, aucune description ne doit être écrite.

 

Pour atteindre cet objectif, un traitement par condition est nécessaire ; c'est pourquoi une Condition If-Else a été ajoutée au mappage. (Pour ajouter une Condition If-Else, cliquer le menu Insérer, puis cliquer sur la Condition If-Else.) Dans ce mappage, la Condition If-Else a été étendue (avec l'aide de la touche gui_add_function_parameter) pour accepter deux conditions : bool1 et bool2.

 

Les conditions elles-mêmes sont fournies par les fonctions greater et less, qui ont été ajoutées depuis la bibliothèque principale MapForce (pour plus d'informations, voir aussi Ajouter une fonction au mappage). Ces fonctions évaluent les valeurs fournies par deux composants d'entrée, appelés "upper" et "lower". (Pour ajouter un composant d'entrée, cliquer sur le menu Insérer, puis sur Insérer entrée. Pour plus d'informations à propos des composants d'entrée, voir Fournir des paramètres au mappage.

 

Les fonctions greater et less retournent soit true soit false. Le résultat de fonction détermine ce qui est écrit dans l'instance cible. Concrètement, si la valeur de l'attribut "temp" dans la source est supérieur à 20, la valeur de constante "high" est passée à la condition if-else. Si la valeur de l'attribut "temp" dans la source est inférieure à 5, la valeur de constante "low" est passée dans la condition if-else. L'entrée otherwise n'est pas connectée. C'est pourquoi, si aucune des conditions ci-dessus n'est remplie, rien ne sera passé dans le connecteur de sortie result.

 

Enfin, le connecteur de sortie result fournit cette valeur (une fois pour chaque enregistrement de température) vers l'attribut "desc" dans la cible.

 

Une fois que vous êtes prêt à consulter le résultat de mappage, cliquer sur l'onglet Sortie. Veuillez noter que la sortie XML résultante contient maintenant l'attribut "desc", que la température soit supérieure à 20 ou inférieure à 5.

 

...  
  <data temp="-3.6" month="2006-01" desc="low"/>
  <data temp="-0.7" month="2006-02" desc="low"/>
  <data temp="7.5" month="2006-03"/>
  <data temp="12.4" month="2006-04"/>
  <data temp="16.2" month="2006-05"/>
  <data temp="19" month="2006-06"/>
  <data temp="22.7" month="2006-07" desc="high"/>
  <data temp="23.2" month="2006-08" desc="high"/>
...

Sortie XML après exécution du mappage

© 2018-2024 Altova GmbH