Altova MapForce 2025 Enterprise Edition

Utilisation de ressources contextuelles et efficaces

Accueil Préc Haut Suivant

Ce chapitre explique ce qui détermine le nombre de fois qu’un appel de service Web est appelé. Dans le mappage qui contient un appel de service Web, si le contexte le permet, le même service Web peut être appelé de multiples fois, ce que vous allez vouloir éviter en temps normal. Tenir compte les cas décrits ci-dessous.

 

Requête

Si la connexion à l’item Request du composant de service Web contient une séquence de valeurs, le service Web sera appelé plusieurs fois, une fois pour chaque item dans la séquence.

 

Réponse

Dépendant des connexions dans la partie Response, un service Web peut être appelé de multiples fois, ce qui pourrait ne pas être la configuration souhaitée. Tenez compte des exemples ci-dessous.

 

Exemple 1

Par exemple, le service Web illustré ci-dessous est appelé deux fois, car il n’existe pas de contexte parent commun pour les nœuds statusCode et body dans le composant cible.

mf_semantics_09

Selon la règle générale de mappage, le traitement commence par l’item racine cible (Rows dans ce cas). Le nœud Rows n’a pas de connexion, donc MapForce procède en descendant dans la hiérarchie. Pour remplir l’item cible statusCode, le premier appel au service Web est effectué. Puis, le mappage doit peupler l’item body. Pour cette raison, il procède au deuxième appel dans le service Web. Si plus d’enfants du nœud Rows étaient connectés au service Web, un nouvel appel serait établi pour chaque nœud enfant.

 

Puisque aucun statusCode ni body n’a de contexte parent explicite (en d’autres termes, leur parent n’est pas connecté à l’item source), ils ne peuvent pas réutiliser des données depuis leur parent et doivent les extraire depuis le composant d’appel du service Web. Vous pouvez facilement résoudre ce problème en établissant une connexion de Response à Rows, comme affiché ci-dessous :

mf_semantics_10

Grâce à la connexion entre Response et Rows, le contexte de parent commun existe désormais pour tous les nœuds enfant du nœud Rows, et le service Web est désormais appelé une seule fois. Après un premier appel, toutes les données du service Web se trouvent dans le contexte actuel et sont disponibles aux enfants de l’élément Rows. Pour cette raison, aucun appel de service Web redondant n’aura lieu.

 

Exemple 2

Dans le deuxième exemple, la réponse de l’appel du service Web est mappée dans les deux composants cible (capture d’écran ci-dessous). Dans MapForce, vous pouvez consulter uniquement une sortie à la fois, et chaque fois que vous cliquez sur le bouton ic-preview d’une des cibles, un appel est lancé au service Web. Toutefois, si vous exécutez le mappage avec MapForce Server ou comme tâche FlowForce, le mappage produira toutes les sorties dans l’ordre spécifié, du haut vers le bas. Ceci signifie également que le mappage effectuera deux appels de service Web, pour chaque cible séparément, car il n’existe pas de contexte cible commun.

MF_API2MultTargets

Une meilleure solution serait de sortir la réponse en un seul composant cible. Vous pouvez ensuite le partager en de multiples composants, le cas échéant. Voir le design de mappage ci-dessous.

mf_ws_02

 

Les services Web dans les fonctions définies par l’utilisateur

Si un service Web se trouve dans une fonction définie par l'utilisateur, et si l’UDF est appelé plusieurs fois sur la durée de l’exécution de mappage, le service Web sera appelé au moins autant de fois. Cela peut être évité en configurant les paramètres de l’UDF. Pour les détails, voir Contexte dans des UDF.

 

© 2018-2024 Altova GmbH