Dela via


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:

    1. Anslut till ditt Azure-konto om du inte redan har gjort det.

    2. 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

  1. Öppna mappen för standardlogikappprojektet i Visual Studio Code.

  2. På den vänstra menyn i Visual Studio Code väljer du Azure-ikonen .

  3. I Azure-fönstret går du till DataMapper och väljer Skapa datakarta.

    Skärmbild som visar Visual Studio Code med Azure-fönstret och den valda knappen för Skapa datakarta.

    I namnlisten i Visual Studio Code öppnas en promptruta så att du kan ange ett namn på kartan.

  4. I promptrutan anger du ett datamappningsnamn.

    I den här guiden använder de här stegen namnet Example-data-map.

    Skärmbild som visar prompt box och exempel på datamappningsnamn.

    Datamapparen skapar och öppnar en tom datakarta.

  5. Välj käll- och målscheman genom att följa dessa steg:

    1. I fönstret Källa väljer du Lägg till ny>Bläddra för att hitta och ladda upp källschemat.

      Skärmbild som visar fönstret Datamappning och Källa med valda alternativ för Lägg till ny och Bläddra.

      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:

      Skärmbild som visar källfönstret fyllt med XML-elementnoder för källschema.

    2. I fönstret Mål väljer du Lägg till ny>Bläddra för att hitta och ladda upp målschemat.

      Skärmbild som visar fönstret Datamappning och Mål med valda alternativ för Lägg till ny och Bläddra.

      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:

      Skärmbild som visar målfönstret fyllt med XML-elementnoder för källschema.

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
Ikon som representerar en matrisdatatyp. Komplext (matris) Innehåller objekt eller upprepade objektnoder.

Ett matriselement visar även följande anslutningspunkt:

Ikon för matriselementanslutningspunkt.
Ikon som representerar en Bool-datatyp. Bool Endast sant eller falskt
Ikon som representerar en komplex datatyp. Complex Ett XML-objekt med underordnade egenskaper, ungefär som objekt-JSON-typen
Ikon som representerar en DateTime-datatyp. Datum/tid
Ikon som representerar en decimaldatatyp. Decimal
Ikon som representerar en heltalsdatatyp. Integer Endast heltal
Ikon som representerar en strängdatatyp. 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:

  1. 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.

  2. 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.

  3. 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 .

    Skärmbild som visar DataMapper med pekare över källelementet.

  4. 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.

    Skärmbild som visar DataMapper, en pekare över målelementet och en linje mellan käll- och målelementen.

    Nu har du skapat en direkt mappning mellan båda elementen som har samma datatyper.

    Skärmbild som visar en fullständig mappning mellan EmployeeID och ID i käll- respektive målscheman.

    Fönstret Kod visar mappningsrelationen som du skapade:

    Skärmbild som visar fönstret Kod med direktmappning mellan EmployeeID och ID i käll- respektive målscheman.

    Dricks

    Om du vill kontrollera om dina mappningar har några problem väljer du Visa problem. En varning visas till exempel i listan Problemfliken Varningar om du skapar en mappning mellan element som har felmatchade datatyper:

    Skärmbild som visar mappning mellan 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:

Skärmbild som visar exempel på funktionsetikett.

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.

  1. 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.

  2. 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 (Ikon för funktionslistan.) i mapparens övre vänstra hörn.

    I det här exemplet väljs funktionen Till datum , som finns i gruppen Konverteringsfunktion .

    Skärmbild som visar den valda funktionen med namnet Hittills.

    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:

    Skärmbild som visar frånkopplad funktion med namnet Hittills.

  3. Anslut funktionen till käll- och målelementen.

    1. 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.

      Skärmbild som visar mappning mellan ett källelement och en funktion.

    2. Dra och rita en linje mellan funktionens högra kant och målelementet. Du kan starta från antingen målelementet eller funktionen.

      Skärmbild som visar mappning mellan funktions- och målelement.

    Fönstret Kod visar mappningsrelationen som du skapade:

    Skärmbild som visar fönstret Kod med direktmappningsrelation mellan käll- och målelement.

  4. På mappningsytan väljer du funktionsformen för att visa funktionsinformationen.

  5. På fliken Indata bekräftar eller redigerar du indata som ska användas.

    Skärmbild som visar fliken Indata för funktionen med namnet Hittills.

    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.

  1. 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.

  2. 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 (Ikon för funktionslistan.) i mapparens övre vänstra hörn.

    I det här exemplet väljs funktionen Concat, som finns i strängfunktionsgruppen.

    Skärmbild som visar den valda funktionen med namnet Concat.

    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:

    Skärmbild som visar frånkopplad funktion med namnet Concat.

  3. På mappningsytan väljer du funktionsformen för att visa funktionsinformationen.

  4. 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.

    Skärmbild som visar flera källelement som funktionsindata.

  5. 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.

    Skärmbild som visar slutförda mappningar mellan flera indata, Concat-funktionen och målelementet.

    Fönstret Kod visar de mappningsrelationer som du skapade:

    Skärmbild som visar fönstret Kod med funktionen Concat, som har flera indata och ett enda utdata.

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.

  1. 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.

  2. Leta upp de matriser som du vill mappa i fönstret Källa och Mål på mappningsytan.

  3. 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 :

    Skärmbild som visar mappningsytan och ritning av en mappning mellan namnobjekten i källmatriserna Medarbetare och målperson.

    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: Ikon för matriselement slutförd anslutningspunkt.

    I följande exempel markeras den automatiskt tillagda loopen mellan källmatriserna Employee och målpersonens överordnade matriser:

    Skärmbild som visar loopmappning mellan överordnade källmatriser för medarbetare och målperson.

    Fönstret Kod visar den mappning och loop som du skapade:

    Skärmbild som visar fönstret Kod med loopmappning mellan käll- och målmatriser plus matrisobjekt.

  4. Fortsätt mappa de andra matriselementen, till exempel:

    Skärmbild som visar fler mappningar mellan andra matrisobjekt i käll- och målmatriser.

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.
  1. 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

      Skärmbild som visar mappningsytan och dataelement, till exempel villkorsscenario.

  2. 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 (Ikon för funktionsfönstret.) 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

    Skärmbild som visar mappningsytan, dataelement och funktioner, till exempel villkorsscenario.

  3. 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.

  4. 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:

    Skärmbild som visar mappningsytan, dataelement och funktioner med mappningar, till exempel villkorsscenario.

  5. 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ärde
    Multiplicera - Multiplicand 1: ItemPrice-källelement
    - Multiplicand 2: .10 som ett anpassat värde
    If - Villkor: is-greater-than(ItemQuantity, 20)
    - Värde: multiply(ItemPrice, .10)

    Följande karta visar det färdiga exemplet:

    Skärmbild som visar exempel på slutfört villkor.

    Fönstret Kod visar den mappning som du skapade:

    Skärmbild som visar fönstret Kod med villkorsstyrd mappning mellan käll- och målelement med hjälp av funktionerna Större, Multiplicera och Om.

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.

  1. Innan du testar kartan sparar du kartan för att generera en aktuell< filen your-map-name.xslt.>

  2. Välj Öppna testpanelen i kartverktygsfältet.

  3. 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

  1. I aktivitetsfältet i Visual Studio Code väljer du Utforskaren (filikonen) för att visa logikappens projektstruktur.

  2. Expandera mappen som har arbetsflödets namn. På snabbmenyn i workflow.json fil väljer du Öppna designer.

  3. 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.

  4. I designern väljer du åtgärden Transformera med hjälp av Data Mapper XSLT .

  5. I åtgärdsinformationsfönstret som visas anger du innehållsvärdet och lämnar Mappningskälla inställd på LogicApp.

  6. Öppna listan Kartnamn och välj din karta (.xslt-fil).

    Skärmbild som visar Visual Studio Code, Standard workflow designer, med den valda åtgärden Transform using Data Mapper XSLT (Transformera med hjälp av Data Mapper XSLT) och åtgärdsegenskaper.

    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.