Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Azure Logic Apps (Standard)
Wanneer u berichten uitwisselt die verschillende XML- of JSON-indelingen gebruiken in een werkstroom van een logische app, moet u opgeven hoe u de gegevens van de bronindeling transformeert of converteert naar de doelindeling, bijvoorbeeld tussen XML-documenten of tussen JSON-documenten. Deze taak is belangrijk, met name wanneer u hiaten hebt tussen de gegevensstructuren in de bron- en doelschema's. In een schema worden de gegevenselementen, kenmerken en gegevenstypen in een XML- of JSON-document beschreven.
Als u transformaties tussen gegevensstructuren wilt definiëren en eventuele hiaten wilt overbruggen, kunt u een kaart (XSLT-bestand) maken waarmee de relaties tussen de gegevenselementen in de bron- en doelschema's worden opgegeven. U kunt een kaart visueel maken of bewerken met behulp van Visual Studio Code met de Azure Logic Apps-extensie (Standard) in de context van een standaard-logische app-project. De Data Mapper-tool biedt een geïntegreerde werkwijze voor het toewijzen en transformeren van gegevens met behulp van slepen-en-neerzetten, ingebouwde functies om expressies op te bouwen en een manier om toewijzingen handmatig te testen voordat u ze in uw werkstromen gebruikt.
Nadat u de kaart hebt gemaakt, kunt u die kaart rechtstreeks aanroepen vanuit een werkstroom in uw logische app-project of vanuit een standaardwerkstroom voor logische apps in Azure Portal. Voor deze taak kunt u de actie Gegevenstoewijzingsbewerkingen met de naam Transformeren gebruiken met behulp van Data Mapper XSLT in uw werkstroom.
Deze handleiding laat zien hoe u een lege gegevenstoewijzing maakt, uw bron- en doelschema's kiest, verschillende soorten toewijzingen maakt tussen schema-elementen, uw kaart opslaat en test en vervolgens de kaart aanroept vanuit een werkstroom in uw logische app-project.
Beperkingen en bekende problemen
Data Mapper is momenteel alleen beschikbaar in Visual Studio Code, niet in de Azure-portal, en alleen binnen Standard-logische-app-projecten, niet binnen Consumption-logische-app-projecten.
De front-endervaring voor Data Mapper is beschikbaar als open source in de openbare GitHub-opslagplaats voor het Azure Logic Apps-team. Zie de volgende bronnen voor meer informatie:
Data Mapper werkt momenteel alleen in Visual Studio Code die wordt uitgevoerd op Windows-besturingssystemen.
Data Mapper biedt momenteel geen ondersteuning voor schema's die gebruikmaken van de bestandsindeling met door komma's gescheiden waarden (.csv).
Het codedeelvenster in Data Mapper is momenteel alleen-lezen.
Op het data mapperoppervlak zijn de indeling en posities voor functies beweegbaar, maar schemaknooppunten zijn statisch.
De functie Filter verwerkt correct numerieke voorwaarden die tussen dubbele aanhalingstekens staan, bijvoorbeeld ">=10". Deze functie gedraagt zich momenteel echter niet consistent voor tekenreeksvergelijkingen, zoals een controle of een itemnaam '= 'Pen' is.
Wanneer u een toewijzing maakt tussen de bovenliggende array-elementen in de bron- en doelschema's, voegt de mapper automatisch een lus toe om door de array-itemelementen te itereren. U moet echter nog steeds expliciet toewijzingen maken tussen de elementen van het bron- en doelmatrixitem.
Als u kaarten wilt aanroepen die zijn gemaakt met Data Mapper, kunt u alleen de actie Data Mapper Operations met de naam Transformeren gebruiken met behulp van Data Mapper XSLT. Voor toewijzingen die met een ander hulpprogramma zijn gemaakt, gebruikt u de actie XML-bewerkingen met de naam XML transformeren.
Als u de kaarten wilt gebruiken die u met Data Mapper met werkstromen in Azure Portal maakt, moet u deze rechtstreeks toevoegen aan uw resource van de logische standaard-app.
Voor niet-blokkerende bugs of functieaanvragen opent u een item met het label Data Mapper in de GitHub-opslagplaats voor het Azure Logic Apps-team.
Vereisten
Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.
Visual Studio Code en de Azure Logic Apps-extensie (Standard) voor het maken van standaardwerkstromen voor logische apps.
Notitie
De voorheen afzonderlijke Data Mapper-extensie wordt nu samengevoegd met de Azure Logic Apps-extensie (Standard). Om conflicten te voorkomen, wordt elke bestaande versie van de Data Mapper-extensie verwijderd wanneer u de Azure Logic Apps-extensie (Standard) installeert of bijwerkt. Start Visual Studio Code opnieuw nadat de extensie is geïnstalleerd of bijgewerkt.
De bron- en doelschemabestanden die de gegevenstypen beschrijven die moeten worden getransformeerd. Deze bestanden kunnen de volgende indelingen hebben:
Een XML-schemadefinitiebestand met de bestandsextensie .xsd
Een JavaScript Object Notation-bestand met de bestandsextensie .json
Een Standard Logic Apps-project dat een stateful of stateless werkstroom bevat, met op zijn minst een trigger. Als u geen project hebt, volgt u deze stappen in Visual Studio Code:
Maak verbinding met uw Azure-account als u dat nog niet hebt gedaan.
Maak een lokale map, een werkruimte en een project voor de Standard-logische app, en een statusbepalende of statusloze werkstroom. Selecteer tijdens het maken van een werkstroom de optie Openen in huidig venster.
Voorbeeldinvoergegevens als u de kaart wilt testen en controleert of de transformatie werkt zoals verwacht.
Een gegevensmapping maken
Open in Visual Studio Code de map voor uw Standaard logische app-project.
Selecteer in het linkermenu van Visual Studio Code het Azure-pictogram .
Selecteer in het Azure-venster onder Data Mapper de optie Gegevenstoewijzing maken.
Op de titelbalk van Visual Studio Code wordt een promptvak geopend, zodat u een naam voor uw kaart kunt opgeven.
Voer in het promptvak een naam voor de kaart in.
Voor deze handleiding gebruiken deze stappen de naam Example-data-map.
De Data Mapper maakt een lege datatoewijzing en opent deze.
Kies uw bron- en doelschema's door de volgende stappen uit te voeren:
Selecteer in het deelvenster Bron de optie Nieuw toevoegen>Bladeren om uw bronschema te zoeken en te uploaden.
Nadat u het bronschema hebt toegevoegd, wordt het deelvenster Bron gevuld met het XML-element 'knooppunten' voor de gegevenstypen in het bronschema, bijvoorbeeld:
Selecteer in het deelvenster DestinationNieuwe toevoegen>Bladeren om uw doelschema te zoeken en te uploaden.
Nadat u het doelschema hebt toegevoegd, wordt het doelvenster gevuld met het XML-element 'knooppunten' voor de gegevenstypen in het doelschema, bijvoorbeeld:
Aanbeveling
Als u problemen ondervindt bij het laden van uw schema's, kunt u uw bron- en doelschemabestanden toevoegen aan de lokale map Artefactenschema's/ van uw logische app-project. Als u in dit scenario uw bron- en doelschema in Data Mapper wilt opgeven, opent u in de deelvensters Bron en Doel de bestaande lijst selecteren in plaats van nieuwe toe te voegen en selecteert u uw schema.
Schemagegevenstypen
In de volgende tabel worden de mogelijke gegevenstypen beschreven die in een schema kunnen worden weergegeven:
| Symbool | Typologie | Meer info |
|---|---|---|
|
|
Complex (array) | Bevat elementen of herhaalde elementknooppunten. Een matrixelement geeft ook het volgende verbindingspunt weer:
|
|
|
Bool | Alleen waar of onwaar |
|
|
Ingewikkeld | Een XML-object met onderliggende eigenschappen, vergelijkbaar met het JSON-objecttype |
|
|
Datum en tijd | |
|
|
Decimaal | |
|
|
geheel getal | Alleen gehele getallen |
|
|
Snaar / Touwtje |
Een directe koppeling tussen elementen maken
Als u een eenvoudige transformatie wilt opgeven tussen elementen met hetzelfde type in de bron- en doelschema's, voert u de volgende stappen uit:
Als u wilt zien wat er in de code gebeurt terwijl u de toewijzing maakt, selecteert u in de rechterbovenhoek van de mapper Code weergeven.
Zoek op het mapper-oppervlak in het deelvenster Bron het bronelement dat u wilt toewijzen.
Bovenliggende elementen worden standaard automatisch uitgevouwen om hun onderliggende elementen weer te geven.
In dit voorbeeld wordt de toewijzing gestart vanuit het bronelement, maar u kunt ervoor kiezen om de toewijzing vanuit het doelelement te starten.
Beweeg de muiswijzer over de cirkel naast de naam van het bronelement totdat de aanwijzer verandert in een plusteken (+).
In dit voorbeeld wordt een toewijzing gemaakt die begint met het bronelement Werknemer-id .
Sleep een lijn en teken deze zodat het bronelement verbinding maakt met de cirkel voor het doelelement in het deelvenster Doel .
In dit voorbeeld wordt de toewijzing afgerond met het doelelement ID, dat hetzelfde gegevenstype heeft als het bronelement.
U hebt nu een directe koppeling gemaakt tussen beide elementen die dezelfde gegevenstypen hebben.
In het deelvenster Code ziet u de toewijzingsrelatie die u hebt gemaakt:
Aanbeveling
Om te controleren of er problemen zijn met uw toewijzingen, selecteert u Problemen weergeven. Er wordt bijvoorbeeld een waarschuwing weergegeven in de lijst Problemen op het tabblad Waarschuwingen als u een toewijzing maakt tussen elementen met niet-overeenkomende gegevenstypen:
Een complexe toewijzing tussen elementen maken
Als u een complexere transformatie tussen elementen in de bron- en doelschema's wilt opgeven, bijvoorbeeld elementen die u wilt combineren of verschillende gegevenstypen wilt hebben, kunt u een of meer functies gebruiken die de gewenste transformatie in uw toewijzing uitvoeren.
Op het kaartperoppervlak is het functielabel kleurgecodeerd op basis van de functiegroep. Naast de functienaam wordt het symbool van de functie weergegeven, bijvoorbeeld:
De volgende tabel bevat de functiegroepen en enkele voorbeeldfuncties die u kunt gebruiken. Zie de functions-lijst in Data Mapper voor de volledige lijst.
| Groep | Voorbeeldfuncties |
|---|---|
| Verzameling | Gemiddelde, Aantal, Directe toegang, Unieke waarden, Filter, Index, Join, Maximum, Minimum, Omkeren, Sorteren, Subreeks, Som |
| Conversie | Naar datum, Naar geheel getal, Naar getal, Naar tekenreeks |
| Datum en tijd | Dagen toevoegen, huidige datum, huidige tijd, datum is gelijk aan |
| Logische vergelijking | Gelijk aan, Bestaat, Groter dan, Groter dan of gelijk aan, Als, Anders als, Is nil, Is null, Is getal, Is tekenreeks, Kleiner dan, Kleiner dan of gelijk aan, Logische EN, Logische NIET, Logische OF, Niet gelijk aan |
| Wiskunde | Absoluut, Optellend, Boogtangens, Plafond, Cosinus, Delen, Exponentiële, Exponentiële waarde (grondtal 10), Vloer, Geheel delen, Logboek, Logboek (grondtal 10), Module, Vermenigvuldigen, Macht, Rond, Sinus, Vierkantswortel, Aftrekken, Tangens |
| String | Codepunten naar tekenreeks, Samenvoegen, Bevat, Eindigt op, Lengte, Kleine letters, Naam, Overeenkomsten met reguliere expressies, Vervangen met reguliere expressie, Vervangen, Begint met, Tekenreeks naar codepunten, Subtekenreeks, Subtekenreeks na, Subtekenreeks vóór, Spaties verwijderen, Spaties links verwijderen, Spaties rechts verwijderen, Hoofdletters |
| Hulpprogramma | Kopiëren, Fout, XPath uitvoeren, Datum/tijd opmaken, Nummer opmaken, XSLT uitvoeren |
Een functie zonder koppeling toevoegen
In het voorbeeld in deze sectie worden gegevens in het bronelement getransformeerd van Tekenreeks naar Datum/tijd. Dit is het type doelelement. Het voorbeeld begint zonder eerst een mapping te maken en gebruikt de functie To Date, die één invoerwaarde als invoer neemt.
Als u wilt zien wat er in de code gebeurt terwijl u de toewijzing maakt, selecteert u in de rechterbovenhoek van de mapper Code weergeven.
Zoek en selecteer in de lijst Functies de functie die u wilt gebruiken, waarmee de functie wordt toegevoegd aan het mapperoppervlak. Als de lijst Functies is samengevouwen, selecteert u in de linkerbovenhoek van de mapper het functiepictogram (
).In dit voorbeeld wordt de functie Tot heden geselecteerd, die zich in de groep Conversiefunctie bevindt.
Notitie
Als er geen toewijzing op de kaart bestaat of als er een toewijzing is geselecteerd wanneer u een functie aan de kaart toevoegt, wordt de functie weergegeven, maar is deze niet verbonden met elementen of andere functies, bijvoorbeeld:
Verbind de functie met de bron- en doelelementen.
Sleep en teken een lijn tussen het bronelement en de cirkel aan de linkerrand van de functie. U kunt beginnen met het bronelement of de functie.
Sleep en teken een lijn tussen de rechterrand van de functie en het doelelement. U kunt beginnen vanaf het doelelement of de functie.
In het deelvenster Code ziet u de toewijzingsrelatie die u hebt gemaakt:
Selecteer op het kaartoppervlak de functieshape om de functiedetails weer te geven.
Bevestig of bewerk de invoer die u wilt gebruiken op het tabblad Invoer .
Voor sommige scenario's moet een transformatie worden gedefinieerd buiten het directe paar bron- en doelelementen. Als u bijvoorbeeld een transformatie tussen een paar matrices en hun items wilt definiëren, moet u een lus tussen de matrices maken. Als u een taak wilt uitvoeren wanneer de waarde van een element aan een voorwaarde voldoet, moet u een voorwaarde tussen elementen toevoegen.
Een functie toevoegen die gebruikmaakt van meerdere invoergegevens
In het voorbeeld in deze sectie worden meerdere bronelementen samengevoegd als invoer en wordt één uitvoer toegewezen aan het doelelement. In het voorbeeld wordt de functie Concat gebruikt, die meerdere invoer accepteert.
Als u wilt zien wat er in de code gebeurt terwijl u de toewijzing maakt, selecteert u in de rechterbovenhoek van de mapper Code weergeven.
Zoek en selecteer in de lijst Functies de functie die u wilt gebruiken, waarmee de functie wordt toegevoegd aan het mapperoppervlak.
Als de lijst Functies is samengevouwen, selecteert u in de linkerbovenhoek van de mapper het functiepictogram (
).In dit voorbeeld selecteert u de functie Concat , die zich in de groep Tekenreeksfunctie bevindt.
Notitie
Als er geen toewijzing op de kaart bestaat of als er een toewijzing is geselecteerd wanneer u een functie aan de kaart toevoegt, wordt de functie weergegeven, maar is deze niet verbonden met elementen of andere functies, bijvoorbeeld:
Selecteer op het kaartoppervlak de functieshape om de functiedetails weer te geven.
Selecteer op het tabblad Invoer de bronschema-elementen die u als invoer wilt gebruiken.
In dit voorbeeld worden de bronschema-elementen Voornaam en Achternaam geselecteerd als de functie-invoer. De mapper voegt automatisch de respectieve toewijzingen toe tussen de bronelementen en de functie.
Als u de toewijzing wilt voltooien, sleept en tekent u een lijn tussen de rechterrand van de functie en het doelelement. U kunt beginnen met het doelelement of de functie.
In het deelvenster Code worden de toewijzingsrelaties weergegeven die u hebt gemaakt:
Door arrays itereren
Als uw bron- en doelschema's matrices bevatten, kunt u een lus maken om de items van de matrices te herhalen. In het voorbeeld in deze sectie wordt een lus gemaakt die door een Employee-bronmatrix en een Person-doelmatrix loopt, samen met toewijzingen tussen de elementen van de matrices.
Als u wilt zien wat er in de code gebeurt terwijl u de toewijzing maakt, selecteert u in de rechterbovenhoek van de mapper Code weergeven.
Zoek op het kaartoppervlak in de deelvensters Bron en Doel de matrices die u wilt toewijzen.
Sleep een lijn tussen het paar matrixitems en teken deze. U kunt beginnen vanuit het deelvenster Bron of het doelvenster .
Het volgende voorbeeld begint vanuit het deelvenster Bron en wijst de naamitems in de bronmatrix Werknemer en de doelmatrix Persoon toe:
Nadat u klaar bent met het toewijzen van het eerste paar matrixitems, voegt de mapper automatisch een lus toe tussen de bovenliggende elementen van de bron- en doelmatrix, met het volgende verbindingspunttype:

Het volgende voorbeeld markeert de automatisch toegevoegde lus tussen de bovenliggende arrays van bron-Employee en doel-Person:
In het deelvenster Code ziet u de toewijzing en lus die u hebt gemaakt:
Ga verder met het toewijzen van de andere array-elementen, bijvoorbeeld:
Een voorwaarde evalueren om een taak uit te voeren
Stel dat u een koppeling wilt toevoegen die een voorwaarde controleert en een taak uitvoert als aan die voorwaarde is voldaan. Voor dit scenario kunt u meerdere functies gebruiken.
In het volgende voorbeeld, wanneer de aankoophoeveelheid groter is dan 20 items, berekent de toewijzing een korting die moet worden toegepast met behulp van de volgende functies:
| Functiegroep | Functie | Doel in dit voorbeeld |
|---|---|---|
| Vergelijking | Groter | Controleer of de aankoophoeveelheid meer dan 20 is. |
| Vergelijking | Als | Controleer of de functie Greater true retourneert. |
| Wiskunde | Vermenigvuldigen | Als de voorwaarde waar is, vermenigvuldigt u de itemprijs met 10% om de korting te berekenen. |
Zoek in de deelvensters Bron en Doel de elementen die u in uw scenario wilt toewijzen.
In dit voorbeeld worden de volgende elementen gebruikt:
Brondeelvenster: ItemPrice en ItemQuantity
Doelvenster : ItemPrice, ItemQuantity en ItemDiscount
Zoek en selecteer in de lijst Functies de functies die u wilt gebruiken, waarmee de functies worden toegevoegd aan het mapper-oppervlak.
Als de lijst Functies is samengevouwen, selecteert u in de linkerbovenhoek van de mapper het functiepictogram (
).Verplaats indien nodig de functieshapes op het mapperoppervlak om ze gemakkelijker te selecteren.
In dit voorbeeld worden de volgende functies toegevoegd aan het mapperoppervlak: Groter, If en Vermenigvuldigen
Als u wilt weergeven wat er in code gebeurt terwijl u de toewijzingen maakt, selecteert u code weergeven in de rechterbovenhoek van de mapper.
Verbind de bronelementen, functies en doelelementen in de specifieke volgorde, zoals uw scenario vereist.
In dit voorbeeld verbindt u de volgende items in de opgegeven volgorde om de koppelingen correct aan te maken:
Starten Einde ItemPrice bronelement ItemPrice doelelement ItemQuantity bronelement De invoer van de functie Greater aan de linkerrand van de vorm. Deze invoer bevat de gegevens voor het veld Waarde 1 in de functiedetails. De uitvoer van de functie Greater op de rechterrand van de vorm If-functie-invoer op de linkerrand van de vorm. Deze invoer bevat de gegevens voor het veld Voorwaarde in de functiedetails. ItemPrice bronelement De invoer van de functie Multiply aan de linkerrand van de vorm. Deze invoer bevat de gegevens voor het veld Multiplicand in de functiedetails. De uitvoer van de functie Multiply aan de rechterrand van de vorm. If-functie-invoer op de linkerrand van de vorm. Deze invoer bevat de gegevens voor het veld Waarde in de functiedetails. Als de uitvoer van de functie op de rechterrand van de shape staat. ItemDiscount doelelement In het volgende voorbeeld ziet u de toewijzingen op dit moment:
Bevestig of geef op het tabblad Invoer de volgende waarden op in de volgende functiedetails:
Functie Invoerveld en -waarde Groter - Waarde 1: ItemQuantity-bronelement
- Waarde 2: 20 als een aangepaste waardeVermenigvuldigen - Multiplicand 1: ItemPrice-bronelement
- Vermenigvuldigtal 2: .10 als aangepaste waardeAls - Voorwaarde: is groter dan(ItemQuantity, 20)
- Waarde: multiply(ItemPrice, .10)Op de volgende kaart ziet u het voltooide voorbeeld:
In het deelvenster Code ziet u de toewijzing die u hebt gemaakt:
Uw kaart opslaan
Wanneer u klaar bent, selecteert u Opslaan op de werkbalk Van de kaart.
Visual Studio Code slaat uw gegevensmapping op in de volgende artefacten:
- Een Data Mapper-bestand (<uw-map-naam>.lml) in de projectmap Artifacts>MapDefinitions
- Een gegevensmappingbestand (<uw-kaartnaam>.xslt) in de projectmap Artefacten>Kaarten
Aanbeveling
Als u uw artefacten op diepere niveaus wilt ordenen, kunt u de volgende mappen en submappen gebruiken:
- Artefacten/Kaartdefinities
- Artefacten/Schemas
- Artefacten/DataMapper/Extensies/Functies
- Artefacten/DataMapper/Extensies/InlineXslt
Uw kaart testen
Om te bevestigen dat de transformatie werkt zoals verwacht, hebt u voorbeeldinvoergegevens nodig.
Voordat u uw map test, slaat u de map op om een actueel bestand <uw-map-naam>.xslt te genereren.
Selecteer op de werkbalk van de kaart het testvenster openen.
In het deelvenster Testtoewijzing, in het vak Voorbeeldgegevens, plakt u uw voorbeeldinvoer en selecteert u Test.
In het vak Resultaat worden de testresultaten weergegeven.
Uw kaart aanroepen vanuit een werkstroom in uw project
Selecteer op de activiteitenbalk van Visual Studio Code Verkenner (het pictogram Bestanden) om de structuur van uw Logic Apps-project weer te geven.
Vouw de map met de naam van uw werkstroom uit. Selecteer Open Designer in het snelmenu van het workflow.json-bestand.
Volg deze algemene stappen in de werkstroomontwerper om de ingebouwde actie Data Mapper Operations met de naam Transformeren toe te voegen met behulp van Data Mapper XSLT.
Selecteer in de ontwerper de actie Transformeren met Data Mapper XSLT.
Geef in het deelvenster met actiegegevens dat wordt weergegeven de inhoudswaarde op en laat de kaartbron ingesteld op LogicApp.
Open de lijst Mapnaam en selecteer uw kaart (XSLT-bestand).
Als u dezelfde transformatie wilt gebruiken met de XSLT-actie Data Mapper in Azure Portal, moet u de kaart toevoegen aan de resource van de standaard logische app.
XSLT uitvoeren vanuit een gegevenskaart
U kunt uitvoerbare XSLT-fragmenten uitvoeren in een gegevenstoewijzingsbestand (.xslt) met behulp van de functie XSLT uitvoeren . Wanneer u deze functie gebruikt, krijgt u een gegevenstoewijzingsbestand dat het daadwerkelijke uitvoerbare bestand XSLT bevat. Het bestand Data Mapper (.LML) bevat een verwijzing naar het uitvoerbare XSLT-bestand (.xslt of .xml).
Ga als volgt te werk om deze taak te voltooien:
Maak een nieuw gegevenstoewijzingsbestand (.xslt of .xml) dat het uitvoerbare XSLT-fragment bevat dat u wilt uitvoeren.
Plaats of verplaats het XSLT-fragmentbestand naar de volgende projectmap:
Artefacten>DataMapper\Extensions>InlineXSLT
Notitie
Als u dit uitvoerbare XSLT-bestand maakt of opslaat in Visual Studio Code, verschijnt het bestand automatisch in de projectmap Artifacts>Maps. Zorg ervoor dat u XSLT-fragmentbestanden naar de map InlineXslt verplaatst.
Open de gegevensmapping waarvanuit u de XSLT wilt uitvoeren.
Selecteer in het deelvenster Functies onder Hulpprogrammade optie XSLT uitvoeren om de functie toe te voegen aan het mapper-oppervlak.
Selecteer op het mapper-oppervlak de optie XSLT uitvoeren.
Selecteer in de vervolgkeuzelijst Bestand het uitvoerbare .xslt-bestand dat u hebt toegevoegd aan de map InlineXSLT , bijvoorbeeld:
Verbind de functie XSLT uitvoeren met het doelknooppunt waar u de XSLT-logica wilt toepassen, bijvoorbeeld:
Aangezien de XSLT-logica alleen van toepassing is op het doelknooppunt, hoeft u de functie XSLT uitvoeren niet te verbinden met een bronknooppunt.
Test uw kaart om te controleren of de verwachte resultaten worden weergegeven in het doelschema.
Voor implementatie hebt u alleen de resulterende datamap met de inline uitvoerbare XSLT nodig.
Toegang tot knooppunten in geneste XML
Stel dat u een schema hebt met geneste XML-knooppunten en dat u op de volgende manieren met deze knooppunten wilt werken:
- Krijg toegang tot kenmerken of geneste elementen.
- Pas logica toe op basis van de structuur of inhoud van binnenkomende gegevens.
Gebruik de functie XPath uitvoeren om deze taken uit te voeren:
Open de gegevensmapping waarmee u wilt werken.
Selecteer in het deelvenster Functies onder Hulpprogrammade optie XPath uitvoeren om de functie toe te voegen aan het mapper-oppervlak.
Selecteer op het mapperoppervlak de optie XPath uitvoeren.
Voer in het vak XPATH-expressie een expressie in waarmee het gewenste werk wordt uitgevoerd.
Zie XPath-syntaxis voor meer informatie over de syntaxis van expressies.
In dit voorbeeld wordt de
//Addressexpressie gebruikt in combinatie met een testnettolading:Notitie
Dubbele schuine strepen (
//) selecteren knooppunten van het huidige knooppunt die overeenkomen met de selectie, ongeacht waar de knooppunten zich bevinden.Verbind de functie XPath uitvoeren met het doelknooppunt waar u de functie wilt uitvoeren.
In dit voorbeeld wordt de functie verbonden met het adresknooppunt in het doelschema:
Notitie
Knooppuntnamen worden automatisch omsloten door dubbele aanhalingstekens ("" ").
Test uw kaart om te controleren of de verwachte resultaten worden weergegeven in het doelschema.
In dit voorbeeld wordt een testpayload gebruikt en worden er correct resultaten gegenereerd met meerdere Address-knooppunten, omdat het bronknooppunt Address zich in een Employee-array bevindt, terwijl het doelknooppunt Address zich in een Person-array bevindt.
Notitie
Als u een koppeling maakt tussen arrays in de bron- en doelschema's, verschijnt er automatisch een lus op het toewijzingsoppervlak om door de array-elementen te itereren. U moet echter nog steeds toewijzingen maken tussen de bron- en doelmatrixelementen. Zie Door arrays itereren voor informatie over het door arrays lopen.
Aangepaste XML-functies maken
Als u herbruikbare logica in uw kaart wilt definiëren, kunt u aangepaste XML-functies maken, die de volgende voordelen bieden:
- Verminder dubbel werk en ondersteun schemaspecifieke transformaties.
- Verpak complexe logica in beheersbare componenten.
- Behandel schema-specifieke randgevallen.
Ga als volgt te werk om een aangepaste XML-functie te maken:
Maak een XML-bestand (.xml) met een betekenisvolle naam die het doel van uw functie beschrijft.
In het XML-bestand moet een specifiek schema worden gebruikt voor functiedefinities. Als u meerdere gerelateerde functies hebt, kunt u één bestand voor deze functies gebruiken. Hoewel u elke bestandsnaam kunt gebruiken, maakt een betekenisvolle bestandsnaam of categorie uw functies gemakkelijker te identificeren, te vinden en te ontdekken.
Voeg dit XML-bestand toe aan uw logische app-project in de volgende map:
Artefacten>DataMapper\Extensies>Functies
Open het gegevensschema waarin u uw functie wilt gebruiken.
Selecteer in het deelvenster Functies onder Hulpprogramma de aangepaste functie, die nu wordt weergegeven op het mapper-oppervlak.
Selecteer uw functie op het oppervlak van de mapper. Geef de input die de functie nodig heeft om te werken.
Verbind de functie met de vereiste eindpunten.
In het volgende voorbeeld ziet u een aangepaste functie met de naam Leeftijd die de leeftijd voor de opgegeven geboortedatum retourneert. De functie maakt verbinding met het Dat_of_Birth bronknooppunt en het andere bestemmingsknooppunt. Zie De definitie van de voorbeeldfunctie bekijken om de definitie voor deze aangepaste functie te bekijken.
Test uw kaart om te controleren of de verwachte resultaten worden weergegeven in het bestemmingsschema, bijvoorbeeld:
Bekijk het schema voor een functiedefinitie
Uw XML-bestand moet het volgende schema gebruiken voor een functiedefinitie. Elk XML-element met de "function" naam implementeert een XSLT 3.0-stijlfunctie met een paar extra attributen. De lijst met functies van Data Mapper bevat de functienaam, beschrijving, parameternamen en parametertypen.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customfunctions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="function">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="param">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="as" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:any minOccurs="0" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="as" type="xs:string" use="required" />
<xs:attribute name="description" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Bekijk de voorbeeldfunctiedefinities
In het volgende SampleFunctions.xml bestand ziet u de implementatie voor de volgende functies:
"age""custom-if-then-else"
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<customfunctions>
<function name="age" as="xs:float" description="Returns the current age.">
<param name="inputDate" as="xs:date"/>
<value-of select="round(days-from-duration(current-date() - xs:date($inputDate)) div 365.25, 1)"/>
</function>
<function name="custom-if-then-else" as="xs:string" description="Evaluates the condition and returns corresponding value.">
<param name="condition" as="xs:boolean"/>
<param name="thenResult" as="xs:anyAtomicType"/>
<param name="elseResult" as="xs:anyAtomicType"/>
<choose>
<when test="$condition">
<value-of select="$thenResult"></value-of>
</when>
<otherwise>
<value-of select="$elseResult"></value-of>
</otherwise>
</choose>
</function>
</customfunctions>