Data-mapping REST-webservices
MapForce 2016, release 2, bevat uitgebreidere functionaliteit voor: Data-mapping voor webdiensten, Het biedt uitgebreide ondersteuning voor REST-webservices. MapForce accepteert XML of JSON als antwoord van de webservice, maakt het definiëren van parameters mogelijk en ondersteunt aangepaste HTTP-headers. Gebruikers kunnen de webservice-interface handmatig definiëren of door instellingen te importeren vanuit een WADL-bestand of een URL. De handmatige definitie van REST-webservice-instellingen stelt ontwikkelaars in staat om instellingen te maken op basis van een sjabloon-URL. Dit is een handige stap wanneer ontwikkelaars REST-aanroepen testen en verfijnen in een webbrowser, omdat de URL kan worden gekopieerd vanuit de browser en als sjabloon kan worden gebruikt.

We hebben eerder opgemerkt dat de coördinaten die door GPS-systemen worden vastgelegd nauwkeurig zijn, maar dat hoogtegegevens daarentegen berucht onnauwkeurig zijn. De USGS (United States Geological Survey) biedt een REST-webdienst die query's accepteert met daarin lengte- en breedtegraden en nauwkeurige hoogtegegevens levert, zowel in XML- als in JSON-formaat. We kunnen deze webdienst gebruiken in een MapForce-datamapping om GPS-gegevens van een Garmin-apparaat bij te werken en tegelijkertijd het gegevensformaat van XML naar JSON om te zetten.
We beginnen met het testen van de webservice in een browservenster. De onderstaande URL opent een invoervorm waarmee u een voorbeeldquery kunt genereren:

Wanneer we op de knop "Hoogte ophalen" klikken, genereert het formulier een volledige REST GET-query, stuurt deze en toont het resultaat hieronder. We kunnen dit resultaat gebruiken om de reactie te modelleren voor onze datamapping.

We voegen de webservice toe aan onze mapping door op de knop "Webservicefunctie toevoegen" in de MapForce-werkbalk te klikken. Hierdoor wordt het dialoogvenster "Instellingen webserviceaanroep" geopend, waar we de URL van de USGS-service invoeren.

Vervolgens moeten we de parameters van de aanvraag en de inhoud van het antwoord definiëren. Dit creëert de elementen die nodig zijn voor de mapping, zoals te zien is in het volgende gedeelte van het dialoogvenster "Instellingen voor oproepen".

We hebben handig een JSON-schema gegenereerd in XMLSpy om de reactie te definiëren, op basis van het JSON-bestand dat is opgeslagen vanuit het browservenster. Hieronder is de XMLSpy-schemaweergave van de omgezette reactie te zien:

Het invoervormulier van de hoogtedienst van de USGS (United States Geological Survey) heeft ons alle informatie gegeven die we nodig hebben om de invoerparameters te definiëren, zodat we die kunnen toevoegen aan het volgende onderdeel van het dialoogvenster "Instellingen":

De eenheden en uitvoerwaarden voor elke aanvraag blijven tijdens de uitvoering ongewijzigd, en we hadden vaste waarden kunnen specificeren. In plaats daarvan bieden we ze aan in de mapping als constante waarden. Eventuele benodigde beveiligingsinstellingen worden ook geconfigureerd in het dialoogvenster "Aanvraaginstellingen". Wanneer we op "OK" klikken om het dialoogvenster te sluiten, wordt de webservicefunctie toegevoegd aan de mapping.

Elk punt in het bronbestand in GPX-formaat levert een reeks coördinaten. Tijdens het uitvoeren van de kaartweergave wordt bij elke verwerking van een punt een GET-verzoek naar de USGS gestuurd, en de reactie bevat bijbehorende hoogtegegevens.
Nu moeten we alleen nog de elementen van de aanvraag en het antwoord verbinden met de invoer- en uitvoercomponenten, zoals hieronder wordt weergegeven. De constanten voor de eenheden en het uitvoertype staan linksboven, en de hoogte wordt afgerond op twee decimalen voordat deze in de uitvoer wordt opgenomen.

Let op dat de uitvoer een JSON-bestand is. Het invoercomponent wordt niet weergegeven in dit gedeeltelijke overzicht van de mapping, maar het is een standaard GPX-bestand in XML-formaat. De datamappingverbindingen die van links komen, achter de webservicefunctie in de illustratie lopen en verbinding maken met het uitvoercomponent, zijn allemaal waarden die zonder wijziging worden gekopieerd van de XML-invoer naar de overeenkomstige JSON-elementen.
Wanneer we op de knop "MapForce Output" klikken, wordt de mapping uitgevoerd en wordt een JSON-bestand gegenereerd, zoals hieronder in de gedeeltelijke weergave te zien is:

In een productieomgeving kunnen we de mapping opslaan als een MapForce-uitvoerbestand, zodat MapForce Server dit automatisch kan verwerken, ofwel via de opdrachtregel, of onder controle van FlowForce Server.
Altova MapForce is een bekroonde grafische tool voor data-mapping, -conversie en -integratie, waarmee u gegevens kunt omzetten tussen vrijwel elke combinatie van XML, databases, EDI, XBRL, platte bestanden, Excel, JSON en/of web services. Download een volledig functionele proefversie en probeer het zelf!