Skapa kartor för att transformera data i logikapparbetsflöden med Visual Studio Code
Gäller för: Azure Logic Apps (Standard)
När du utbyter meddelanden som använder olika XML- eller JSON-format i ett logikapparbetsflöde måste du ange hur data ska transformeras eller konverteras från källformatet till målformatet, till exempel mellan XML-dokument eller mellan JSON-dokument. Den här uppgiften är viktig, särskilt när du har luckor mellan datastrukturerna i käll- och målschemana. Ett schema beskriver dataelement, attribut och datatyper i ett XML- eller JSON-dokument.
Om du vill definiera transformeringar mellan datastrukturer och överbrygga eventuella luckor kan du skapa en karta (.xslt-fil) som anger relationerna mellan dataelementen i käll- och målschemana. Du kan skapa eller redigera en karta visuellt med hjälp av Visual Studio Code med Tillägget Azure Logic Apps (Standard) i kontexten för ett standardlogikappprojekt. Verktyget DataMapper ger en enhetlig upplevelse för mappning och transformering med dra och släpp-gester, fördefinierade funktioner för att skapa uttryck och ett sätt att manuellt testa kartor innan du använder dem i dina arbetsflöden.
När du har skapat kartan kan du anropa kartan direkt från ett arbetsflöde i ditt logikappsprojekt eller från ett standardarbetsflöde för logikappar i Azure Portal. För den här uppgiften kan du använda åtgärden DataMapper Operations med namnet Transformera med hjälp av Data Mapper XSLT i arbetsflödet.
Den här instruktionsguiden visar hur du skapar en tom datakarta, väljer käll- och målscheman, skapar olika typer av mappningar mellan schemaelement, sparar och testar kartan och anropar sedan kartan från ett arbetsflöde i logikappprojektet.
Begränsningar och kända problem
DataMapper fungerar för närvarande endast i Visual Studio Code som körs på Windows-operativsystem.
DataMapper är för närvarande endast tillgängligt i Visual Studio Code, inte Azure Portal, och endast inifrån Standard-logikappprojekt, inte Förbrukningslogikappprojekt.
Data Mapper stöder för närvarande inte scheman som använder filformatet kommaavgränsade värden (.csv).
Fönstret Kod i DataMapper är för närvarande skrivskyddad.
Layout- och objektpositionerna i DataMapper är för närvarande automatiska och skrivskyddade.
Funktionen Filter bearbetar korrekt numeriska villkor som omges av dubbla citattecken, till exempel ">=10". Den här funktionen fungerar dock för närvarande inte konsekvent för strängjämförelser, till exempel en kontroll av om ett objektnamn är "= "Pen".
När du skapar en mappning mellan de överordnade matriselementen i käll- och målschemana lägger mapparen automatiskt till en loop som itererar genom matrisobjektelementen. Du måste dock fortfarande uttryckligen skapa mappningar mellan käll- och målmatrisobjektelementen.
Om du vill anropa kartor som skapats med Data Mapper kan du bara använda åtgärden DataMapper Operations med namnet Transformera med hjälp av Data Mapper XSLT. För kartor som skapats av något annat verktyg använder du XML-åtgärdsåtgärden med namnet Transformera XML.
Om du vill använda de kartor som du skapar med Data Mapper med arbetsflöden i Azure Portal måste du lägga till dem direkt i standardlogikappresursen.
Anpassade funktioner stöds för närvarande inte i den här versionen.
Förutsättningar
Visual Studio Code och Tillägget Azure Logic Apps (Standard) för att skapa arbetsflöden för standardlogikappar.
Kommentar
Det tidigare separata Data Mapper-tillägget sammanfogas nu med Tillägget Azure Logic Apps (Standard). För att undvika konflikter tas alla befintliga versioner av Data Mapper-tillägget bort när du installerar eller uppdaterar Tillägget Azure Logic Apps (Standard). Starta om Visual Studio Code när tillägget har installerats eller uppdaterats.
Käll- och målschemafilerna som beskriver de datatyper som ska transformeras. Dessa filer kan ha antingen följande format:
- En XML-schemadefinitionsfil med filtillägget .xsd
- En JavaScript Object Notation-fil med filnamnstillägget .json
Ett standardlogikappprojekt som innehåller ett tillståndskänsligt eller tillståndslöst arbetsflöde med minst en utlösare. Om du inte har något projekt följer du dessa steg i Visual Studio Code:
Anslut till ditt Azure-konto om du inte redan har gjort det.
Skapa en lokal mapp, ett lokalt standardlogikappprojekt och ett tillståndskänsligt eller tillståndslöst arbetsflöde. När arbetsflödet skapas väljer du Öppna i det aktuella fönstret.
Exempel på indata om du vill testa kartan och kontrollera att omvandlingen fungerar som förväntat.
Om du vill använda funktionen Kör XSLT måste XSLT-kodfragmenten finnas i filer som använder filnamnstillägget .xml eller .xslt . Du måste placera XSLT-kodfragmenten i mappen InlineXslt i den lokala projektmappsstrukturen: Artifacts>DataMapper>Extensions>InlineXslt. Om den här mappstrukturen inte finns skapar du de mappar som saknas.
Skapa en datakarta
Öppna mappen för standardlogikappprojektet i Visual Studio Code.
På den vänstra menyn i Visual Studio Code väljer du Azure-ikonen .
I Azure-fönstret går du till DataMapper och väljer Skapa datakarta.
I namnlisten i Visual Studio Code öppnas en promptruta så att du kan ange ett namn på kartan.
I promptrutan anger du ett datamappningsnamn.
I den här guiden använder de här stegen namnet Example-data-map.
Datamapparen skapar och öppnar en tom datakarta.
Välj käll- och målscheman genom att följa dessa steg:
I fönstret Källa väljer du Lägg till ny>Bläddra för att hitta och ladda upp källschemat.
När du har lagt till källschemat fylls fönstret Källa med XML-elementet "noder" för datatyperna i källschemat, till exempel:
I fönstret Mål väljer du Lägg till ny>Bläddra för att hitta och ladda upp målschemat.
När du har lagt till målschemat fylls fönstret Mål med XML-elementet "noder" för datatyperna i målschemat, till exempel:
Dricks
Om du får problem med att läsa in dina scheman kan du lokalt lägga till käll- och målschemafilerna i logikappprojektets mapp Artifacts/Schemas. Om du vill ange käll- och målschemat i DataMapper öppnar du listan Välj befintlig i stället för att använda Lägg till ny i fönstret Källa och Mål och väljer schemat.
Schemadatatyper
I följande tabell beskrivs möjliga datatyper som kan visas i ett schema:
Symbol | Type | Mer information |
---|---|---|
![]() |
Komplext (matris) | Innehåller objekt eller upprepade objektnoder. Ett matriselement visar även följande anslutningspunkt: ![]() |
![]() |
Bool | Endast sant eller falskt |
![]() |
Complex | Ett XML-objekt med underordnade egenskaper, ungefär som objekt-JSON-typen |
![]() |
Datum/tid | |
![]() |
Decimal | |
![]() |
Integer | Endast heltal |
![]() |
String |
Skapa en direkt mappning mellan element
Följ dessa steg för att ange en enkel transformering mellan element som har samma typ i käll- och målscheman:
Om du vill visa vad som händer i koden när du skapar mappningen väljer du Visa kod i mapparens övre högra hörn.
Leta upp det källelement som du vill mappa i fönstret Källa på mappningsytan.
Som standard expanderas överordnade element automatiskt för att visa sina underordnade element.
Det här exemplet börjar mappa från källelementet, men du kan välja att börja mappa från målelementet.
Flytta muspekaren över cirkeln bredvid källelementets namn tills pekaren ändras till ett plustecken (+).
Det här exemplet skapar en mappning från källelementet Medarbetar-ID .
Dra och rita en linje så att källelementet ansluter till cirkeln för målelementet i målfönstret.
Det här exemplet slutför mappningen med ID-målelementet , som har samma datatyp som källelementet.
Nu har du skapat en direkt mappning mellan båda elementen som har samma datatyper.
Fönstret Kod visar mappningsrelationen som du skapade:
Dricks
Om du vill kontrollera om dina mappningar har några problem väljer du Visa problem. En varning visas till exempel i listan Problem på fliken Varningar om du skapar en mappning mellan element som har felmatchade datatyper:
Skapa en komplex mappning mellan element
Om du vill ange en mer komplicerad transformering mellan element i käll- och målscheman, till exempel element som du vill kombinera eller har olika datatyper, kan du använda en eller flera funktioner som utför den transformering som du vill använda i mappningen.
På mappningsytan är funktionsetiketten färgkodad baserat på funktionsgruppen. Bredvid funktionsnamnet visas funktionens symbol, till exempel:
I följande tabell visas de funktionsgrupper och några exempelfunktioner som du kan använda. Den fullständiga listan finns i funktionslistan i DataMapper.
Grupp | Exempelfunktioner |
---|---|
Samling | Average, Count, Direct Access, Distinct values, Filter, Index, Join, Maximum, Minimum, Reverse, Sort, Subsequence, Sum |
Omvandling | Hittills, till heltal, till tal, till sträng |
Datum och tid | Lägg till dagar, aktuellt datum, aktuell tid, lika med datum |
Logisk jämförelse | Equal, Exists, Greater, Greater or equal, If, If Else, Is Nil, Is Null, Is Number, Is String, Less, Less or Equal, Logical AND, Logical NOT, Logical OR, Not Equal |
Matematik | Absolut, Lägg till, Arctangens, Tak, Cosinus, Dividera, Exponentiell, Exponentiell (bas 10), Golv, Heltal dividera, Logg, Logg (bas 10), Modul, Multiplicera, Kraft, Rund, Sinus, Kvadratrot, Subtrahera, Tangent |
Sträng | Kodpunkter till String, Concat, Contains, Ends with, Length, Lowercase, Name, Regular Expression Matches, Regular Expression Replace, Replace, Starts with, String to Codepoints, Substring, Substring after, Substring before, Trim, Trim Left, Trim Left, Trim Right, Uppercase |
Utility | Kopiera, Fel, Kör XPath, Formatera DateTime, Formatnummer, Kör XSLT |
Lägga till en funktion utan mappning
Exemplet i det här avsnittet transformerar data i källelementet från Sträng till DateTime, som är målelementtypen. Exemplet börjar utan att först skapa en mappning och använder funktionen To Date , som accepterar en enda indata.
Om du vill visa vad som händer i koden när du skapar mappningen väljer du Visa kod i mapparens övre högra hörn.
I listan Funktioner letar du upp och väljer den funktion som du vill använda, vilket lägger till funktionen på mappningsytan. Om listan Funktioner är komprimerad väljer du funktionsikonen (
) i mapparens övre vänstra hörn.
I det här exemplet väljs funktionen Till datum , som finns i gruppen Konverteringsfunktion .
Kommentar
Om det inte finns någon mappning på kartan eller om en mappning väljs när du lägger till en funktion på kartan, visas funktionen men är inte ansluten till några element eller andra funktioner, till exempel:
Anslut funktionen till käll- och målelementen.
Dra och rita en linje mellan källelementet och cirkeln på funktionens vänstra kant. Du kan starta från antingen källelementet eller funktionen.
Dra och rita en linje mellan funktionens högra kant och målelementet. Du kan starta från antingen målelementet eller funktionen.
Fönstret Kod visar mappningsrelationen som du skapade:
På mappningsytan väljer du funktionsformen för att visa funktionsinformationen.
På fliken Indata bekräftar eller redigerar du indata som ska användas.
Vissa scenarier kräver att du definierar en transformering utöver det omedelbara paret med käll- och målelement. Om du till exempel vill definiera en transformering mellan ett par matriser och deras objekt måste du skapa en loop mellan matriserna. Om du vill utföra en uppgift när ett elements värde uppfyller ett villkor måste du lägga till ett villkor mellan elementen.
Lägg till en funktion som använder flera indata
Exemplet i det här avsnittet sammanfogar flera källelement som indata och mappar ett enda utdata till målelementet. I exemplet används funktionen Concat , som accepterar flera indata.
Om du vill visa vad som händer i koden när du skapar mappningen väljer du Visa kod i mapparens övre högra hörn.
I listan Funktioner letar du upp och väljer den funktion som du vill använda, vilket lägger till funktionen på mappningsytan.
Om listan Funktioner är komprimerad väljer du funktionsikonen (
) i mapparens övre vänstra hörn.
I det här exemplet väljs funktionen Concat, som finns i strängfunktionsgruppen.
Kommentar
Om det inte finns någon mappning på kartan eller om en mappning väljs när du lägger till en funktion på kartan, visas funktionen men är inte ansluten till några element eller andra funktioner, till exempel:
På mappningsytan väljer du funktionsformen för att visa funktionsinformationen.
På fliken Indata väljer du de källschemaelement som ska användas som indata.
I det här exemplet väljs källschemaelementen FirstName och LastName som funktionsindata. Mapparen lägger automatiskt till respektive mappning mellan källelementen och funktionen.
För att slutföra mappningen drar och ritar du en linje mellan funktionens högra kant och målelementet. Du kan starta från antingen målelementet eller funktionen.
Fönstret Kod visar de mappningsrelationer som du skapade:
Iterera genom matriser
Om dina käll- och målscheman innehåller matriser kan du skapa en loop för att iterera genom matrisernas objekt. Exemplet i det här avsnittet skapar en loop via en källmatris för medarbetare och en personmålmatris tillsammans med mappningar mellan matrisernas objekt.
Om du vill visa vad som händer i koden när du skapar mappningen väljer du Visa kod i mapparens övre högra hörn.
Leta upp de matriser som du vill mappa i fönstret Källa och Mål på mappningsytan.
Dra och rita en linje mellan matrisobjektparet. Du kan starta från antingen källfönstret eller målfönstret.
Följande exempel börjar från fönstret Källa och mappar objekten Namn i matrisen Employee source och målmatrisen Person :
När du har slutfört mappningen av det första par matrisobjekten lägger mapparen automatiskt till en loop mellan käll- och målmatrisens överordnade element, som har följande anslutningspunktstyp:
I följande exempel markeras den automatiskt tillagda loopen mellan källmatriserna Employee och målpersonens överordnade matriser:
Fönstret Kod visar den mappning och loop som du skapade:
Fortsätt mappa de andra matriselementen, till exempel:
Utvärdera ett villkor för att utföra en uppgift
Anta att du vill lägga till en mappning som utvärderar ett villkor och utför en uppgift när villkoret uppfylls. I det här scenariot kan du använda flera funktioner.
I följande exempel, när inköpskvantiteten överskrider 20 objekt, beräknar mappningen en rabatt som ska tillämpas med hjälp av följande funktioner:
Funktionsgrupp | Funktion | Syfte i det här exemplet |
---|---|---|
Jämförelse | Större | Kontrollera om inköpskvantiteten är mer än 20. |
Jämförelse | If | Kontrollera om funktionen Större returnerar true. |
Matematik | Multiplicera | Om villkoret är sant multiplicerar du artikelpriset med 10 % för att beräkna rabatten. |
I fönstret Källa och mål hittar du de element som ska mappas i ditt scenario.
I det här exemplet används följande element:
Källfönster : ItemPrice och ItemQuantity
Målfönstret : ItemPrice, ItemQuantity och ItemDiscount
I listan Funktioner letar du upp och väljer de funktioner som du vill använda, vilket lägger till funktionerna på mappningsytan.
Om listan Funktioner är komprimerad väljer du funktionsikonen (
) i mapparens övre vänstra hörn.
Om det behövs flyttar du funktionsformerna på mappningsytan så att de blir enklare att välja.
I det här exemplet läggs följande funktioner till på mappningsytan: Större, Om och Multiplicera
Om du vill visa vad som händer i koden när du skapar mappningarna väljer du Visa kod i mapparens övre högra hörn.
Anslut källelementen, funktionerna och målelementen i den specifika ordning som ditt scenario kräver.
Det här exemplet ansluter följande objekt i den angivna ordningen för att skapa mappningarna på rätt sätt:
Början Sluta ItemPrice-källelement ItemPrice-målelement ItemQuantity-källelement Greater-funktionens indata på formens vänstra kant. Den här indatan innehåller data för fältet Värde 1 i funktionsinformationen. Större funktions utdata på formens högra kant Om funktionens indata på formens vänstra kant. Den här indatan innehåller data för fältet Villkor i funktionsinformationen. ItemPrice-källelement Multiplicera funktionens indata på formens vänstra kant. Den här indatan innehåller data för fältet Multiplicand i funktionsinformationen. Multiplicera funktionens utdata på formens högra kant. Om funktionens indata på formens vänstra kant. Den här indatan innehåller data för fältet Värde i funktionsinformationen. Om funktionens utdata på formens högra kant. ItemDiscount-målelement I följande exempel visas mappningarna just nu:
I följande funktionsinformation går du till fliken Indata och bekräftar eller anger följande värden:
Funktion Indatafält och -värde Större - Värde 1: ItemQuantity-källelement
- Värde 2: 20 som ett anpassat värdeMultiplicera - Multiplicand 1: ItemPrice-källelement
- Multiplicand 2: .10 som ett anpassat värdeIf - Villkor: is-greater-than(ItemQuantity, 20)
- Värde: multiply(ItemPrice, .10)Följande karta visar det färdiga exemplet:
Fönstret Kod visar den mappning som du skapade:
Spara kartan
När du är klar väljer du Spara i kartverktygsfältet.
Visual Studio Code sparar kartan som följande artefakter:
- En <your-map-name.love> my life-fil i projektmappen Artifacts>MapDefinitions
- En <filen your-map-name.xslt> i projektmappen Artifacts Maps>
Testa kartan
För att bekräfta att omvandlingen fungerar som förväntat behöver du exempel på indata.
Innan du testar kartan sparar du kartan för att generera en aktuell< filen your-map-name.xslt.>
Välj Öppna testpanelen i kartverktygsfältet.
I fönstret Testkarta i rutan Exempeldata klistrar du in dina exempelindata och väljer Testa.
I rutan Resultat visas testresultatet.
Anropa kartan från ett arbetsflöde i projektet
I aktivitetsfältet i Visual Studio Code väljer du Utforskaren (filikonen) för att visa logikappens projektstruktur.
Expandera mappen som har arbetsflödets namn. På snabbmenyn i workflow.json fil väljer du Öppna designer.
I arbetsflödesdesignern följer du de här allmänna stegen för att lägga till den inbyggda åtgärden DataMapper Operations med namnet Transformera med hjälp av Data Mapper XSLT.
I designern väljer du åtgärden Transformera med hjälp av Data Mapper XSLT .
I åtgärdsinformationsfönstret som visas anger du innehållsvärdet och lämnar Mappningskälla inställd på LogicApp.
Öppna listan Kartnamn och välj din karta (.xslt-fil).
Om du vill använda samma transformering med hjälp av XSLT-åtgärden för datamappning i Azure Portal måste du lägga till kartan i standardlogikappresursen.
Relaterat innehåll
- Information om datatransformeringar med B2B-åtgärder i Azure Logic Apps finns i Lägga till kartor för omvandlingar i arbetsflöden med Azure Logic Apps