Contexte et utilisation efficace des ressources
Cette rubrique explique ce qui détermine le nombre d'appels d'un service web. Dans un mappage contenant un appel à un service web, si le contexte le permet, le même service web peut être appelé plusieurs fois, ce que vous souhaiterez normalement éviter. Tenir compte les cas décrits ci-dessous.
Requête
Si la connexion à l'élément Requête du composant de service web contient une séquence de valeurs, le service web sera appelé plusieurs fois, une fois pour chaque élément de la séquence.
Réponse
En fonction des connexions dans la partie Réponse, un service web peut être appelé plusieurs fois, ce qui n'est pas forcément 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.

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'élément cible statusCode, le premier appel au service web est effectué. Puis, le mappage doit peupler l’item body. Par conséquent, un deuxième appel au service web est effectué. S’il y avait davantage d’enfants du nœud Rows connectés au service web, un nouvel appel serait effectué pour chaque nœud enfant.
Étant donné que ni statusCode ni body ne disposent d’un contexte parent explicite (en d’autres termes, leur parent n’est pas connecté à un élément source), ils ne peuvent réutiliser aucune donnée de leur parent et doivent les récupérer individuellement à partir du composant d’appel du service web. Vous pouvez facilement résoudre ce problème en établissant une connexion de Réponse à Rows, comme affiché ci-dessous :

Grâce à la connexion entre Réponse et Rows, un contexte parent commun existe désormais pour tous les nœuds enfants du nœud Rows, et le service web n'est désormais appelé qu'une seule fois. Après le premier appel, toutes les données du service web se trouvent dans le contexte actuel et sont accessibles aux enfants de l'élément Rows. Par conséquent, aucun appel redondant au service web n'aura lieu.
Exemple 2
Dans le deuxième exemple, la réponse à l'appel du service web est mappée vers deux composants cibles (capture d’écran ci-dessous). Dans MapForce, vous ne pouvez prévisualiser qu'une seule sortie à la fois, et chaque fois que vous cliquez sur le bouton
de l'une des cibles, un appel est envoyé 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. Cela signifie également que le mappage effectuera deux appels au service web, séparément pour chaque cible, car il n'existe pas de contexte cible commun.

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.

Les services Web dans les fonctions définies par l’utilisateur
Si un service web se trouve à l'intérieur d'une fonction définie par l'utilisateur et que cette UDF est appelée plusieurs fois pendant l'exécution du mappage, alors le service web sera appelé au moins autant de fois. Cela peut être évité en configurant les paramètres de l’UDF. Pour plus de détails, voir Contexte dans des UDF.