Créer des projets de Service Web SOAP
Cet exemple vous montre comment créer un service Web SOAP dans MapForce. Le projet de mappage créé dans cet exemple est aussi disponible dans le chemin suivant : <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\Query Person database.mfp. Le service Web dans cet exemple a les objectifs suivants :
•Extraire depuis une base de données SQLite sur un serveur un ensemble d'enregistrements concernant des personnes. Cette base de données doit satisfaire à des critères de recherche, par le biais d'une Requête SOAP. (La requête est saisie au moment de l'exécution sur le client, et est ensuite envoyée au serveur. Le serveur retourne ensuite une réponse XML contenant les résultats de la recherche).
•Insérer de nouveaux enregistrements dans la base de données SQLite, également par le biais de requêtes SOAP. (Les détails personnels sont fournis dans la Requête SOAP. En cas de succès, le serveur retourne une confirmation que les détails de personne ont été ajoutés avec succès dans la base de données.)
Veuillez noter les éléments suivants :
•Le fait de créer le service Web dans MapForce ne dépend pas du langage de programmation cible ; il est identique lors de la génération de services Web Java ou C#. Les différences ne surgissent que lorsque vous compilez et déployez le service Web sur le serveur web, comme décrit plus bas dans cette documentation.
•Afin de générer des requêtes SOAP échantillon nécessaires pour consulter la sortie de mappage, cet exemple utilise XMLSpy Enterprise Edition. Le fichier WSDL source de ce projet MapForce a aussi été créé avec XMLSpy (et peut être validé avec lui). La conception des services Web dans MapForce est aussi possible sans XMLSpy ; néanmoins, dans ce cas, il vous faudra un client SOAP capable de générer des requêtes SOAP depuis des fichiers WSDL.
Créer un projet de service Web
Comme indiqué auparavant, un fichier WSDL est requis pour créer un service Web SOAP avec MapForce. Dans cet exemple, nous allons utiliser un fichier WSDL qui a été créé avec XMLSpy Enterprise edition. L'image ci-dessous illustre la structure WSDL telle qu'elle est affichée dans l'affichage WSDL de XMLSpy. Nous attirons votre attention sur la définition des deux opérations (getPerson et
putPerson) qui correspondent aux objectifs définis ci-dessus.
Note : | Le fichier WSDL doit être valide avant de pouvoir créer un projet de Service Web MapForce depuis celui-ci. |
Pour créer un projet de Service Web MapForce à partir de ce service web, suivre les étapes ci-dessous :
1.Dans le menu Fichier, cliquer sur Nouveau, et choisir "Web Service Project".
2.Chercher le fichier query.wsdl disponible dans le dossier <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\ . Une fois avoir sélectionné le fichier WSDL, MapForce remplit automatiquement les champs restants.
3.Cliquer sur OK.
4.Sur invitation, saisir le nom du nouveau projet WSDL, et cliquer sur Enregistrer.
La fenêtre Projet montre le projet et le nom WSDL, ainsi que chacune des opérations définies dans le fichier WSDL. Les deux opérations sont getPerson et putPerson.
Concevoir l'opération "getPerson"
Double-cliquer sur le fichier getPerson.mfd dans la fenêtre Projet pour charger son contenu dans le volet principal. Le composant getPersonSoapIn contient la requête (item) qui sera utilisée pour envoyer la requête à la base de données par le biais du service Web. Le composant getPersonSoapOut contient la structure Person définie dans le fichier WSDL.
Dans le menu Insérer, cliquer sur Base de données, et ajouter à la zone de mappage la base de données SQLite suivante : <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\people.sqlite. La base de données contient une seule table, Persons, dont les champs correspondent à ceux dans le composant getPersonSoapOut. Pour plus d'informations concernant l'ajout des base de données en tant que composants de mappage, voir Base de données et MapForce. Tracer des connexions entre les composants comme indiqué ci-dessous :
Le design de mappage ci-dessus n'est pas tout à fait achevé mais illustre très clairement ce qui se produira lors de l'exécution. La connexion entre part:Query et part:Result représente l'appel service Web. L'item part:Query du composant getPersonSoapIn est l'indicateur de requête (il s'agit de l'endroit où le string de requête est saisi dans le client SOAP). Les connexions entre la table de la base de données et l'item Person du composant getPersonSoapOutput extraient des valeurs depuis les champs de base de données correspondant et les font passer aux items cibles correspondants. Vous pouvez déjà rapidement prévisualiser la sortie comme suit :
1.Cliquer avec la touche de droite sur le composant getPersonSoapInput, et choisir Properties depuis le menu contextuel.
2.Cliquer sur Chercher et choisir la requête d'exemple suivante : <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\getPersonRequest.xml.
3.Cliquer sur OK.
4.Cliquer sur l'onglet Sortie.
À cette étape, le mappage extrait tous les enregistrements de la table de la base de données, ce qui ne nous est pas encore très utile. C'est pourquoi nous devons ajouter un filtre et extraire uniquement les items qui correspondent au string de requête.
1.Ajouter la fonction concat, en la glissant depuis la fenêtre Bibliothèques. Cette fonction sera utilisée pour concaténer les noms First et Last de chaque personne.
2.Dans le menu Insertion, cliquer sur Constant, et ajouter une constante qui contient un caractère espace. La constante fournira un caractère espace entre le prénom et le nom de famille extrait depuis la base de données.
3.Ajouter la fonction contains, en la glissant depuis la fenêtre Bibliothèques.
4.Cliquer avec la touche de droite sur la connexion entre la table source Persons et le nœud cible Person, et choisir Insérer Filtre: Nœuds/Lignes depuis le menu contextuel.
5.Tracer des connexions entre les composants comme indiqué ci-dessous.
Mappage "getPerson"
Comme illustré ci-dessus, la fonction contains retourne true lorsque le string de requête correspond au nom complet ou partiel de toute personne dans la base de données (où "name" est fourni par la fonction concat, et consiste en le prénom, suivi d'un espace suivi du nom de famille). Lorsqu'il existe une correspondance, les détails de la personne correspondante sont contenus dans le message de réponse. C'est pourquoi, dans cet exemple, la valeur de recherche"Ro" retournerait tous les enregistrements suivants : "Martin Rope", "Ronald Superstring", "Robert Darkmatter", et "Roger Gravity".
Concevoir l'opération "putPerson"
Double-cliquer sur le fichier putPerson.mfd dans la fenêtre Projet pour charger ses contenus dans le volet principal. Le composant putPersonSoapInput fournit la structure de requête (des items qui seront insérées dans la base de données par le biais du service Web). Le composant putPersonSoapOutput représente le résultat de l'appel de service Web. Il contient une partie de confirmation pour afficher les résultats de l'appelant du service Web.
Suivre les mêmes instructions que ci-dessus pour ajouter les choses suivantes au mappage :
•La base de données Access people.sqlite (c'est là que les données fournies par l'appelant de service Web sera inséré)
•La fonction concat et les cinq constantes (elles seront utilisées pour construire le string de confirmation affiché à l'appelant du service Web)
Tracer des connexions entre les composants comme indiqué ci-dessous :
Mappage putPerson
Dans le mappage ci-dessus, la connexion entre part: Put et la base de données entraînera une mise à jour de la base de données lors de l'exécution. Du côté cible, la réponse part: Confirmation est obtenue en concaténant plusieurs champs depuis la requête, ainsi que du texte fourni par des constantes. Pour plus d'informations concernant les mappages qui mettent à jour les bases de données, voir Mapper des données dans des bases de données.
Pour consulter la sortie du mappage :
1.Cliquer avec la touche de droite sur le composant getPersonSoapInput.
2.Cliquer sur Chercher et choisir la requête d'exemple suivante : <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\putPersonRequest.xml.
3.Cliquer sur l'onglet Sortie.
Lorsque vous prévisualisez le mappage, MapForce générera la demande INSERT nécessaire pour mettre à jour la base de données et l'afficher dans la fenêtre Sortie, mais n'effectuera pas la mise à jour proprement dite. Pour exécuter la demande par rapport à la base de données, sélectionner la commande de menu Sortie | Exécuter Script SQL.
Par contraste, lorsque le service Web compilé est déployé sur un serveur et appelé par un client, la base de données sera mise à jour immédiatement. Voir aussi Exécuter des mappages qui modifient des bases de données.
Prévisualiser la sortie de mappage
Les mappages créés à partir des fichiers WSDL peuvent être prévisualisés dans MapForce avant de les déployer sur un serveur Web. Pour prévisualiser ces mappages, une requête SOAP échantillon (fichier XML) est nécessaire et celle-ci doit être conforme au fichier WSDL. Vous pouvez créer une requête échantillon pour chaque opération (mappage) se trouvant dans votre projet de service Web soit avec XMLSpy soit avec un autre client SOAP de votre choix. Si vous utilisez XMLSpy, exécutez la commande de menu SOAP | Créer nouvelle requête SOAP pour générer la requête. Si XMLSpy est installé avec MapForce, vous pouvez générer une requête échantillon directement à partir de MapForce, par exemple :
1.Cliquer avec la touche de droite sur le composant getPersonSoapInput dans le mappage et choisir Propriétés depuis le menu contextuel.
2.Cliquer sur Créer.
3.Sur invitation, enregistrer le fichier XML dans un emplacement sur le disque.
Le fichier est généré avec des valeurs d'entrée fictives (par exemple, "String") au lieu de paramètres d'entrée. Avant d'utiliser le fichier de requête, veuillez vous assurer de remplacer les valeurs fictives avec les vraies valeurs de requête que vous souhaitez utiliser. Pour ce projet, deux requêtes échantillon sont disponibles :
1.<Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\getPersonRequest.xml. Utiliser ce fichier pour consulter la sortie du mappage getPerson. Par défaut, ce fichier de requête fournit la valeur "Ro" en guise d'entrée au service Web. Cela permettra d'extraire depuis la base de données tous les enregistrements de personnes dont le prénom ou le nom de famille contient le texte "Ro".
2.<Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\putPersonRequest.xml. Utiliser ce fichier pour consulter la sortie du mappage putPerson. Par défaut, ce fichier de requête fournit les détails d'une personne fictive en guise d'entrée dans le service Web.
Pour obtenir une sortie différente tout en consultant les deux mappages, il faut donc éditer les fichiers ci-dessus afin qu'ils contiennent les valeurs d'entrée que vous souhaitez tester.
Étapes suivantes
Vous êtes maintenant prêt à générer du code qui met en place de service Web (soit Java soit C#), le compiler, et le déployer vers un serveur, comme décrit plus bas dans les exemples suivants :