Condividi tramite


Creare mappe per trasformare i dati nei flussi di lavoro dell'app per la logica con Visual Studio Code

Si applica: App per la logica di Azure (Standard)

Quando si scambiano messaggi che usano formati XML o JSON diversi in un flusso di lavoro dell'app per la logica, è necessario specificare come trasformare o convertire i dati dal formato di origine al formato di destinazione, ad esempio tra documenti XML o tra documenti JSON. Questa attività è importante soprattutto quando si presentano lacune tra le strutture di dati negli schemi di origine e di destinazione. Uno schema descrive gli elementi dati, gli attributi e i tipi di dati in un documento XML o JSON.

Per definire trasformazioni tra strutture di dati e colmare eventuali gap, è possibile creare una mappa (file con estensione xslt) che specifica le relazioni tra gli elementi dati negli schemi di origine e di destinazione. È possibile creare o modificare visivamente una mappa usando Visual Studio Code con l'estensione App per la logica di Azure (Standard) nel contesto di un progetto di app per la logica Standard. Lo strumento Data Mapper offre un'esperienza unificata per il mapping e la trasformazione tramite movimenti di trascinamento della selezione, funzioni predefinite per la creazione di espressioni e un modo per testare manualmente le mappe prima di usarle nei flussi di lavoro.

Dopo aver creato la mappa, è possibile chiamare direttamente tale mappa da un flusso di lavoro nel progetto dell'app per la logica o da un flusso di lavoro dell'app per la logica Standard nel portale di Azure. Per questa attività, è possibile usare l'azione Operazioni del mapper dati denominata Trasforma con Data Mapper XSLT nel flusso di lavoro.

Questa guida pratica illustra come creare una mappa dati vuota, scegliere gli schemi di origine e di destinazione, creare vari tipi di mapping tra gli elementi dello schema, salvare e testare la mappa e quindi chiamare la mappa da un flusso di lavoro nel progetto dell'app per la logica.

Limitazioni e problemi noti

  • Data Mapper è attualmente disponibile solo in Visual Studio Code, non nel portale di Azure e solo nei progetti di app per la logica Standard, non nei progetti di app per la logica a consumo.

    L'esperienza front-end per Data Mapper è disponibile come open source nel repository pubblico su GitHub del team di Logic Apps di Azure. Per altre informazioni, vedere le risorse seguenti:

  • Data Mapper attualmente funziona solo in Visual Studio Code in esecuzione nei sistemi operativi Windows.

  • Data Mapper attualmente non supporta schemi che usano il formato di file delimitato da virgole (.csv).

  • Il riquadro Codice in Data Mapper è attualmente di sola lettura.

  • Nell'area del mapper dati il layout e le posizioni per le funzioni sono mobili, ma i nodi dello schema sono statici.

  • La funzione Filtro elabora correttamente le condizioni numeriche racchiuse tra virgolette doppie, ad esempio ">=10". Tuttavia, questa funzione attualmente non si comporta in modo coerente per i confronti di stringhe, ad esempio un controllo se un nome di elemento è "= 'Pen'".

  • Quando si crea un mapping tra gli elementi della matrice padre negli schemi di origine e di destinazione, il mapper aggiunge automaticamente un ciclo per scorrere gli elementi dell'elemento della matrice. Tuttavia, è comunque necessario creare in modo esplicito mapping tra gli elementi dell'elemento della matrice di origine e di destinazione.

  • Per chiamare le mappe create con Data Mapper, è possibile usare solo l'azione Operazioni del mapper di dati denominata Trasforma con Data Mapper XSLT. Per le mappe create da qualsiasi altro strumento, utilizzare l'azione Operazioni XML denominata Trasforma XML.

  • Per usare le mappe create con Data Mapper con flussi di lavoro nel portale di Azure, è necessario aggiungerle direttamente alla risorsa dell'app per la logica Standard.

Per bug non bloccanti o richieste di funzionalità, aprire un elemento con l'etichetta Data Mapper nel repository GitHub per il team di Azure Logic Apps.

Prerequisiti

  • Account e sottoscrizione di Azure. Se non si ha una sottoscrizione, è possibile iscriversi per creare un account Azure gratuito.

  • Visual Studio Code e l'estensione App per la logica di Azure (Standard) per creare flussi di lavoro di app per la logica Standard.

    Note

    L'estensione Data Mapper precedentemente separata viene ora unita all'estensione App per la logica di Azure (Standard). Per evitare conflitti, qualsiasi versione esistente dell'estensione Data Mapper viene rimossa quando si installa o si aggiorna l'estensione App per la logica di Azure (Standard). Dopo l'installazione o l'aggiornamento dell'estensione, riavviare Visual Studio Code.

  • File dello schema di origine e di destinazione che descrivono i tipi di dati da trasformare. Questi file possono avere uno dei formati seguenti:

    • File di definizione di XML Schema con estensione xsd

    • Un file JavaScript Object Notation con l'estensione di file .json

  • Un progetto di app per la logica Standard che include almeno un flusso di lavoro con stato o senza stato con un trigger. Se non si ha un progetto, seguire questa procedura in Visual Studio Code:

    1. Connettersi all'account Azure, se non è già stato fatto.

    2. Creare una cartella locale, un'area di lavoro e un progetto di app per la logica Standard e un flusso di lavoro con stato o senza stato. Durante la creazione del flusso di lavoro, selezionare Apri nella finestra corrente.

  • Dati di input di esempio se si vuole testare la mappa e verificare che la trasformazione funzioni come previsto.

Creare una mappa dati

  1. In Visual Studio Code aprire la cartella per il progetto di app per la logica Standard.

  2. Nel menu a sinistra di Visual Studio Code selezionare l'icona di Azure.

  3. Nella finestra di Azure, in Data Mapper selezionare Crea mappa dati.

    Screenshot che mostra Visual Studio Code con la finestra di Azure e il pulsante selezionato per Crea mappa dati.

    Nella barra del titolo di Visual Studio Code viene visualizzata una casella di richiesta in modo da poter specificare un nome per la mappa.

  4. Nella casella di richiesta immettere un nome per la mappa.

    Per questa guida, questi passaggi usano il nome Example-data-map.

    Screenshot che mostra la casella di richiesta e il nome della mappa dati di esempio.

    Data Mapper crea e apre una mappa dati vuota.

  5. Scegliere gli schemi di origine e di destinazione seguendo questa procedura:

    1. Nel riquadro Origine, selezionare Aggiungi nuova>Sfoglia per trovare e caricare lo schema di origine.

      Screenshot che mostra il riquadro Data Mapper e Source con le opzioni selezionate per Aggiungi nuovo e Sfoglia.

      Dopo aver aggiunto lo schema di origine, il riquadro Origine viene popolato con l'elemento XML "nodes" per i tipi di dati nello schema di origine, ad esempio:

      Screenshot che mostra il riquadro Origine popolato con nodi elemento XML dello schema di origine.

    2. Nel riquadro Destinazione, selezionare Aggiungi nuovo>Sfoglia per trovare e caricare lo schema di destinazione.

      Screenshot che mostra il riquadro Data Mapper e Destination con le opzioni selezionate per Aggiungi nuovo e Sfoglia.

      Dopo aver aggiunto lo schema di destinazione, il riquadro Destinazione viene popolato con l'elemento XML "nodes" per i tipi di dati nello schema di destinazione, ad esempio:

      Screenshot che mostra il riquadro Destinazione popolato con nodi elemento XML dello schema di origine.

Suggerimento

Se si verificano problemi durante il caricamento degli schemi, è possibile aggiungere i file dello schema di origine e di destinazione alla cartella locale degli Artefatti/Schemi del progetto dell'app per la logica. In questo scenario, per specificare lo schema di origine e di destinazione in Data Mapper, nei riquadri Origine e Destinazione aprire l'elenco Seleziona esistente anziché usare Aggiungi nuovo e selezionare lo schema.

Tipi di dati dello schema

Nella tabella seguente vengono descritti i possibili tipi di dati che potrebbero essere visualizzati in uno schema:

Simbolo TIPO Altre informazioni
Icona che rappresenta un tipo di dati matrice. Complesso (matrice) Contiene elementi o nodi di elemento ripetuti.

Un elemento matrice visualizza anche il punto di connessione seguente:

Icona per il punto di connessione dell'elemento della matrice.
Icona che rappresenta un tipo di dati Bool. Bool Solo True o false
Icona che rappresenta un tipo di dati Complex. Complex Oggetto XML con proprietà figlio, simile al tipo Object JSON
Icona che rappresenta un tipo di dati DateTime. Datetime
Icona che rappresenta un tipo di dati Decimal. Decimal
Icona che rappresenta un tipo di dati Integer. Integer Solo numeri interi
Icona che rappresenta un tipo di dati String. string

Creare un mapping diretto tra elementi

Per specificare una trasformazione semplice tra elementi con lo stesso tipo negli schemi di origine e di destinazione, seguire questa procedura:

  1. Per visualizzare ciò che accade nel codice durante la creazione del mapping, nell'angolo superiore destro del mapper selezionare Visualizza codice.

  2. Nell'area del mapper, nel riquadro Origine, trovare l'elemento di origine di cui si vuole eseguire il mapping.

    • Per impostazione predefinita, gli elementi padre vengono espansi automaticamente per visualizzare i relativi elementi figlio.

    • Questo esempio avvia il mapping dall'elemento di origine, ma è possibile scegliere di avviare il mapping dall'elemento di destinazione.

  3. Spostare il puntatore del mouse sul cerchio accanto al nome dell'elemento di origine fino a quando il puntatore non passa a un segno più (+).

    In questo esempio viene creato un mapping a partire dall'elemento di origine ID dipendente.

    Screenshot che mostra Data Mapper con puntatore sull'elemento di origine.

  4. Trascinare e disegnare una linea in modo che l'elemento di origine si connetta al cerchio per l'elemento di destinazione nel riquadro Destinazione.

    In questo esempio viene completato il mapping con l'elemento di destinazione ID, che ha lo stesso tipo di dati dell'elemento di origine.

    Screenshot che mostra Data Mapper, un puntatore sull'elemento di destinazione e una linea tra gli elementi di origine e di destinazione.

    A questo punto è stato creato un mapping diretto tra entrambi gli elementi con gli stessi tipi di dati.

    Screenshot che mostra un mapping completo tra EmployeeID e ID rispettivamente negli schemi di origine e di destinazione.

    Il riquadro Codice mostra la relazione di mapping creata:

    Screenshot che mostra il riquadro Codice con mapping diretto tra EmployeeID e ID rispettivamente negli schemi di origine e di destinazione.

    Suggerimento

    Per verificare se i mapping presentano problemi, selezionare Visualizza problemi. Ad esempio, un avviso viene visualizzato nell'elenco Problemi della scheda Avvisi se si crea un mapping tra elementi con tipi di dati non corrispondenti:

    Screenshot che mostra il mapping tra tipi di dati non corrispondenti.

Creare un mapping complesso tra elementi

Per specificare una trasformazione più complessa tra gli elementi negli schemi di origine e di destinazione, ad esempio gli elementi che si desidera combinare o avere tipi di dati diversi, è possibile usare una o più funzioni che eseguono la trasformazione desiderata nel mapping.

Nell'area del mapper, l'etichetta della funzione è codificata a colori in base al gruppo di funzioni. Accanto al nome della funzione, viene visualizzato il simbolo della funzione, ad esempio:

Screenshot che mostra l'etichetta della funzione di esempio.

Nella tabella seguente sono elencati i gruppi di funzioni e alcune funzioni di esempio che è possibile usare. Per l'elenco completo, vedere l'elenco Funzioni in Data Mapper.

Gruppo Funzioni di esempio
Raccolta Media, Conteggio, Accesso diretto, Valori distinti, Filtro, Indice, Unisci, Massimo, Minimo, Inverti, Ordinamento, Sottosequenza, Somma
Conversione A data, a numero intero, a numero, a stringa
Data e ora Aggiungere giorni, data corrente, ora corrente, data uguale a
Confronto logico Uguale, esiste, maggiore, maggiore o uguale, se, se else, è nil, è nul, è numero, è stringa, minore, minore o uguale, AND logico, NOT logico, OR logico, non uguale
Matematiche Assoluto, Aggiungi, Arcotangente, Soglia, Coseno, Divisione, Esponenziale, Esponenziale (base 10), Piano terra, Divisione intera, Logaritmo, Logaritmo (base 10), Modulo, Moltiplicazione, Potenza, Arrotonda, Seno, Radice quadrata, Sottrai, Tangente
Stringa Punti di codice in stringa, Concat, Contiene, Termina con, Lunghezza, Minuscolo, Nome, Corrispondenze di espressioni regolari, Sostituisci espressione regolare, Sostituisci, Inizia con, Da stringa a punti di codice, Sottostringa, Sottostringa dopo, Sottostringa prima, Taglia, Taglia a sinistra, Taglia a destra, Maiuscolo
Utilità Copia, Errore, Esecuzione XPath, Formattazione DateTime, Formattazione numero, Esecuzione XSLT

Aggiungere una funzione senza mapping

L'esempio in questa sezione trasforma i dati nell'elemento di origine da String a DateTime, ovvero il tipo di elemento di destinazione. L'esempio inizia senza prima creare un mapping e usa la funzione To Date, che accetta un singolo input.

  1. Per visualizzare ciò che accade nel codice durante la creazione del mapping, nell'angolo superiore destro del mapper selezionare Visualizza codice.

  2. Nell'elenco Funzioni, trovare e selezionare la funzione che si vuole usare, che aggiunge la funzione all'area del mapper. Se l'elenco Funzioni è compresso, nell'angolo superiore sinistro del mapper selezionare l'icona della funzione (Icona per l'elenco funzioni.).

    In questo esempio viene selezionata la funzione To Date, che si trova nel gruppo di funzioni conversioni.

    Screenshot che mostra la funzione selezionata denominata To Date.

    Note

    Se non esiste alcun mapping sulla mappa o se è selezionato un mapping quando si aggiunge una funzione alla mappa, la funzione viene visualizzata ma non è connessa ad alcun elemento o ad altre funzioni, ad esempio:

    Screenshot che mostra la funzione disconnessa denominata To Date.

  3. Connettere la funzione agli elementi di origine e di destinazione.

    1. Trascinare e disegnare una linea tra l'elemento di origine e il cerchio sul bordo sinistro della funzione. È possibile iniziare dall'elemento di origine o dalla funzione.

      Screenshot che mostra il mapping tra un elemento di origine e una funzione.

    2. Trascinare e disegnare una linea tra il bordo destro della funzione e l'elemento di destinazione. È possibile iniziare dall'elemento di destinazione o dalla funzione.

      Screenshot che mostra il mapping tra la funzione e l'elemento di destinazione.

    Il riquadro Codice mostra la relazione di mapping creata:

    Screenshot che mostra il riquadro Codice con la relazione di mapping diretto tra gli elementi di origine e di destinazione.

  4. Nell'area del mapper, selezionare la forma della funzione per visualizzare i dettagli della funzione.

  5. Nella scheda Input, confermare o modificare l'input da usare.

    Screenshot che mostra la scheda Input per la funzione denominata To Date.

    Alcuni scenari richiedono la definizione di una trasformazione oltre la coppia immediata di elementi di origine e di destinazione. Ad esempio, per definire una trasformazione tra una coppia di matrici e i relativi elementi, è necessario creare un ciclo tra le matrici. In alternativa, per eseguire un'attività quando il valore di un elemento soddisfa una condizione, è necessario aggiungere una condizione tra gli elementi.

Aggiungere una funzione che usa più input

L'esempio in questa sezione concatena più elementi di origine come input ed esegue il mapping di un singolo output all'elemento di destinazione. Nell'esempio viene usata la funzione Concat, che accetta più input.

  1. Per visualizzare ciò che accade nel codice durante la creazione del mapping, nell'angolo superiore destro del mapper selezionare Visualizza codice.

  2. Nell'elenco Funzioni, trovare e selezionare la funzione che si vuole usare, che aggiunge la funzione all'area del mapper.

    Se l'elenco Funzioni è compresso, nell'angolo superiore sinistro del mapper selezionare l'icona della funzione (Icona per l'elenco funzioni.).

    In questo esempio viene selezionata la funzione Concat, che si trova nel gruppo di funzioni String.

    Screenshot che mostra la funzione selezionata denominata Concat.

    Note

    Se non esiste alcun mapping sulla mappa o se è selezionato un mapping quando si aggiunge una funzione alla mappa, la funzione viene visualizzata ma non è connessa ad alcun elemento o ad altre funzioni, ad esempio:

    Screenshot che mostra la funzione disconnessa denominata Concat.

  3. Nell'area del mapper, selezionare la forma della funzione per visualizzare i dettagli della funzione.

  4. Nella scheda Input, selezionare gli elementi dello schema di origine da usare come input.

    In questo esempio vengono selezionati gli elementi dello schema di origine FirstName e LastName come input della funzione. Il mapper aggiunge automaticamente i rispettivi mapping tra gli elementi di origine e la funzione.

    Screenshot che mostra più elementi di origine come input di funzione.

  5. Per completare il mapping, trascinare e disegnare una linea tra il bordo destro della funzione e l'elemento di destinazione. È possibile iniziare dall'elemento di destinazione o dalla funzione.

    Screenshot che mostra i mapping completati tra più input, funzione Concat ed elemento di destinazione.

    Il riquadro Codice mostra le relazioni di mapping create:

    Screenshot che mostra il riquadro Codice con la funzione Concat, con più input e un singolo output.

Scorrere le matrici

Se gli schemi di origine e di destinazione contengono matrici, è possibile creare un ciclo per scorrere gli elementi delle matrici. L'esempio in questa sezione crea un ciclo attraverso una matrice di origine Dipendente e una matrice di destinazione Persona insieme ai mapping tra gli elementi delle matrici.

  1. Per visualizzare ciò che accade nel codice durante la creazione del mapping, nell'angolo superiore destro del mapper selezionare Visualizza codice.

  2. Nell'area del mapper, nei riquadri Origine e Destinazione, individuare le matrici di cui si vuole eseguire il mapping.

  3. Trascinare e disegnare una linea tra la coppia di elementi della matrice. È possibile iniziare dal riquadro Origine o dal riquadro Destinazione.

    L'esempio seguente inizia dal riquadro Origine ed esegue il mapping degli elementi Nome nella matrice di origine Dipendente e nella matrice di destinazione Persona:

    Screenshot che mostra l'area del mapper e il disegno di un mapping tra gli elementi Nome nelle matrici Dipendente di origine e Persona di destinazione.

    Dopo aver completato il mapping della prima coppia di elementi della matrice, il mapper aggiunge automaticamente un ciclo tra gli elementi padre della matrice di origine e di destinazione, che hanno il tipo di punto di connessione seguente: Icona per l'elemento matrice completato punto di connessione.

    L'esempio seguente evidenzia il ciclo aggiunto automaticamente tra le matrici padre Dipendente di origine e Persona di destinazione:

    Screenshot che mostra il mapping del ciclo tra le matrici padre dipendente di origine e persona di destinazione.

    Il riquadro Codice mostra il mapping e il ciclo creati:

    Screenshot che mostra il riquadro Codice con mapping di cicli tra matrici padre di origine e di destinazione e elementi di matrice.

  4. Continuare a eseguire il mapping degli altri elementi della matrice, ad esempio:

    Screenshot che mostra altri mapping tra altri elementi della matrice nelle matrici di origine e di destinazione.

Valutare una condizione per eseguire un'attività

Si supponga di voler aggiungere un mapping che valuta una condizione ed esegue un'attività quando viene soddisfatta la condizione. Per questo scenario, è possibile usare più funzioni.

Nell'esempio seguente, quando la quantità di acquisto supera i 20 articoli, il mapping calcola uno sconto da applicare usando le funzioni seguenti:

Gruppo di funzioni Funzione Scopo in questo esempio
Confronto Maggiore Controllare se la quantità di acquisto è superiore a 20.
Confronto If Controllare se la funzione Maggiore restituisce true.
Matematiche Moltiplicare Se la condizione è true, moltiplicare il prezzo dell'articolo del 10% per calcolare lo sconto.
  1. Nei riquadri Origine e Destinazione, trovare gli elementi da mappare nello scenario.

    In questo esempio vengono utilizzati gli elementi seguenti:

    • Riquadro Origine: ItemPrice e ItemQuantity

    • Riquadro destinazione: ItemPrice, ItemQuantity e ItemDiscount

      Screenshot che mostra la superficie del mapper e gli elementi dati per uno scenario di condizione di esempio.

  2. Nell'elenco Funzioni, trovare e selezionare le funzioni da usare, che aggiunge le funzioni all'area del mapper.

    • Se l'elenco Funzioni è compresso, nell'angolo superiore sinistro del mapper selezionare l'icona della funzione (Icona per il riquadro Funzioni.).

    • Se necessario, spostare le forme della funzione sulla superficie del mapper per renderle più facili da selezionare.

    In questo esempio vengono aggiunte le funzioni seguenti all'area del mapper: Maggiore, Se e Moltiplica

    Screenshot che mostra la superficie del mapper, gli elementi dati e le funzioni per uno scenario di condizione di esempio.

  3. Per visualizzare ciò che accade nel codice durante la creazione dei mapping, nell'angolo superiore destro del mapper selezionare Visualizza codice.

  4. Connettere gli elementi di origine, le funzioni e gli elementi di destinazione nell'ordine specifico in base alle esigenze dello scenario.

    In questo esempio vengono connessi gli elementi seguenti nell'ordine specificato per creare correttamente i mapping:

    Inizia Fine
    Elemento di origine ItemPrice Elemento di destinazione ItemPrice
    Elemento di origine ItemQuantity Input della funzione Maggiore sul bordo sinistro della forma. Questo input fornisce i dati per il campo Valore 1 nei dettagli della funzione.
    Output della funzione Maggiore sul bordo destro della forma Se l'input della funzione sul bordo sinistro della forma. Questo input fornisce i dati per il campo Condizione nei dettagli della funzione.
    Elemento di origine ItemPrice Input della funzione di Moltiplicazione sul bordo sinistro della forma. Questo input fornisce i dati per il campo Multiplicand nei dettagli della funzione.
    Moltiplicare l'output della funzione sul bordo destro della forma. Se l'input della funzione sul bordo sinistro della forma. Questo input fornisce i dati per il campo Valore nei dettagli della funzione.
    Se l'output della funzione sul bordo destro della forma. Elemento di destinazione ItemDiscount

    L'esempio seguente illustra i mapping in questo momento:

    Screenshot che mostra la superficie del mapper, gli elementi dati e le funzioni con mapping per uno scenario di condizione di esempio.

  5. Nei dettagli della funzione seguenti, nella scheda Input, confermare o specificare i valori seguenti:

    Funzione Campo e valore di input
    Maggiore - Valore 1: elemento di origine ItemQuantity
    - Valore 2: 20 come valore personalizzato
    Moltiplicare - Multiplicand 1: elemento di origine ItemPrice
    - Moltiplicatore 2: .10 come valore personalizzato
    If - Condizione: is-greater-than(ItemQuantity, 20)
    - Valore: multiply(ItemPrice, .10)

    La mappa seguente mostra l'esempio completato:

    Screenshot che mostra l'esempio di condizione completata.

    Il riquadro Codice mostra il mapping creato:

    Screenshot che mostra il riquadro Codice con mapping condizionale tra gli elementi di origine e di destinazione usando le funzioni, Greater, Multiply e If.

Salvare la mappa

Al termine, sulla barra degli strumenti della mappa selezionare Salva.

Visual Studio Code salva la mappa dei dati come artefatti seguenti:

  • Un file Data Mapper (<your-map-name.love>.lml) nella cartella del progetto >
  • Un file mappa dati (<) nella cartella del progetto >Maps

Suggerimento

Per organizzare gli artefatti a livelli più profondi, è possibile usare le cartelle e le sottocartelle seguenti:

  • Manufatti/DefinizioniMappa
  • Manufatti/Schemi
  • Artefatti/DataMapper/Estensioni/Funzioni
  • Elementi/DataMapper/Estensioni/InlineXslt

Testare la mappa

Per verificare che la trasformazione funzioni come previsto, sono necessari dati di input di esempio.

  1. Prima di testare la mappa, salvare la mappa per generare un <file>your-map-name.xslt corrente.

  2. Sulla barra degli strumenti della mappa selezionare Apri pannello test.

  3. Nella casella Dati di esempio del riquadro Mappa di test, incollare l'input di esempio e selezionare Test.

    La casella Risultato mostra i risultati del test.

Chiamare la mappa da un flusso di lavoro nel progetto

  1. Nella barra delle attività di Visual Studio Code selezionare Esplora (icona file) per visualizzare la struttura del progetto dell'app per la logica.

  2. Espandere la cartella con il nome del flusso di lavoro. Dal menu di scelta rapida del file di workflow.json, selezionare Apri finestra di progettazione.

  3. Nella finestra di progettazione del flusso di lavoro, seguire questi passaggi generali per aggiungere l'azione predefinita Operazioni di Gestione dei dati denominata Trasforma tramite XSLT di Data Mapper.

  4. Nella finestra di progettazione selezionare l'azione Trasforma tramite XSLT di Data Mapper.

  5. Nel riquadro delle informazioni sull'azione visualizzato, specificare il valore Contenuto e lasciare l'opzione Origine mappa impostata su LogicApp.

  6. Aprire l'elenco Nome mappa e selezionare la mappa (file con estensione xslt).

    Screenshot che mostra Visual Studio Code, Finestra di progettazione del flusso di lavoro Standard, con l'azione selezionata denominata Trasforma tramite XSLT di Data Mapper.

    Per usare la stessa azione Trasforma tramite XSLT di Data Mapper nel portale di Azure, è necessario aggiungere la mappa alla risorsa dell'app per la logica Standard.

Eseguire XSLT da una mappa dati

È possibile eseguire frammenti di codice XSLT eseguibili all'interno di un file di mapping dei dati (.xslt) utilizzando la funzione Esegui XSLT. Quando si usa questa funzione, si ottiene un file di mappa dati contenente l'eseguibile XSLT effettivo. Il file Data Mapper (.lml) contiene un riferimento al file XSLT eseguibile (.xslt o .xml).

Per completare questa attività, seguire questa procedura:

  1. Creare un nuovo file mappa dati (.xslt o .xml) contenente il frammento XSLT eseguibile da eseguire.

  2. Inserire o spostare il file di frammento XSLT nella cartella di progetto seguente:

    Artifacts>DataMapper\Extensions>InlineXSLT

    Screenshot che mostra Visual Studio Code, il progetto di app per la logica standard e la cartella di progetto InlineXslt con il file InlineXslt.xsd.

    Note

    Se si crea o si salva questo file XSLT eseguibile in Visual Studio Code, il file viene visualizzato automaticamente nella cartella del progetto Artifacts>Maps. Assicurarsi di spostare i file di frammento XSLT nella cartella InlineXslt.

  3. Aprire la mappa dati da cui si vuole eseguire XSLT.

  4. Nel riquadro Funzioni, in Utilità, selezionare Esegui XSLT per aggiungere la funzione all'area del mapper.

  5. Nell'area del mapper selezionare Esegui XSLT.

  6. Nell'elenco a discesa File, selezionare il file con estensione xslt eseguibile aggiunto alla cartella InlineXSLT, ad esempio:

    Screenshot che mostra l'area del mapper di dati aperto e la funzione Esegui XSLT con il file InlineXslt.xsd selezionato.

  7. Connettere la funzione Esegui XSLT al nodo di destinazione in cui si vuole applicare la logica XSLT, ad esempio:

    Screenshot che mostra l'area del mapper di dati aperto e la funzione Esegui XSLT connessa al nodo di destinazione.

    Poiché la logica XSLT si applica solo al nodo di destinazione, non è necessario connettere la funzione Esegui XSLT a un nodo di origine.

  8. Testare la mappa per verificare che i risultati previsti vengano visualizzati nello schema di destinazione.

Per la distribuzione, è necessaria solo la mappa dei dati risultante con XLST eseguibile inline.

Accedere ai nodi in XML annidato

Si supponga di disporre di uno schema con nodi XML annidati e di voler usare questi nodi nei modi seguenti:

  • Accedere agli attributi o agli elementi annidati.
  • Applicare la logica in base alla struttura o al contenuto dai dati in ingresso.

Per completare queste attività, usare la funzione Esegui XPath:

  1. Aprire la mappa dati su cui si desidera lavorare.

  2. Nel riquadro Funzioni, in Utilità selezionare Esegui XPath per aggiungere la funzione all'area del mapper.

  3. Nell'area del mapper selezionare Esegui XPath.

  4. Nella casella Espressione XPATH, immettere un'espressione che esegue il lavoro desiderato.

    Per informazioni sulla sintassi delle espressioni, vedere Sintassi XPath.

    Questo esempio usa l'espressione //Address insieme a un payload di test:

    Screenshot che mostra l'area del mapper di dati aperto e la funzione Esegui XPath con espressione.

    Note

    Le barre doppie (//) selezionano i nodi dal nodo corrente che corrispondono alla selezione, indipendentemente dalla posizione in cui sono presenti i nodi.

  5. Connettere la funzione Esegui XPath al nodo di destinazione in cui si vuole eseguire la funzione.

    Questo esempio connette la funzione al nodo Indirizzo nello schema di destinazione:

    Screenshot che mostra l'area del mapper di dati aperto e la funzione Esegui XPath connessa al nodo di destinazione.

    Note

    I nomi dei nodi vengono racchiusi automaticamente tra virgolette doppie (" ").

  6. Testare la mappa per verificare che i risultati previsti vengano visualizzati nello schema di destinazione.

    Questo esempio usa un payload di test e produce correttamente risultati con più nodi Indirizzo perché il nodo Indirizzo di origine esiste in una matrice Dipendente, mentre il nodo Indirizzo di destinazione esiste in una matrice Persone.

    Screenshot che mostra l'area del mapper di dati aperta, la funzione Esegui XPath e i risultati dei test nello schema di destinazione.

    Note

    Se si crea un mapping tra matrici negli schemi di origine e di destinazione, viene visualizzato automaticamente un ciclo sulla superficie del mapper per scorrere gli elementi della matrice. Tuttavia, è comunque necessario creare mapping tra gli elementi della matrice di origine e di destinazione. Per informazioni sul ciclo delle matrici, vedere Scorrere le matrici.

Creare funzioni XML personalizzate

Per definire la logica riutilizzabile nella mappa, è possibile creare funzioni XML personalizzate, che offrono i vantaggi seguenti:

  • Ridurre la duplicazione e supportare trasformazioni specifiche dello schema.
  • Eseguire il wrapping di una logica complessa in componenti gestibili.
  • Gestire casi perimetrali specifici dello schema.

Per creare una funzione XML personalizzata, seguire questa procedura:

  1. Creare un file XML (.xml) con un nome significativo che descrive lo scopo della funzione.

    Il file XML deve usare uno schema specifico per le definizioni di funzione. Se sono presenti più funzioni correlate, è possibile usare un singolo file per queste funzioni. Anche se è possibile usare qualsiasi nome di file, un nome di file o una categoria significativa semplifica l'identificazione, la ricerca e l'individuazione delle funzioni.

  2. Aggiungere questo file XML al progetto dell'app per la logica nella cartella seguente:

    Artifacts>DataMapper\Extensions>Funzioni

  3. Aprire la mappa dei dati in cui si vuole usare la funzione.

  4. Nel riquadro Funzioni, in Utilità, selezionare la funzione personalizzata, che ora viene visualizzata nell'area del mapper.

  5. Nell'area del mapper selezionare la funzione. Specificare l'input necessario per la funzione.

  6. Connettere la funzione agli endpoint necessari.

    Nell'esempio seguente, viene illustrata una funzione personalizzata denominata Età che restituisce l'età per la data di nascita specificata. La funzione si connette al nodo di origine Data di nascita e al nodo Altro di destinazione. Per esaminare la definizione di questa funzione personalizzata, vedere Esaminare la definizione della funzione di esempio.

    Screenshot che mostra la superficie del mapper dati aperto e la funzione personalizzata denominata Età.

  7. Testare la mappa per verificare che i risultati previsti vengano visualizzati nello schema di destinazione, ad esempio:

    Screenshot che mostra la superficie del mapper di dati aperta, la funzione personalizzata denominata Età e i risultati della funzione.

Esaminare lo schema per una definizione di funzione

Il file XML deve usare lo schema seguente per una definizione di funzione. Ogni elemento XML con il nome "function" implementa una funzione di stile XSLT 3.0 con altri attributi. L'elenco delle funzioni di mapper dati include il nome della funzione, la descrizione, i nomi dei parametri e i tipi di parametro.

<?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>

Esaminare le definizioni delle funzioni di esempio

Il file di SampleFunctions.xml seguente illustra l'implementazione per le funzioni seguenti:

  • "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>