Altova MapForce 2024 Enterprise Edition

Dans des mappages qui contiennent des appels de service Web, si le contexte le permet, le même service Web peut être appelé plusieurs fois, chose que généralement vous essayez d’éviter. Veuillez noter les cas suivants :

 

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

Si un service Web se trouve dans une fonction définie par l'utilisateur, et si la FDU est appelée 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 la FDU. Pour plus de détails, voir Fonctions définies par l'utilisateur.

Généralement, vous souhaiterez connecter l’item Response d’un service Web dans un item cible qui :

oest censé n’être créé qu'une seule fois (par exemple, un composant de sortie simple, ou l’item supérieur de composants de cible complexes)

one se trouve pas dans un contexte de parent qui exige plusieurs itérations de l’item (et donc plusieurs appels de service Web, potentiellement).

 

En ce qui concerne le troisième cas ci-dessus, il pourrait entraîner vers un service Web qui est appelé plusieurs fois, bien que la sortie de mappage serait celle attendue. Par exemple, le service Web illustré ci-dessous est appelé deux fois en raison de la connexion manquante de Response à Rows.

mf_semantics_09

Comme d’habitude, l’exécution du mappage commence avec l’item racine cible (Rows, dans ce cas). Rows n’a pas de connexion, donc MapForce continue en descendant le long de la hiérarchie. Pour remplir l’item cible statusCode, le premier appel au service Web est effectué. Ensuite le mappage doit remplir l’item body, afin de pouvoir passer le second appel au service Web. Si plus d’enfants de Rows étaient connecté au service Web, un nouvel appel se produirait pour chacun.

 

La raison est que dans le mappage ci-dessus, ni statusCode ni body n’ont un contexte parent explicite (en d’autres termes, leurs parents ne sont pas connectés à un item de source). En conséquence, ils ne peuvent pas réutiliser des données depuis leur contexte parent et doivent l’extraire individuellement depuis le composant de source, qui, dans ce cas est un service Web. Ce problème est aisément réglé en tirant une connexion depuis Response vers Rows, comme indiqué ci-dessous :

mf_semantics_10

Grâce à la connexion entre Response et Rows, le service Web est appelé une seule fois seulement. Une fois que le premier appel se produise, toutes les données de service Web se trouvent dans le contexte actuel et sont disponibles aux enfants de Rows, donc plus aucun appel de service Web redondant n’aura lieu.

© 2018-2024 Altova GmbH