Compartir a través de


Cree asignaciones para transformar datos en flujos de trabajo de aplicaciones lógicas con Visual Studio Code

Se aplica a: Azure Logic Apps (Estándar)

Al intercambiar mensajes que usan formatos XML o JSON diferentes en un flujo de trabajo de aplicación lógica, debe especificar cómo transformar o convertir los datos del formato de origen al formato de destino, por ejemplo, entre documentos XML o entre documentos JSON. Esta tarea es importante especialmente cuando tiene huecos entre las estructuras de datos en los esquemas de origen y de destino. Un esquema describe los elementos de datos, los atributos y los tipos de datos de un documento XML o JSON.

Para definir transformaciones entre estructuras de datos y puentear los huecos, puede crear una asignación (archivo .xslt) que especifique las relaciones entre los elementos de datos en los esquemas de origen y de destino. Puede crear o editar visualmente una asignación mediante Visual Studio Code con la extensión Azure Logic Apps (Estándar) en el contexto de un proyecto de aplicación lógica estándar. La herramienta Asignador de datos proporciona una experiencia unificada para la asignación y transformación mediante gestos de arrastrar y colocar, funciones precompiladas para crear expresiones y una manera de probar manualmente las asignaciones antes de usarlos en los flujos de trabajo.

Después de crear la asignación, puede llamar directamente a esa asignación desde un flujo de trabajo en el proyecto de aplicación lógica o desde un flujo de trabajo de aplicación lógica estándar en Azure Portal. Para esta tarea, es posible usar la acción Operaciones del asignador de datos denominada Transformación mediante XSLT del asignador de datos en el flujo de trabajo.

En esta guía paso a paso se muestra cómo crear una asignación de datos vacío, elegir los esquemas de origen y destino, crear varios tipos de asignaciones entre elementos de esquema, guardar y probar la asignación y, a continuación, llamar a la asignación desde un flujo de trabajo en el proyecto de aplicación lógica.

Limitaciones y problemas conocidos

  • Asignador de datos solo está disponible actualmente en Visual Studio Code, no en Azure Portal, y solo desde proyectos de aplicación lógica Estándar, no en proyectos de aplicación lógica de Consumo.

    La interfaz de front-end para Data Mapper está disponible como código abierto en el repositorio público de GitHub para el equipo de Azure Logic Apps. Para obtener más información, consulte los siguientes recursos:

  • Asignador de datos actualmente solo funciona en Visual Studio Code con sistemas operativos Windows.

  • El asignador de datos no admite actualmente esquemas que usan el formato de archivo de valores separados por comas (.csv).

  • El panel Código del Asignador de datos es actualmente de solo lectura.

  • En la superficie del asignador de datos, el diseño y las posiciones de las funciones se pueden mover, pero los nodos de esquema son estáticos.

  • La función Filtrar procesa correctamente las condiciones numéricas que se incluyen entre comillas dobles, por ejemplo, ">=10". Sin embargo, esta función no se comporta de forma coherente para comparaciones de cadenas, como una comprobación sobre si un nombre de elemento es "= 'Pen'".

  • Al crear una asignación entre los elementos primarios de la matriz en los esquemas de origen y de destino, el asignador agrega automáticamente un bucle para recorrer en iteración los elementos del elemento de matriz. Sin embargo, todavía debe crear explícitamente asignaciones entre los elementos de elemento de matriz de origen y de destino.

  • Para llamar a las asignaciones creados con el asignador de datos, solo puede usar la acción Operaciones del asignador de datos denominada Transformar mediante el XSLT del Asignador de datos. Para las asignaciones creadas por cualquier otra herramienta, use la acción Operaciones XML denominada Transformar XML.

  • Para usar las asignaciones que cree con El asignador de datos con flujos de trabajo en Azure Portal, debe agregarlos directamente al recurso de aplicación lógica estándar.

Para las solicitudes de características o errores que no bloquean, abra un elemento con la etiqueta Asignador de datos en el repositorio de GitHub del equipo de Azure Logic Apps.

Requisitos previos

  • Una cuenta y una suscripción de Azure. Si no tiene una suscripción, regístrese para obtener una cuenta gratuita de Azure.

  • Visual Studio Code y la extensión de Azure Logic Apps (Estándar) para crear flujos de trabajo de aplicaciones lógicas Estándar.

    Nota:

    La extensión de Asignador de datos anteriormente independiente ahora se combina con la extensión Azure Logic Apps (Estándar). Para evitar conflictos, se quita cualquier versión existente de la extensión Asignador de datos al instalar o actualizar la extensión Azure Logic Apps (Estándar). Después de instalar o actualizar la extensión, reinicie Visual Studio Code.

  • Los archivos de esquema de origen y destino que describen los tipos de datos que se van a transformar. Estos archivos pueden tener los siguientes formatos:

    • Un archivo de definición de esquema XML con la extensión de archivo .xsd

    • Un archivo de notación de objetos JavaScript con la extensión de archivo .json

  • Un proyecto de aplicación lógica estándar que incluye un flujo de trabajo con estado o sin estado con un desencadenador como mínimo. Si no tiene un proyecto, siga estos pasos en Visual Studio Code:

    1. Conéctese a la cuenta de Azure, si todavía no lo ha hecho.

    2. Cree una carpeta local, un área de trabajo y un proyecto de aplicación lógica estándar y un flujo de trabajo con estado o sin estado. Durante la creación del flujo de trabajo, seleccione Abrir en la ventana actual.

  • Datos de entrada de ejemplo si desea probar el mapa y comprobar que la transformación funciona según lo previsto.

Creación de una asignación de datos

  1. En Visual Studio Code, abra la carpeta del proyecto de aplicación lógica estándar.

  2. En el menú izquierdo de Visual Studio Code, seleccione el icono de Azure.

  3. En la ventana Azure, en Asignador de datos, seleccione Crear asignación de datos.

    Captura de pantalla que muestra Visual Studio Code con la ventana de Azure y el botón seleccionado para Crear asignación de datos.

    En la barra de título de Visual Studio Code, se abre un cuadro de mensaje para que pueda proporcionar un nombre para la asignación.

  4. En el cuadro de solicitud, escriba un nombre para el mapa.

    En esta guía, estos pasos usan el nombre Ejemplo de asignación de datos.

    Captura de pantalla que muestra el cuadro de solicitud y el nombre de la asignación de datos de ejemplo.

    El Asignador de datos crea y abre una asignación de datos en blanco.

  5. Elija los esquemas de origen y destino siguiendo estos pasos:

    1. En el panel Origen, seleccione Agregar nuevo>Examinar para buscar y cargar el esquema de origen.

      Captura de pantalla que muestra el panel Asignador de datos y Origen con las opciones seleccionadas para Agregar nuevo y Examinar.

      Después de agregar el esquema de origen, el panel Origen se rellena con el elemento XML "nodes" para los tipos de datos del esquema de origen, por ejemplo:

      Captura de pantalla que muestra el panel Origen rellenado con nodos de elemento XML de esquema de origen.

    2. En el panel Destino, seleccione Agregar nuevo>Examinar para buscar y cargar el esquema de destino.

      Captura de pantalla que muestra el panel Asignador de datos y Destino con las opciones seleccionadas para Agregar nuevo y Examinar.

      Después de agregar el esquema de destino, el panel Destino se rellena con el elemento XML "nodes" para los tipos de datos del esquema de destino, por ejemplo:

      Captura de pantalla que muestra el panel Destino rellenado con nodos de elemento XML de esquema de origen.

Sugerencia

Si experimenta problemas al cargar los esquemas, puede agregar los archivos de esquema de origen y de destino a la carpetaesquemas de artefactos/ local del proyecto de aplicación lógica. En este escenario, para especificar el esquema de origen y destino en el Asignador de datos, en los paneles Origen y Destino, abra la lista Seleccionar existente, en lugar de usar Agregar nuevo y seleccione el esquema.

Tipos de datos de esquema

En la tabla siguiente se describen los posibles tipos de datos que pueden aparecer en un esquema:

Símbolo Tipo Más información
Icono que representa un tipo de datos Array. Complejo (matriz) Contiene elementos o nodos de elementos repetidos.

Un elemento de matriz también muestra el siguiente punto de conexión:

Icono del punto de conexión del elemento de matriz.
Icono que representa un tipo de datos Bool. Bool Solo true o false
Icono que representa un tipo de datos Complex. Complex Objeto XML con propiedades secundarias, similar al tipo de objeto JSON
Icono que representa un tipo de datos DateTime. DateTime
Icono que representa un tipo de datos Decimal. Decimal
Icono que representa un tipo de datos Integer. Entero Solo números enteros
Icono que representa un tipo de datos String. String

Crear una asignación directa entre elementos

Para especificar una transformación sencilla entre los elementos que tienen el mismo tipo en los esquemas de origen y destino, siga estos pasos:

  1. Para ver lo que sucede en el código mientras crea la asignación, en la esquina superior derecha del asignador, seleccione Ver código.

  2. En la superficie del asignador, en el panel Origen, busque el elemento de origen que desea asignar.

    • De forma predeterminada, los elementos primarios se expanden automáticamente para mostrar sus elementos secundarios.

    • En este ejemplo se inicia la asignación desde el elemento de origen, pero puede elegir iniciar la asignación desde el elemento de destino.

  3. Mueva el puntero del mouse sobre el círculo situado junto al nombre del elemento de origen hasta que el puntero cambie a un signo más (+).

    En este ejemplo se crea una asignación a partir del identificador de empleado del elemento de origen.

    Captura de pantalla que muestra el asignador de datos con puntero sobre el elemento de origen.

  4. Arrastre y dibuje una línea para que el elemento de origen se conecte al círculo del elemento de destino en el panel Destino.

    En este ejemplo se completa la asignación con la identificación del elemento de destino, que tiene el mismo tipo de datos que el elemento de origen.

    Captura de pantalla que muestra el asignador de datos, un puntero sobre el elemento de destino y una línea entre los elementos de origen y de destino.

    Ahora ha creado una asignación directa entre ambos elementos que tienen los mismos tipos de datos.

    Captura de pantalla que muestra una asignación completa entre EmployeeID e ID en los esquemas de origen y destino, respectivamente.

    El panel Código muestra la relación de asignación que creó:

    Captura de pantalla que muestra el panel Código con asignación directa entre EmployeeID e ID en los esquemas de origen y destino, respectivamente.

    Sugerencia

    Para comprobar si las asignaciones tienen algún problema, seleccione Ver problemas. Por ejemplo, aparece una advertencia en la lista de Problemas en la pestaña Advertencias si crea una asignación entre elementos que tienen tipos de datos no coincidentes:

    La captura de pantalla muestra la asignación entre tipos de datos no coincidentes.

Crear una asignación compleja entre elementos

Para especificar una transformación más complicada entre los elementos de los esquemas de origen y destino, por ejemplo, los elementos que desea combinar o tener tipos de datos diferentes, puede usar una o varias funciones que realicen la transformación que desee en la asignación.

En la superficie del asignador, la etiqueta de función está codificada por colores en función del grupo de funciones. Junto al nombre de la función, aparece el símbolo de la función, por ejemplo:

Captura de pantalla que muestra la etiqueta de función de ejemplo.

En la tabla siguiente se enumeran los grupos de funciones y algunas funciones de ejemplo que puede usar. Para obtener la lista completa, consulte la lista Funciones en el asignador de datos.

Grupo Funciones de ejemplo
Colección Promedio, Contar, Acceso Directo, Valores Distintos, Filtrar, Índice, Unir, Máximo, Mínimo, Invertir, Ordenar, Subsecuencia, Sumar
Conversión Hasta la fecha, A entero, A número, A cadena
Fecha y hora Agregar días, fecha actual, hora actual, igual a fecha
Comparación lógica Igual, Existe, Mayor, Mayor o igual, Si, Si no, Es nulo, Es número, Es cadena, Menor, Menor o igual, Y lógico, NO lógico, O lógico, No es igual
Matemáticas Absoluto, Suma, Arcotangente, Techo, Coseno, Dividir, Exponencial, Exponencial (base 10), Piso, División de enteros, Logaritmo, Logaritmo (base 10), Módulo, Multiplicar, Potencia, Redondeo, Seno, Raíz cuadrada, Restar, Tangente
String Puntos de código a cadena, Concatenar, Contiene, Termina con, Longitud, Minúsculas, Nombre, Coincidencias de expresiones regulares, Reemplazar expresiones regulares, Reemplazar, Comienza con, Cadena a puntos de código, Subcadena, Subcadena después, Subcadena antes, Recortar, Recortar a la izquierda, Recortar a la derecha, Mayúsculas
Utilidad Copiar, Error, Ejecutar XPath, Formatear fecha y hora, Formatear número, Ejecutar XSLT

Agregar una función sin una asignación

En el ejemplo de esta sección se transforman los datos del elemento de origen de Cadena a DateTime, que es el tipo de elemento de destino. En el ejemplo se inicia sin crear primero una asignación y se usa la función To Date, que acepta una sola entrada.

  1. Para ver lo que sucede en el código mientras crea la asignación, en la esquina superior derecha del asignador, seleccione Ver código.

  2. En la lista Funciones, busque y seleccione la función que desea usar, que agrega la función a la superficie del asignador. Si la lista Funciones está contraída, en la esquina superior izquierda del asignador, seleccione el icono de función (Icono de la lista Funciones.).

    En este ejemplo se selecciona la función To Date, que se encuentra en el grupo de funciones de Conversión.

    Captura de pantalla que muestra la función seleccionada denominada To Date.

    Nota:

    Si no existe ninguna asignación en la asignación o si se selecciona una asignación al agregar una función a la asignación, la función aparece pero no está conectada a ningún elemento u otras funciones, por ejemplo:

    Captura de pantalla que muestra la función desconectada denominada To Date.

  3. Conecte la función a los elementos de origen y destino.

    1. Arrastre y dibuje una línea entre el elemento de origen y el círculo en el borde izquierdo de la función. Puede empezar desde el elemento de origen o la función .

      Captura de pantalla que muestra la asignación entre un elemento de origen y una función.

    2. Arrastre y dibuje una línea entre el borde derecho de la función y el elemento de destino. Puede empezar desde el elemento de destino o desde la función.

      Captura de pantalla que muestra la asignación entre la función y el elemento de destino.

    El panel Código muestra la relación de asignación que creó:

    Captura de pantalla que muestra el panel Código con una relación de asignación directa entre los elementos de origen y de destino.

  4. En la superficie del asignador, seleccione la forma de función para ver los detalles de la función.

  5. En la pestaña Entrada, confirme o edite la entrada que se va a usar.

    Captura de pantalla que muestra la pestaña Entrada de la función denominada To Date.

    Algunos escenarios requieren definir una transformación más allá del par inmediato de elementos de origen y destino. Por ejemplo, para definir una transformación entre un par de matrices y sus elementos, debe crear un bucle entre las matrices. O bien, para realizar una tarea cuando el valor de un elemento cumple una condición, debe agregar una condición entre los elementos.

Agregar una función que usa varias entradas

En el ejemplo de esta sección se concatenan varios elementos de origen como entradas y se asigna una única salida al elemento de destino. En el ejemplo se usa la función Concat, que acepta varias entradas.

  1. Para ver lo que sucede en el código mientras crea la asignación, en la esquina superior derecha del asignador, seleccione Ver código.

  2. En la lista Funciones, busque y seleccione la función que desea usar, que agrega la función a la superficie del asignador.

    Si la lista Funciones está contraída, en la esquina superior izquierda del asignador, seleccione el icono de función (Icono de la lista Funciones.).

    En este ejemplo se selecciona la función Concat, que se encuentra en el grupo de funciones de Cadena.

    Captura de pantalla que muestra la función seleccionada denominada Concat.

    Nota:

    Si no existe ninguna asignación en la asignación o si se selecciona una asignación al agregar una función a la asignación, la función aparece pero no está conectada a ningún elemento u otras funciones, por ejemplo:

    Captura de pantalla que muestra la función desconectada denominada Concat.

  3. En la superficie del asignador, seleccione la forma de función para ver los detalles de la función.

  4. En la pestaña Entrada, seleccione los elementos de esquema de origen que se van a usar como entradas.

    En este ejemplo se seleccionan los elementos de esquema de origen FirstName y LastName como entradas de función. El asignador agrega automáticamente las asignaciones respectivas entre los elementos de origen y la función.

    Captura de pantalla que muestra varios elementos de origen como entradas de función.

  5. Para completar la asignación, arrastre y dibuje una línea entre el borde derecho de la función y el elemento de destino. Puede empezar desde el elemento de destino o la función.

    Captura de pantalla que muestra las asignaciones finalizadas entre varias entradas, la función Concat y el elemento de destino.

    En el panel Código se muestran las relaciones de asignación que creó:

    Captura de pantalla que muestra el panel Código con la función Concat, que tiene varias entradas y una única salida.

Recorrer en iteración matrices

Si los esquemas de origen y destino contienen matrices, puede crear un bucle para recorrer en iteración los elementos de las matrices. En el ejemplo de esta sección se crea un bucle a través de una matriz de origen de Empleado y una matriz de destino Persona junto con asignaciones entre los elementos de las matrices.

  1. Para ver lo que sucede en el código mientras crea la asignación, en la esquina superior derecha del asignador, seleccione Ver código.

  2. En la superficie del asignador, en los paneles Origen y Destino, busque las matrices que desea asignar.

  3. Arrastre y dibuje una línea entre el par de elementos de matriz. Puede empezar desde el panelOrigen o desde el panel Destino.

    El siguiente ejemplo comienza desde el panel Origen y asigna los elementos Nombre en la matriz de origen Empleado y la matriz de destino Persona:

    Captura de pantalla que muestra la superficie del asignador y el dibujo de una asignación entre los elementos Name de las matrices Empleado y Persona de destino.

    Después de terminar de asignar el primer par de elementos de matriz, el asignador agrega automáticamente un bucle entre los elementos primarios de la matriz de origen y de destino, que tienen el siguiente tipo de punto de conexión: Icono del punto de conexión completado del elemento de matriz.

    El siguiente ejemplo resalta el bucle agregado automáticamente entre las matrices principales Empleado de origen y Persona de destino:

    La captura de pantalla muestra el mapeo de bucle entre las matrices principales Empleado de origen y Persona de destino.

    El panel Código muestra la asignación y el bucle que creó:

    Captura de pantalla que muestra el panel Código con asignación de bucles entre matrices primarias de origen y destino, además de elementos de matriz.

  4. Siga asignando los demás elementos de matriz, por ejemplo:

    Captura de pantalla que muestra más asignaciones entre otros elementos de matriz en matrices de origen y de destino.

Evalúe una condición para realizar una tarea

Supongamos que desea agregar una asignación que evalúe una condición y realice una tarea cuando se cumpla la condición. En este escenario, puede usar varias funciones.

En el ejemplo siguiente, cuando la cantidad de compra supera los 20 elementos, la asignación calcula un descuento que se aplicará mediante las funciones siguientes:

Grupo de funciones Función Propósito en este ejemplo
Comparación Superior Compruebe si la cantidad de compra es superior a 20.
Comparación If Compruebe si la función Greater devuelve true.
Matemáticas Multiplicar Si la condición es cierta, multiplique el precio del artículo en un 10 % para calcular el descuento.
  1. En los paneles Origen y Destino, busque los elementos que se van a asignar en el escenario.

    En este ejemplo se usan los siguientes elementos:

    • Panel de Origen: ItemPrice y ItemQuantity

    • Panel de Destino: ItemPrice, ItemQuantity, y ItemDiscount

      Captura de pantalla que muestra la superficie del asignador y los elementos de datos, por ejemplo, escenario de condición.

  2. En la lista Funciones, busque y seleccione las funciones que desea usar, que agrega las funciones a la superficie del asignador.

    • Si la lista Funciones está contraída, en la esquina superior izquierda del asignador, seleccione el icono de función (Icono del panel Funciones.).

    • Si es necesario, mueva las formas de función en la superficie del asignador para que sean más fáciles de seleccionar.

    En este ejemplo se agregan las siguientes funciones a la superficie del asignador: Greater, If y Multiply

    Captura de pantalla que muestra la superficie del asignador, los elementos de datos y las funciones, por ejemplo, escenario de condición.

  3. Para ver lo que sucede en el código mientras crea las asignaciones, en la esquina superior derecha del asignador, seleccione Ver código.

  4. Conecte los elementos de origen, las funciones y los elementos de destino en el orden específico, ya que el escenario requiere.

    En este ejemplo se conectan los siguientes elementos en el orden especificado para crear correctamente las asignaciones:

    Start End
    Elemento de origen ItemPrice Elemento de destino ItemPrice
    Elemento de origen ItemQuantity Entrada de la función Greater en el borde izquierdo de la forma. Esta entrada proporciona los datos del campo Valor 1 en los detalles de la función.
    Entrada de la función Greater en el borde derecho de la forma Entrada de la función If en el borde izquierdo de la forma. Esta entrada proporciona los datos para el campo Condición en los detalles de la función.
    Elemento de origen ItemPrice Entrada de la función Multiply en el borde izquierdo de la forma. Esta entrada proporciona los datos para el campo Multiplicado en los detalles de la función.
    Entrada de la función Multiply en el borde derecho de la forma. Entrada de la función If en el borde izquierdo de la forma. Esta entrada proporciona los datos del campo Valor en los detalles de la función.
    Entrada de la función If en el borde derecho de la forma. Elemento de destino ItemDiscount

    En el ejemplo siguiente se muestran las asignaciones en este momento dado:

    Captura de pantalla que muestra la superficie del asignador, los elementos de datos y las funciones con asignaciones para un escenario de condición de ejemplo.

  5. En los detalles de la función siguientes, en la pestaña Entrada, confirme o proporcione los siguientes valores:

    Función Campo y valor de entrada
    Superior - Valor 1: elemento de origen ItemQuantity
    - Valor 2:20 como valor personalizado
    Multiplicar - Multiplicando 1: elemento de origen ItemPrice
    - Multiplicando 2: .10 como valor personalizado
    If - Condición: is-greater-than(ItemQuantity, 20)
    - Valor: multiply(ItemPrice, .10)

    En el siguiente mapa se muestra el ejemplo finalizado:

    Captura de pantalla que muestra el ejemplo de condición finalizada.

    El panel Código muestra la asignación que creó:

    Captura de pantalla que muestra el panel Código con asignación condicional entre los elementos de origen y destino mediante las funciones, Greater, Multiply e If.

Guardar el mapa

Cuando esté listo, en la barra de herramientas de asignación, seleccione Guardar.

Visual Studio Code guarda el mapa de datos como los artefactos siguientes:

  • Un archivo Data Mapper (<your-map-name.lml>) en la carpeta del proyecto Artifacts>MapDefinitions
  • Un archivo de mapa de datos (<your-map-name.xslt>) en la carpeta del proyecto Artifacts>Maps

Sugerencia

Para organizar los artefactos en niveles más profundos, puede usar las siguientes carpetas y subcarpetas:

  • Artefactos/Definiciones de Mapa
  • Artefactos/Esquemas
  • Artefactos/DataMapper/Extensiones/Funciones
  • Artefactos/DataMapper/Extensiones/InlineXslt

Prueba de la asignación

Para confirmar que la transformación funciona según lo previsto, necesitará datos de entrada de ejemplo.

  1. Antes de probar su asignación, guárdela para generar un archivo <your-map-name>.xslt actual.

  2. En la barra de herramientas de la asignación, seleccione elPanel abrir prueba.

  3. En el panel Asignación de prueba, en el cuadro Datos de muestra, pegue la entrada de muestra y seleccione Prueba.

    El cuadro Resultado muestra los resultados de la prueba.

Llamada a la asignación desde un flujo de trabajo del proyecto

  1. En la barra actividad de Visual Studio Code, seleccione Explorador (icono de archivos) para ver la estructura del proyecto de aplicación lógica.

  2. Expanda la carpeta que tiene el nombre del flujo de trabajo. En el menú contextual del archivo workflow.json, seleccione Abrir diseñador.

  3. En el diseñador de flujos de trabajo, siga estos pasos generales para agregar la acción integrada Operaciones del asignador de datos denominada Transformar mediante XSLT del asignador de datos.

  4. En el diseñador, seleccione la acción Transformar mediante XSLT del Asignador de datos.

  5. En el panel de información de acción que aparece, especifique el valor de Contenido y deje Origen de la asignación establecido en LogicApp.

  6. Abra la lista Nombre de la asignación y seleccione la asignación (archivo.xslt).

    Captura de pantalla que muestra Visual Studio Code, diseñador de flujo de trabajo estándar, con la acción seleccionada denominada Transformar mediante XSLT del Asignador de datos y las propiedades de acción.

    Para usar la misma acción Transformar mediante XSLT del Asignador de datos en Azure Portal, debe agregar la asignación al recurso aplicación lógica Estándar.

Ejecución de XSLT desde un mapa de datos

Puede ejecutar fragmentos ejecutables de XSLT dentro de un archivo de mapa de datos (.xslt) mediante la función Ejecutar XSLT. Al utilizar esta función, obtendrá un archivo de mapa de datos que contiene el XSLT ejecutable propiamente dicho. El archivo Data Mapper (.lml) contiene una referencia al archivo XSLT ejecutable (.xslt o .xml).

Para completar esta tarea, siga estos pasos:

  1. Cree un nuevo archivo de asignación de datos (.xslt o .xml) que contenga el fragmento de código XSLT ejecutable que desea ejecutar.

  2. Coloque o mueva el archivo de fragmento de código XSLT a la siguiente carpeta del proyecto:

    Artefactos>DataMapper\Extensions>InlineXSLT

    Captura de pantalla que muestra Visual Studio Code, proyecto de aplicación lógica estándar y carpeta del proyecto InlineXslt con el archivo InlineXslt.xsd.

    Nota:

    Si crea o guarda este archivo XSLT ejecutable en Visual Studio Code, el archivo aparece automáticamente en la carpeta del proyecto Artifacts>Maps . Asegúrese de mover archivos de fragmento de código XSLT a la carpeta InlineXslt .

  3. Abra el mapa de datos desde donde desea ejecutar el XSLT.

  4. En el panel Funciones, en Utilidad, seleccione Ejecutar XSLT para agregar la función a la superficie de mapeo.

  5. En la superficie del mapa, seleccione Ejecutar XSLT.

  6. En la lista desplegable Archivo , seleccione el archivo .xslt ejecutable que agregó a la carpeta InlineXSLT , por ejemplo:

    Captura de pantalla que muestra la superficie abierta del asignador de datos y la función Ejecutar XSLT con el archivo InlineXslt.xsd seleccionado.

  7. Conecte la función Ejecutar XSLT al nodo de destino donde desea aplicar la lógica XSLT, por ejemplo:

    Captura de pantalla que muestra la superficie abierta del asignador de datos y la función de ejecutar XSLT conectada al nodo de destino.

    Como la lógica XSLT solo se aplica al nodo de destino, no es necesario conectar la función Ejecutar XSLT a un nodo de origen.

  8. Pruebe el mapa para confirmar que los resultados esperados aparecen en el esquema de destino.

Para la implementación, solo necesita la asignación de datos resultante con el archivo XSLT ejecutable insertado.

Acceso a nodos en XML anidado

Supongamos que tiene un esquema que tiene nodos XML anidados y que quiere trabajar con estos nodos de las maneras siguientes:

  • Acceder a atributos o elementos anidados.
  • Aplique lógica basada en la estructura o el contenido de los datos entrantes.

Para completar estas tareas, use la función Ejecutar XPath :

  1. Abra el mapa de datos en el que desea trabajar.

  2. En el panel Funciones, en Utilidad, seleccione Ejecutar XPath para agregar la función a la superficie del mapeador.

  3. En la superficie del asignador, seleccione Ejecutar XPath.

  4. En el cuadro expresión XPATH , escriba una expresión que realice el trabajo que desee.

    Para obtener información sobre la sintaxis de expresiones, vea Sintaxis XPath.

    En este ejemplo se usa la //Address expresión junto con una carga de prueba:

    Recorte de pantalla que muestra la superficie del asignador de datos abierta y la función Ejecutar XPath con expresión.

    Nota:

    Las barras diagonales dobles (//) seleccionan los nodos del nodo actual que coinciden con la selección, independientemente de dónde existan los nodos.

  5. Conecte la función Execute XPath al nodo de destino donde desea ejecutar la función.

    En este ejemplo se conecta la función al nodo Address del esquema de destino:

    La captura de pantalla muestra la superficie del asignador de datos abierta y la función Ejecutar XPath conectada al nodo de destino.

    Nota:

    Los nombres de nodo se incluyen automáticamente entre comillas dobles (" ").

  6. Pruebe el mapa para confirmar que los resultados esperados aparecen en el esquema de destino.

    En este ejemplo se usa una carga de prueba y se generan correctamente resultados con varios nodos address porque el nodo Address de origen existe en una matriz Employee , mientras que el nodo Address de destino existe en una matriz Person .

    Captura de pantalla de la superficie del mapeador de datos abierto, la función Ejecutar XPath y los resultados de la prueba en el esquema de destino.

    Nota:

    Si crea una asignación entre matrices en los esquemas de origen y destino, aparecerá automáticamente un bucle en la superficie del asignador para recorrer en iteración los elementos de la matriz. Sin embargo, todavía tiene que crear mapeos entre los elementos de matriz de origen y de destino. Para obtener información sobre cómo recorrer matrices en bucle, consulte Iteración a través de matrices.

Creación de funciones XML personalizadas

Para definir la lógica reutilizable en el mapa, puede crear funciones XML personalizadas, que proporcionan las siguientes ventajas:

  • Reduzca la duplicación y admita transformaciones específicas del esquema.
  • Encapsular la lógica compleja en componentes administrables.
  • Maneje los casos extremos específicos del esquema.

Para crear una función XML personalizada, siga estos pasos:

  1. Cree un archivo XML (.xml) con un nombre descriptivo que describa el propósito de la función.

    El archivo XML debe usar un esquema específico para las definiciones de función. Si tiene varias funciones relacionadas, puede usar un único archivo para estas funciones. Aunque puede usar cualquier nombre de archivo, un nombre de archivo o una categoría significativos facilita la identificación, búsqueda y detección de las funciones.

  2. Agregue este archivo XML al proyecto de aplicación lógica en la carpeta siguiente:

    Artefactos>DataMapper\Extensions>Funciones

  3. Abra el mapa de datos en el que desea usar la función.

  4. En el panel Funciones, en Utilidad, seleccione su función personalizada, que ahora aparece en la superficie del mapeador.

  5. En la superficie del mapeador, seleccione su función. Proporcione la entrada que la función necesita para funcionar.

  6. Conecte la función a los puntos de conexión necesarios.

    En el ejemplo siguiente se muestra una función personalizada denominada Age que devuelve la edad de la fecha de nacimiento proporcionada. La función se conecta al nodo de origen Dat_of_Birth y al nodo Otro destino. Para revisar la definición de esta función personalizada, consulte Revisión de la definición de función de ejemplo.

    Captura de pantalla que muestra la superficie abierta del asignador de datos y la función personalizada denominada Edad.

  7. Pruebe el mapa para confirmar que los resultados esperados aparecen en el esquema de destino, por ejemplo:

    Recorte de pantalla que muestra la superficie del asignador de datos abierto, la función personalizada denominada Age y los resultados de la función.

Revisión del esquema de una definición de función

El archivo XML debe usar el esquema siguiente para una definición de función. Cada elemento XML que tiene el "function" nombre implementa una función de estilo XSLT 3.0 con algunos atributos más. La lista de funciones del Asignador de datos incluye el nombre de la función, la descripción, los nombres de parámetro y los tipos de parámetro.

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

Revisión de las definiciones de función de ejemplo

El siguiente archivo SampleFunctions.xml muestra la implementación de las siguientes funciones:

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