Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Azure Logic Apps (consumo + estándar)
Cuando quiera realizar transformaciones de JSON básicas en los flujos de trabajo de aplicación lógica, puede usar operaciones de datos integradas, como las acciones Redactar o Análisis del archivo JSON. Sin embargo, algunos escenarios pueden requerir transformaciones avanzadas y complejas que incluyen elementos como iteraciones, flujos de control y variables. Para las transformaciones de JSON a JSON, JSON a texto, XML a JSON o XML a texto, puede crear una plantilla que describa la asignación o transformación necesaria mediante el lenguaje de plantilla de código abierto Liquid. Puede seleccionar esta plantilla cuando agrega una acción integrada de Liquid al flujo de trabajo. Puede utilizar acciones de Liquid en flujos de trabajo de la aplicación lógica de consumo multiinquilino y en flujos de trabajo de la aplicación lógica estándar de un solo inquilino.
Aunque no haya desencadenadores de Liquid disponibles, puede usar cualquier desencadenador o acción para alimentar el contenido XML en el flujo de trabajo. Por ejemplo, puede usar un desencadenador de conector integrado, un desencadenador de conector administrado u hospedado en Azure disponible para Azure Logic Apps o incluso otra aplicación.
En este artículo se muestra cómo completar las tareas siguientes:
- Crear una plantilla de Liquid.
- Cargue la plantilla en la cuenta de integración para flujos de trabajo de aplicación lógica de consumo o en el recurso de aplicación lógica estándar para su uso en cualquier flujo de trabajo secundario.
- Agregue una acción Liquid al flujo de trabajo.
- Seleccionar la plantilla como la asignación que se quiere usar.
Para más información, revise la siguiente documentación:
- Realizar operaciones de datos en Azure Logic Apps
- Lenguaje de plantilla de código abierto de Liquid
- Consumo frente a aplicaciones lógicas estándar
- Operaciones integradas de negocio a negocio (B2B)
- Acerca de los conectores integrados en Azure Logic Apps
- Acerca de los conectores administrados en Azure Logic Apps y conectores administrados para Azure Logic Apps
Requisitos previos
Una cuenta y una suscripción de Azure. Si aún no tiene una, regístrese para obtener una cuenta de Azure gratuita.
El recurso y el flujo de trabajo de la aplicación lógica. Las operaciones de Liquid no tienen ningún desencadenador disponible, por lo que el flujo de trabajo tiene que incluir como mínimo un desencadenador.
Si no tiene un recurso de aplicación lógica y un flujo de trabajo, créelos ahora siguiendo los pasos de la aplicación lógica que desee:
Un recurso de cuenta de integración. Normalmente, necesita este recurso cuando desea definir y almacenar artefactos para utilizarlos en flujos de trabajo de integración empresarial y B2B.
Importante
Para trabajar conjuntamente, tanto la cuenta de integración como el recurso de aplicación lógica deben existir en la misma suscripción y región de Azure.
Para un flujo de trabajo de aplicación lógica de consumo, su cuenta de integración requiere un vínculo a su recurso de aplicación lógica.
En el caso de un flujo de trabajo de aplicación lógica estándar, puede vincular su cuenta de integración al recurso de la aplicación lógica, subir mapas directamente al recurso de la aplicación lógica, o ambas cosas, en función de los escenarios siguientes:
Si ya tiene una cuenta de integración con los artefactos que necesita o quiere usar, puede vincular la cuenta de integración a varios recursos de aplicación lógica estándar en los que desee utilizar los artefactos. De este modo, no es necesario cargar mapas en cada aplicación lógica individual. Para más información, consulte el artículo sobre vinculación del recurso de aplicación lógica a la cuenta de integración.
El conector integrado de Liquid le permite seleccionar una asignación que haya cargado previamente en su recurso de aplicación lógica o en una cuenta de integración vinculada, pero no ambos. Puede usar luego estos artefactos en todos los flujos de trabajo secundarios dentro del mismo recurso de aplicación lógica.
Por lo tanto, si no tiene o no necesita una cuenta de integración, puede usar la opción de carga. De lo contrario, puede utilizar la opción de vinculación. En cualquier caso, puede usar estos artefactos en todos los flujos de trabajo secundarios dentro del mismo recurso de aplicación lógica.
Conocimientos básicos sobre el lenguaje de plantilla de Liquid. Azure Logic Apps usa DotLiquid 2.0.361.
Nota:
La acción de Liquid denominada Transformar de JSON a JSON sigue a la implementación DotLiquid para Liquid, que, en determinados casos, difiere de la implementación Shopify para Liquid. Para más información, consulte Consideraciones sobre las plantillas de Liquid.
Instale o use una herramienta que pueda enviar solicitudes HTTP para probar la solución, por ejemplo:
- Visual Studio Code con una extensión de Visual Studio Marketplace
- Invoke-RestMethod de PowerShell
- Microsoft Edge: herramienta de consola de red
- Bruno
- curl
Precaución
En escenarios en los que tiene datos confidenciales, como credenciales, secretos, tokens de acceso, claves de API y otra información similar, asegúrese de usar una herramienta que proteja los datos con las características de seguridad necesarias. La herramienta debe funcionar sin conexión o localmente y no requerir el inicio de sesión en una cuenta en línea o sincronizar datos en la nube. Cuando se usa una herramienta con estas características, se reduce el riesgo de exponer datos confidenciales al público.
Paso 1: Crear la plantilla
Antes de poder realizar una transformación de Liquid en el flujo de trabajo de aplicación lógica, primero debe crear una plantilla de Liquid que defina la asignación que quiere.
Cree la plantilla de Liquid que va a usar como asignación de la transformación JSON. Puede usar la herramienta de edición que prefiera.
En el ejemplo de transformación JSON a JSON de este artículo se usa la siguiente plantilla liquid de ejemplo:
{%- assign deviceList = content.devices | Split: ', ' -%} { "fullName": "{{content.firstName | Append: ' ' | Append: content.lastName}}", "firstNameUpperCase": "{{content.firstName | Upcase}}", "phoneAreaCode": "{{content.phone | Slice: 1, 3}}", "devices" : [ {%- for device in deviceList -%} {%- if forloop.Last == true -%} "{{device}}" {%- else -%} "{{device}}", {%- endif -%} {%- endfor -%} ] }Guarde la plantilla con la extensión de archivo Liquid template (.liquid). Este ejemplo se denomina SimpleJsonToJsonTemplate.liquid.
Paso 2: Cargar plantilla Liquid
Después de crear la plantilla de Liquid, ahora tiene que cargarla en función del escenario siguiente:
Si está trabajando en un flujo de trabajo de aplicación lógica de consumo, cargue la plantilla en la cuenta de integración.
Si está trabajando en un flujo de trabajo de aplicación lógica estándar, puede cargar la plantilla en la cuenta de integración o cargar la plantilla en el recurso de aplicación lógica.
Carga de plantilla en la cuenta de integración
En Azure Portal, inicie sesión con las credenciales de su cuenta de Azure.
En el cuadro de búsqueda de Azure Portal, escriba cuentas de integración y seleccione Cuentas de integración.
Busque y seleccione su cuenta de integración.
En el menú de navegación de la cuenta de integración, en Configuración, seleccione Asignaciones.
En el panel Asignaciones, seleccione Agregar. Especifique la siguiente información acerca de la asignación:
Propiedad Valor Descripción Nombre JsonToJsonTemplate El nombre de tu mapa, que es JsonToJsonTemplate en este ejemplo Tipo de asignación Líquido Tipo de la asignación. Para la transformación de JSON a JSON, debe seleccionar Liquid. Map SimpleJsonToJsonTemplate.liquid Una plantilla de Liquid existente o un archivo de asignación a utilizar para la transformación, que es SimpleJsonToJsonTemplate.liquid en este ejemplo. Puede usar el selector de archivos para buscar el archivo. Para conocer los límites de tamaño de las asignaciones, consulte Límites y configuración.
Carga de una plantilla en la aplicación lógica estándar
En el portal de Azure, abra el recurso de aplicación lógica estándar. Asegúrese de estar en el nivel de recurso, no en el nivel de flujo de trabajo.
En el menú de la barra lateral del recurso, en Artefactos, seleccione Mapas.
En la barra de herramientas del panel Asignaciones, seleccione Agregar.
En el panel Agregar mapa , arrastre y coloque el archivo en el cuadro de carga o seleccione Examinar archivos.
Cuando el archivo de asignación termine de cargarse, la asignación aparecerá en la lista de asignaciones. En la página Información general de la cuenta de integración, en Artefactos, también aparece la asignación cargada.
Paso 3: Agregar la acción de transformación de Liquid
En los pasos siguientes se muestra cómo agregar una acción de transformación de Liquid para flujos de trabajo de aplicación lógica estándar y de consumo.
En Azure Portal, abra el recurso de la aplicación lógica de consumo.
En el menú de la barra lateral del recurso, en Herramientas de desarrollo, seleccione el diseñador para abrir el flujo de trabajo.
Si el flujo de trabajo no tiene ningún desencadenador ni ninguna otra acción que necesite, agregue primero estas operaciones. Las operaciones de Liquid no tienen ningún desencadenador disponible.
En este ejemplo, se continúa con el desencadenador de solicitud, denominado Cuando se recibe una solicitud HTTP.
En el desencadenador, seleccione Agregar una acción. En el cuadro de búsqueda, escriba liquid.
En la lista de acciones, seleccione la acción Liquid que desea usar.
Este ejemplo continúa con la acción denominada Transformar de JSON a JSON.
En la propiedad Content de la acción, proporcione la salida JSON del desencadenador o una acción anterior que quiera transformar siguiendo estos pasos.
Seleccione dentro del cuadro Contenido , que muestra las opciones para abrir la lista de contenido dinámico (icono de rayo) o el editor de expresiones (icono de función). Seleccione el icono del rayo para abrir la lista de contenido dinámico.
En la lista de contenido dinámico, seleccione los datos JSON que desee transformar.
En este ejemplo, en la lista de contenido dinámico, en Cuando se recibe una solicitud HTTP, seleccione el token Cuerpo que representa la salida del contenido del cuerpo del desencadenador.
En la lista Asignación, seleccione la plantilla de Liquid.
Este ejemplo continúa con la plantilla denominada JsonToJsonTemplate.
Nota:
Si la lista de mapas está vacía, es posible que el recurso de tu aplicación lógica no esté vinculado a la cuenta de integración, o que tu cuenta de integración no contenga ningún archivo de mapas.
Guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
Pruebe el flujo de trabajo
Para desencadenar el flujo de trabajo, siga estos pasos:
En el desencadenador Solicitud , busque la propiedad DIRECCIÓN URL HTTP y copie la dirección URL.
Abra la herramienta de solicitud HTTP y use sus instrucciones para enviar una solicitud HTTP a la dirección URL copiada, incluyendo el método que espera el desencadenador Solicitud.
En este ejemplo, se usa el método
POSTcon la dirección URL.Incluya la entrada JSON que se va a transformar, por ejemplo:
{ "devices": "Surface, Mobile, Desktop computer, Monitors", "firstName": "Dean", "lastName": "Ledet", "phone": "(111)0001111" }Cuando el flujo de trabajo termine de ejecutarse, vaya al historial de ejecución del flujo de trabajo y examine las entradas y salidas de la acción Transformar de JSON a JSON, por ejemplo:
Otras transformaciones de Liquid
Puede usar Liquid para realizar otras transformaciones, por ejemplo,
Transformación de JSON en texto
En la plantilla de Liquid siguiente se muestra una transformación de ejemplo para JSON a texto:
{{content.firstName | Append: ' ' | Append: content.lastName}}
En el ejemplo siguiente se muestran las entradas y salidas de ejemplo:
Transformación XML a JSON
En la plantilla de Liquid siguiente se muestra una transformación de ejemplo para XML a JSON:
[{% JSONArrayFor item in content -%}
{{item}}
{% endJSONArrayFor -%}]
El bucle JSONArrayFor es un mecanismo de bucle personalizado para la entrada XML, de forma que puede crear cargas JSON que eviten una coma final. Además, la condición where de este mecanismo de bucle personalizado utiliza el nombre del elemento XML para la comparación, en lugar del valor del elemento como sucede con otros filtros Liquid. Para más información, consulte Profundización en la directiva set-body: colecciones de cosas.
En el ejemplo siguiente se muestran las entradas y salidas de ejemplo:
Transformación XML a texto
En la plantilla de Liquid siguiente se muestra una transformación de ejemplo para XML a texto:
{{content.firstName | Append: ' ' | Append: content.lastName}}
En el ejemplo siguiente se muestran las entradas y salidas de ejemplo:
Consideraciones sobre las plantillas de Liquid
Las plantillas de Liquid siguen los límites de tamaño de archivo de las asignaciones de Azure Logic Apps.
La acción Transformar de JSON a JSON sigue a la implementación DotLiquid para Liquid. Esta implementación es un puerto a .NET Framework desde la implementación Shopify para Liquid y varía en casos concretos.
La lista siguiente describe las diferencias conocidas:
La acción Transformar de JSON a JSON genera de forma nativa una cadena que puede incluir JSON, XML, HTML, etc. La acción de Liquid solo indica que la salida de texto esperada de la plantilla de Liquid es una cadena JSON. La acción indica a la aplicación lógica que analice la entrada como un objeto JSON y que aplique un contenedor para que Liquid pueda interpretar la estructura JSON. Después de la transformación, la acción indica a la aplicación lógica que analice la salida de texto de Liquid a JSON.
DotLiquid no comprende JSON de forma nativa, por lo que debe asegurarse de escapar el carácter de barra diagonal inversa (
\) y cualquier otro carácter JSON reservado.Si la plantilla usa filtros de Liquid, asegúrese de seguir las convenciones de nomenclatura de DotLiquid y C#, que usan mayúscula al principio de la oración. En todas las transformaciones Liquid, asegúrese de que los nombres de los filtros de la plantilla también usen mayúscula al principio. De lo contrario, los filtros no funcionan.
Por ejemplo, al usar el filtro
replace, useReplace, noreplace. La misma regla se aplica si se prueban ejemplos en DotLiquid online. Para más información, consulte Filtros de Liquid para Shopify y Filtros de Liquid para DotLiquid. La especificación Shopify incluye ejemplos para cada filtro, por lo que, para realizar comparaciones, puede probar estos ejemplos en Probar DotLiquid en línea.Actualmente, el filtro
jsonde los filtros de extensión Shopify no está implementado en DotLiquid. Normalmente, este filtro se usaría para preparar la salida de texto para el análisis de cadenas JSON; en cambio, debe usar el filtroReplace.El filtro
Replaceestándar de la implementación DotLiquid usa la coincidencia de expresiones regulares (RegEx), mientras que la implementación Shopify usa la coincidencia de cadenas simples. Ambas implementaciones parecen funcionar de la misma manera hasta que se usa un carácter reservado de RegEx o un carácter de escape en el parámetro match.Por ejemplo, para escapar el carácter de escape reservado de barra diagonal inversa de RegEx (
\), use| Replace: '\\', '\\'y no| Replace: '\', '\\'. En estos ejemplos se muestra que el filtroReplacese comporta de forma diferente cuando se intenta escapar el carácter de barra diagonal inversa. Aunque esta versión funciona correctamente:{ "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\\', '\\' | Replace: '"', '\"'}}"}Con este resultado:
{ "SampleText": "The quick brown fox \"jumped\" over the sleeping dog\\\\"}Esta versión no funciona bien:
{ "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\', '\\' | Replace: '"', '\"'}}"}Con este error:
{ "SampleText": "Liquid error: parsing "\" - Illegal \ at end of pattern."}Para más información, consulte El filtro estándar Replace usa la coincidencia de patrones de RegEx....
El filtro
Sortde la implementación DotLiquid ordena los elementos de una matriz o colección por propiedad, pero con estas diferencias:Sigue el comportamiento sort_natural de Shopify, no el comportamiento de ordenación de Shopify.
Solo ordena en orden alfanumérico de cadena. Para más información, consulte Ordenación numérica.
Usa el orden distinguir mayúsculas de minúsculas, no el orden que no realiza esta distinción. Para más información, consulte El filtro Sort no sigue el comportamiento de mayúsculas/minúsculas de la especificación de Shopify.