Partilhar via


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.

    Se você não tiver um recurso de aplicativo lógico e fluxo de trabalho, crie-os agora seguindo as etapas para o aplicativo lógico desejado:

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

    • Para um fluxo de trabalho da aplicação lógica de Consumo, a sua conta de integração requer uma ligação ao recurso da aplicação lógica.

    • Para um fluxo de trabalho de aplicativo lógico padrão , você pode 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. A ferramenta deve funcionar offline ou localmente e não requer login em uma conta online ou sincronização de dados com a nuvem. Ao usar uma ferramenta com essas características, você reduz o risco de expor 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 é chamado 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 contas de integração introduzidas e contas de integração selecionadas.

  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 ecrã a mostrar o menu de navegação da conta de integração com a opção Mapas selecionada.

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

    Propriedade 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 ou arquivo de mapa existente 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 Adicionar Mapa com o novo modelo carregado.

Carregar modelo para o aplicativo lógico padrão

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

  2. No menu da barra lateral do recurso, em Artefatos, selecione Mapas.

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

  4. No painel Adicionar Mapa , arraste e solte o arquivo na caixa de upload ou selecione Procurar arquivos.

    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 Azure, abra o recurso da aplicação lógica de consumo.

  2. No menu da barra lateral de recursos, em Ferramentas de Desenvolvimento, selecione o designer para abrir seu fluxo de trabalho.

  3. 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 de pedido chamado Quando uma solicitação HTTP é recebida.

  4. No gatilho, selecione Adicionar uma ação. 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 ecrã mostrando o designer de fluxo de trabalho de 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. Selecione dentro da caixa Conteúdo , que mostra as opções para abrir a lista de conteúdo dinâmico (ícone de relâmpago) ou o editor de expressões (ícone de função). Selecione o ícone de relâmpago para abrir a lista de conteúdo dinâmico.

    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 Consumo, a propriedade Content da ação Liquid, uma lista de conteúdo dinâmico aberta e o token Body selecionado.

  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 Map da ação Liquid e o modelo selecionado.

    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.

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

      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: