Transforme JSON e XML usando modelos Liquid como mapas em fluxos de trabalho usando os Aplicativos Lógicos do Azure

Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)

Quando quiser executar transformações JSON básicas em seus fluxos de trabalho de aplicativo lógico, você pode usar operações de dados internas, como a ação Compor ou a ação Analisar JSON. No entanto, alguns cenários podem exigir transformações avançadas e complexas que incluem elementos como iterações, fluxos de controle e variáveis. Para transformações entre JSON para JSON, JSON para texto, XML para JSON ou XML para texto, você pode criar um modelo que descreva o mapeamento ou a transformação necessários usando a linguagem de modelo de código aberto Liquid. Você pode selecionar esse modelo ao adicionar uma ação interna do Liquid ao seu fluxo de trabalho. Você pode usar ações líquidas em fluxos de trabalho de aplicativo lógico de consumo multilocatário e fluxos de trabalho de aplicativo lógico padrão de locatário único.

Embora nenhum gatilho Liquid esteja disponível, você pode usar qualquer gatilho ou ação para alimentar o conteúdo JSON ou XML de origem em seu fluxo de trabalho. Por exemplo, você pode usar um gatilho de conector interno, um gatilho de conector gerenciado ou hospedado no Azure disponível para Aplicativos Lógicos do Azure ou até mesmo outro aplicativo.

Este artigo mostra como concluir as seguintes tarefas:

  • Crie um modelo Líquido.
  • Carregue o modelo para sua conta de integração para fluxos de trabalho do aplicativo lógico de consumo ou para o recurso do aplicativo lógico padrão para uso em qualquer fluxo de trabalho filho.
  • Adicione uma ação Liquid ao seu fluxo de trabalho.
  • Selecione o modelo como o mapa que você deseja usar.

Para obter mais informações, consulte a seguinte documentação:

Pré-requisitos

  • Uma conta e subscrição do Azure. Se não tiver uma subscrição, inscreva-se numa conta do Azure gratuita.

  • Seu recurso e fluxo de trabalho do aplicativo lógico. As operações líquidas não têm gatilhos disponíveis, portanto, seu fluxo de trabalho deve incluir minimamente um gatilho. Para mais informações, consulte a seguinte documentação:

  • Com base no fato de você estar trabalhando em um fluxo de trabalho de aplicativo lógico Consumo ou Padrão, você precisará de um recurso de conta de integração. Normalmente, você precisa desse recurso quando deseja definir e armazenar artefatos para uso em integração empresarial e fluxos de trabalho B2B.

    Importante

    Para trabalhar em conjunto, sua conta de integração e o recurso do aplicativo lógico devem existir na mesma assinatura do Azure e na mesma região do Azure.

    • Se você estiver trabalhando em um fluxo de trabalho de aplicativo lógico de consumo, sua conta de integração exigirá um link para o recurso do aplicativo lógico.

    • Se você estiver trabalhando em um fluxo de trabalho de aplicativo lógico padrão, poderá vincular sua conta de integração ao recurso do aplicativo lógico, carregar mapas diretamente para o recurso do aplicativo lógico ou ambos, com base nos seguintes cenários:

      • Se você já tiver uma conta de integração com os artefatos que precisa ou deseja usar, poderá vincular a conta de integração a vários recursos do aplicativo lógico padrão onde deseja usar os artefatos. Dessa forma, você não precisa carregar mapas para cada aplicativo lógico individual. Para obter mais informações, consulte Vincular seu recurso de aplicativo lógico à sua conta de integração.

      • O conector integrado Liquid permite selecionar um mapa que você carregou anteriormente para o recurso do aplicativo lógico ou para uma conta de integração vinculada, mas não ambos. Em seguida, você pode usar esses artefatos em todos os fluxos de trabalho filho dentro do mesmo recurso de aplicativo lógico.

      Então, se você não tem ou precisa de uma conta de integração, você pode usar a opção de upload. Caso contrário, você pode usar a opção de vinculação. De qualquer forma, você pode usar esses artefatos em todos os fluxos de trabalho filho dentro do mesmo recurso de aplicativo lógico.

  • Conhecimento básico sobre a linguagem de template Liquid. Os Aplicativos Lógicos do Azure usam o DotLiquid 2.0.361.

    Nota

    A ação Liquid chamada Transform JSON to JSON segue a implementação DotLiquid para Liquid, que difere em casos específicos da implementação Shopify para Liquid. Para obter mais informações, consulte Considerações sobre o modelo líquido.

  • Instale ou use uma ferramenta que possa enviar solicitações HTTP para testar sua solução, por exemplo:

    Atenção

    Para cenários em que você tem dados confidenciais, como credenciais, segredos, tokens de acesso, chaves de API e outras informações semelhantes, certifique-se de usar uma ferramenta que proteja seus dados com os recursos de segurança necessários, funcione offline ou localmente, não sincronize seus dados com a nuvem e não exija que você entre em uma conta online. Dessa forma, você reduz o risco de exposição de dados confidenciais ao público.

Etapa 1: Criar o modelo

Antes de executar uma transformação Liquid no fluxo de trabalho do aplicativo lógico, você deve primeiro criar um modelo Liquid que defina o mapeamento desejado.

  1. Crie o modelo Liquid que você usa como um mapa para a transformação JSON. Você pode usar qualquer ferramenta de edição que desejar.

    O exemplo de transformação JSON para JSON neste artigo usa o seguinte modelo Liquid de exemplo:

    {%- 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 -%}
       ]
    }
    
  2. Salve o modelo usando a extensão de arquivo Liquid template (.liquid). Este exemplo usa SimpleJsonToJsonTemplate.liquid.

Passo 2: Carregar o modelo Liquid

Depois de criar seu modelo Liquid, agora você precisa carregar o modelo com base no seguinte cenário:

Carregar modelo para a conta de integração

  1. No portal do Azure, entre com suas credenciais de conta do Azure.

  2. Na caixa de pesquisa do portal do Azure, insira contas de integração e selecione Contas de integração.

    Captura de ecrã a mostrar a caixa de pesquisa do portal do Azure com

  3. Encontre e selecione sua conta de integração.

    Captura de tela mostrando o painel de contas de integração com a conta de integração selecionada.

  4. No menu de navegação da conta de integração, em Configurações, selecione Mapas.

    Captura de tela mostrando o menu de navegação da conta de integração com

  5. No painel Mapas, selecione Adicionar. Forneça as seguintes informações sobre o seu mapa:

    Property valor Descrição
    Nome JsonToJsonTemplate O nome do seu mapa, que é "JsonToJsonTemplate" neste exemplo
    Tipo de mapa Líquido O tipo para o seu mapa. Para a transformação JSON para JSON, você deve selecionar Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Um modelo Liquid existente ou arquivo de mapa para usar para transformação, que é "SimpleJsonToJsonTemplate.liquid" neste exemplo. Para encontrar esse arquivo, você pode usar o seletor de arquivos. Para limites de tamanho do mapa, consulte Limites e configuração.

    Captura de ecrã a mostrar o painel

Carregar modelo para o aplicativo lógico padrão

  1. No portal do Azure, localize e abra seu recurso de aplicativo lógico. Certifique-se de que você está no nível de recursos, não no nível do fluxo de trabalho.

  2. No menu de navegação do recurso do aplicativo lógico, em Artefatos, selecione Mapas.

  3. Na barra de ferramentas do painel Mapas, selecione Adicionar.

  4. No painel Adicionar Mapa, forneça as seguintes informações sobre seu modelo:

    Property valor Descrição
    Nome JsonToJsonTemplate O nome do seu mapa, que é "JsonToJsonTemplate" neste exemplo
    Tipo de mapa Líquido O tipo para o seu mapa. Para a transformação JSON para JSON, você deve selecionar Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Um modelo Liquid existente ou arquivo de mapa para usar para transformação, que é "SimpleJsonToJsonTemplate.liquid" neste exemplo. Para encontrar esse arquivo, você pode usar o seletor de arquivos. Para limites de tamanho do mapa, consulte Limites e configuração.
  5. Quando tiver terminado, selecione OK.

    Depois que o upload do arquivo de mapa terminar, o mapa aparecerá na lista Mapas . Na página Visão geral da sua conta de integração, em Artefatos, o mapa carregado também aparece.

Etapa 3: Adicionar a ação de transformação de líquido

As etapas a seguir mostram como adicionar uma ação de transformação Liquid para fluxos de trabalho do aplicativo lógico Consumo e Padrão.

  1. No portal do Azure, abra o fluxo de trabalho do aplicativo lógico no designer, se ainda não estiver aberto.

  2. Se o fluxo de trabalho não tiver um gatilho ou quaisquer outras ações necessárias, adicione essas operações primeiro. As operações líquidas não têm gatilhos disponíveis.

    Este exemplo continua com o gatilho Request chamado When a HTTP request is received.

  3. No designer de fluxo de trabalho, na etapa em que você deseja adicionar a ação Líquido, selecione Nova etapa.

  4. Na caixa de pesquisa Escolha uma operação, selecione Todos. Na caixa de pesquisa, digite liquid.

  5. Na lista de ações, selecione a ação Líquido que deseja usar.

    Este exemplo continua usando a ação chamada Transformar JSON em JSON.

    Captura de tela mostrando o designer de fluxo de trabalho Consumo com uma ação Líquido selecionada.

  6. Na propriedade Content da ação, forneça a saída JSON do gatilho ou de uma ação anterior que você deseja transformar seguindo estas etapas.

    1. Clique dentro da caixa Conteúdo para que a lista de conteúdo dinâmico seja exibida.

    2. Na lista de conteúdo dinâmico, selecione os dados JSON que você deseja transformar.

      Neste exemplo, na lista de conteúdo dinâmico, em Quando uma solicitação HTTP for recebida, selecione o token Body , que representa a saída de conteúdo do corpo do gatilho.

      Captura de tela mostrando o fluxo de trabalho de consumo, a propriedade

  7. Na lista Mapa, selecione seu modelo Líquido.

    Este exemplo continua com o modelo chamado JsonToJsonTemplate.

    Captura de tela mostrando o fluxo de trabalho Consumo, a propriedade

    Nota

    Se a lista de mapas estiver vazia, o recurso do aplicativo lógico não está vinculado à sua conta de integração ou a conta de integração não contém nenhum arquivo de mapa.

    Quando terminar, a ação será semelhante ao exemplo a seguir:

    Captura de tela mostrando o fluxo de trabalho de Consumo com a ação

  8. Salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

Testar o fluxo de trabalho

Para acionar seu fluxo de trabalho, siga estas etapas:

  1. No gatilho Request , localize a propriedade HTTP POST URL e copie a URL.

  2. Abra sua ferramenta de solicitação HTTP e use suas instruções para enviar uma solicitação HTTP para a URL copiada, incluindo o método esperado pelo gatilho de solicitação .

    Este exemplo usa o POST método com a URL.

  3. Inclua a entrada JSON para transformar, por exemplo:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  4. Depois que o fluxo de trabalho terminar a execução, vá para o histórico de execução do fluxo de trabalho e examine as entradas e saídas da ação Transformar JSON em JSON , por exemplo:

    Captura de tela mostrando a saída de exemplo.

Outras transformações líquidas

Você pode usar o Liquid para executar outras transformações, por exemplo:

Transformar JSON em texto

O modelo Liquid a seguir mostra um exemplo de transformação de JSON em texto:

{{content.firstName | Append: ' ' | Append: content.lastName}}

O exemplo a seguir mostra as entradas e saídas de exemplo:

Captura de tela mostrando exemplo de saída para transformação JSON em texto.

Transformar XML em JSON

O modelo Liquid a seguir mostra um exemplo de transformação de XML para JSON:

[{% JSONArrayFor item in content -%}
      {{item}}
  {% endJSONArrayFor -%}]

O JSONArrayFor loop é um mecanismo de looping personalizado para entrada XML para que você possa criar cargas úteis JSON que evitem uma vírgula à direita. Além disso, a where condição para esse mecanismo de looping personalizado usa o nome do elemento XML para comparação, em vez do valor do elemento como outros filtros Liquid. Para obter mais informações, consulte Deep Dive on set-body Policy - Collections of Things.

O exemplo a seguir mostra as entradas e saídas de exemplo:

Captura de tela mostrando a saída de exemplo para transformação XML para JSON.

Transformar XML em texto

O modelo Liquid a seguir mostra um exemplo de transformação de XML em texto:

{{content.firstName | Append: ' ' | Append: content.lastName}}

O exemplo a seguir mostra as entradas e saídas de exemplo:

Captura de tela mostrando exemplo de saída para transformação de XML em texto.

Considerações sobre modelos líquidos

  • Os modelos líquidos seguem os limites de tamanho de arquivo para mapas nos Aplicativos Lógicos do Azure.

  • A ação Transformar JSON em JSON segue a implementação DotLiquid para Liquid. Essa implementação é uma porta para o .NET Framework da implementação do Shopify para Liquid e difere em casos específicos.

    A lista a seguir descreve as diferenças conhecidas:

    • A ação Transformar JSON em JSON gera nativamente uma cadeia de caracteres, que pode incluir JSON, XML, HTML e assim por diante. A ação Liquid indica apenas que a saída de texto esperada do modelo Liquid é uma cadeia de caracteres JSON. A ação instrui seu aplicativo lógico a analisar a entrada como um objeto JSON e aplica um wrapper para que o Liquid possa interpretar a estrutura JSON. Após a transformação, a ação instrui seu aplicativo lógico a analisar a saída de texto do Liquid de volta para JSON.

      O DotLiquid não entende JSON nativamente, portanto, certifique-se de escapar do caractere de barra invertida (\) e de quaisquer outros caracteres JSON reservados.

    • Se o seu modelo usa filtros Líquidos, certifique-se de seguir as convenções de nomenclatura DotLiquid e C#, que usam caixa de frase. Para todas as transformações de líquido, certifique-se de que os nomes dos filtros em seu modelo também usem caixa de frase. Caso contrário, os filtros não funcionarão.

      Por exemplo, quando você usa o replace filtro, use Replace, não replace. A mesma regra se aplica se você experimentar exemplos no DotLiquid online. Para obter mais informações, consulte Shopify Liquid filters e DotLiquid Liquid filters. A especificação do Shopify inclui exemplos para cada filtro, portanto, para comparação, você pode tentar esses exemplos em DotLiquid - Try online.

    • O json filtro dos filtros de extensão da Shopify não está atualmente implementado no DotLiquid. Normalmente, você pode usar esse filtro para preparar a saída de texto para a análise de cadeia de caracteres JSON, mas, em vez disso, você precisa usar o Replace filtro.

    • O filtro padrão Replace na implementação DotLiquid usa correspondência de expressão regular (RegEx), enquanto a implementação do Shopify usa correspondência de cadeia de caracteres simples. Ambas as implementações parecem funcionar da mesma maneira até que você use um caractere reservado RegEx ou um caractere de escape no parâmetro match.

      Por exemplo, para escapar do caractere de escape de barra invertida (\) reservado ao RegEx, use | Replace: '\\', '\\', e não | Replace: '\', '\\'. Estes exemplos mostram como o Replace filtro se comporta de forma diferente quando você tenta escapar do caractere de barra invertida. Embora esta versão funcione com sucesso:

      { "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\\', '\\' | Replace: '"', '\"'}}"}

      Com este resultado:

      { "SampleText": "The quick brown fox \"jumped\" over the sleeping dog\\\\"}

      Esta versão falha:

      { "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\', '\\' | Replace: '"', '\"'}}"}

      Com este erro:

      { "SampleText": "Liquid error: parsing "\" - Illegal \ at end of pattern."}

      Para obter mais informações, consulte Substituir filtro padrão usa correspondência de padrão RegEx....

    • O Sort filtro na implementação DotLiquid classifica os itens em uma matriz ou coleção por propriedade, mas com estas diferenças:

Próximos passos