Criar, editar ou expandir JSON para definições de fluxo de aplicações lógicas no Azure Logic Apps
Aplica-se a: Aplicativos Lógicos do Azure (Consumo)
Quando você cria soluções de integração empresarial com fluxos de trabalho automatizados nos Aplicativos Lógicos do Azure, as definições de fluxo de trabalho subjacentes usam JSON (JavaScript Object Notation) simples e declarativa, juntamente com o esquema WDL (Workflow Definition Language) para sua descrição e validação. Esses formatos tornam as definições de fluxo de trabalho mais fáceis de ler e entender sem saber muito sobre código. Quando quiser automatizar a criação e a implantação de recursos lógicos do aplicativo, você pode incluir definições de fluxo de trabalho como recursos do Azure dentro dos modelos do Azure Resource Manager. Para criar, gerenciar e implantar aplicativos lógicos, você pode usar o Azure PowerShell, a CLI do Azure ou as APIs REST dos Aplicativos Lógicos do Azure.
Para trabalhar com definições de fluxo de trabalho em JSON, abra o editor de exibição de código quando trabalhar no portal do Azure ou no Visual Studio Code. Você também pode copiar e colar a definição em qualquer editor que desejar.
Nota
Alguns recursos dos Aplicativos Lógicos do Azure, como a definição de parâmetros e vários gatilhos em definições de fluxo de trabalho, estão disponíveis apenas em JSON, não no designer de fluxo de trabalho. Então, para essas tarefas, você deve trabalhar em visualização de código ou outro editor.
Editar JSON - Portal do Azure
Na caixa de pesquisa do portal do Azure, insira e selecione aplicativos lógicos. Na página Aplicativos lógicos, selecione o recurso do aplicativo lógico de consumo desejado.
No menu do aplicativo lógico, em Ferramentas de Desenvolvimento, selecione Visualização de código do aplicativo lógico.
O editor de visualização de código é aberto e mostra a definição de fluxo de trabalho do seu aplicativo lógico no formato JSON.
Editar JSON - Visual Studio Code
Consulte Editar aplicativo lógico implantado no Visual Studio Code
Editar JSON - Visual Studio
Importante
A extensão Ferramentas de Aplicativos Lógicos do Azure para Visual Studio foi preterida e não recebe mais atualizações. Para criar e gerenciar fluxos de trabalho de aplicativos lógicos usando um ambiente de desenvolvimento local, consulte a seguinte documentação:
Antes de trabalhar em uma definição de fluxo de trabalho de consumo no Visual Studio, certifique-se de ter instalado as ferramentas necessárias. No Visual Studio, você pode abrir aplicativos lógicos que foram criados e implantados diretamente do portal do Azure ou como projetos do Azure Resource Manager do Visual Studio.
Abra a solução do Visual Studio, ou o projeto do Grupo de Recursos do Azure, que contém seu aplicativo lógico.
Localize e abra sua definição de fluxo de trabalho, que, por padrão, aparece em um modelo do Gerenciador de Recursos, chamado LogicApp.json.
Você pode usar e personalizar esse modelo para implantação em diferentes ambientes.
Abra o menu de atalho para a definição e o modelo do fluxo de trabalho. Selecione Abrir com o Estruturador da Aplicação Lógica.
Gorjeta
Se você não tiver esse comando no Visual Studio 2019, verifique se você tem as atualizações mais recentes para o Visual Studio.
Na parte inferior do designer de fluxo de trabalho, escolha Visualização de código.
O editor de visualização de código é aberto e mostra a definição do fluxo de trabalho no formato JSON.
Para retornar à visualização do designer, na parte inferior do editor de visualização de código, escolha Design.
Parâmetros
O ciclo de vida da implantação geralmente tem ambientes diferentes para desenvolvimento, teste, preparação e produção. Quando você tiver valores que deseja reutilizar em todo o seu aplicativo lógico sem codificação rígida ou que variam com base em suas necessidades de implantação, você pode criar um modelo do Azure Resource Manager para sua definição de fluxo de trabalho para que também possa automatizar a implantação do aplicativo lógico.
Siga estas etapas gerais para parametrizar ou definir e usar parâmetros para esses valores. Em seguida, você pode fornecer os valores em um arquivo de parâmetro separado que passa esses valores para seu modelo. Dessa forma, você pode alterar esses valores mais facilmente sem ter que atualizar e reimplantar seu aplicativo lógico. Para obter detalhes completos, consulte Visão geral: automatizar a implantação de aplicativos lógicos com modelos do Azure Resource Manager.
Em seu modelo, defina parâmetros de modelo e parâmetros de definição de fluxo de trabalho para aceitar os valores a serem usados na implantação e no tempo de execução, respectivamente.
Os parâmetros do modelo são definidos em uma seção de parâmetros que está fora da sua definição de fluxo de trabalho, enquanto os parâmetros de definição do fluxo de trabalho são definidos em uma seção de parâmetros que está dentro da sua definição de fluxo de trabalho.
Substitua os valores codificados por expressões que façam referência a esses parâmetros. As expressões de modelo usam sintaxe diferente das expressões de definição de fluxo de trabalho.
Evite complicar seu código não usando expressões de modelo, que são avaliadas na implantação, dentro de expressões de definição de fluxo de trabalho, que são avaliadas em tempo de execução. Use apenas expressões de modelo fora da definição do fluxo de trabalho. Use apenas expressões de definição de fluxo de trabalho dentro de sua definição de fluxo de trabalho.
Ao especificar os valores para os parâmetros de definição do fluxo de trabalho, você pode fazer referência aos parâmetros do modelo usando a seção de parâmetros que está fora da definição do fluxo de trabalho, mas ainda dentro da definição de recurso para seu aplicativo lógico. Dessa forma, você pode passar valores de parâmetros de modelo para seus parâmetros de definição de fluxo de trabalho.
Armazene os valores para seus parâmetros em um arquivo de parâmetros separado e inclua esse arquivo com sua implantação.
Processar cadeias de caracteres com funções
Os Aplicativos Lógicos do Azure têm várias funções para trabalhar com cadeias de caracteres. Por exemplo, suponha que você queira passar o nome de uma empresa de um pedido para outro sistema. No entanto, você não tem certeza sobre o manuseio adequado para codificação de caracteres. Você pode executar a codificação base64 nessa cadeia de caracteres, mas para evitar escapes na URL, você pode substituir vários caracteres. Além disso, você só precisa de uma substring para o nome da empresa porque os cinco primeiros caracteres não são usados.
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"order": {
"defaultValue": {
"quantity": 10,
"id": "myorder1",
"companyName": "NAME=Contoso"
},
"type": "Object"
}
},
"triggers": {
"request": {
"type": "Request",
"kind": "Http"
}
},
"actions": {
"order": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
}
}
},
"outputs": {}
}
Estas etapas descrevem como este exemplo processa essa cadeia de caracteres, trabalhando de dentro para fora:
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
Obtenha o
length()
nome da empresa, para obter o número total de caracteres.Para obter uma string mais curta, subtraia 5.
Agora obtenha um
substring()
arquivo . Comece no índice5
e vá para o restante da cadeia de caracteres.Converta essa substring em uma
base64()
cadeia de caracteres.Agora
replace()
todos os+
personagens com-
personagens.Finalmente,
replace()
todos os/
personagens com_
personagens.
Mapeie itens de lista para valores de propriedade e, em seguida, use mapas como parâmetros
Para obter resultados diferentes com base no valor de uma propriedade, você pode criar um mapa que corresponda a cada valor de propriedade a um resultado e, em seguida, usar esse mapa como parâmetro.
Por exemplo, esse fluxo de trabalho define algumas categorias como parâmetros e um mapa que corresponde a essas categorias com uma URL específica. Primeiro, o fluxo de trabalho obtém uma lista de artigos. Em seguida, o fluxo de trabalho usa o mapa para encontrar o URL correspondente à categoria de cada artigo.
A
intersection()
função verifica se a categoria corresponde a uma categoria definida conhecida.Depois que o exemplo obtém uma categoria correspondente, o exemplo extrai o item do mapa usando colchetes:
parameters[...]
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"specialCategories": {
"defaultValue": [
"science",
"google",
"microsoft",
"robots",
"NSA"
],
"type": "Array"
},
"destinationMap": {
"defaultValue": {
"science": "https://www.nasa.gov",
"microsoft": "https://www.microsoft.com/en-us/default.aspx",
"google": "https://www.google.com",
"robots": "https://en.wikipedia.org/wiki/Robot",
"NSA": "https://www.nsa.gov/"
},
"type": "Object"
}
},
"triggers": {
"Request": {
"type": "Request",
"kind": "http"
}
},
"actions": {
"getArticles": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=https://feeds.wired.com/wired/index"
}
},
"forEachArticle": {
"type": "foreach",
"foreach": "@body('getArticles').responseData.feed.entries",
"actions": {
"ifGreater": {
"type": "if",
"expression": "@greater(length(intersection(item().categories, parameters('specialCategories'))), 0)",
"actions": {
"getSpecialPage": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "@parameters('destinationMap')[first(intersection(item().categories, parameters('specialCategories')))]"
}
}
}
}
},
"runAfter": {
"getArticles": [
"Succeeded"
]
}
}
}
}
Obter dados com funções Date
Para obter dados de uma fonte de dados que não oferece suporte nativo a gatilhos, você pode usar as funções Date para trabalhar com horas e datas. Por exemplo, esta expressão localiza quanto tempo as etapas desse fluxo de trabalho estão demorando, trabalhando de dentro para fora:
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
Da ação, extraia o
order
startTime
arquivo .Obtenha a hora atual com a
utcNow()
função.Subtraia um segundo:
addSeconds(..., -1)
Você pode usar outras unidades de tempo, como
minutes
ouhours
.Agora, você pode comparar esses dois valores.
Se o primeiro valor for menor que o segundo, mais de um segundo se passou desde que o pedido foi feito pela primeira vez.
Para formatar datas, você pode usar string formatters. Por exemplo, para obter o RFC1123, use utcnow('r')
. Saiba mais sobre formatação de data.
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"order": {
"defaultValue": {
"quantity": 10,
"id": "myorder-id"
},
"type": "Object"
}
},
"triggers": {
"Request": {
"type": "request",
"kind": "http"
}
},
"actions": {
"order": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?id=@{parameters('order').id}"
}
},
"ifTimingWarning": {
"type": "If",
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
"actions": {
"timingWarning": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?recordLongOrderTime=@{parameters('order').id}¤tTime=@{utcNow('r')}"
}
}
},
"runAfter": {
"order": [
"Succeeded"
]
}
}
},
"outputs": {}
}
Conteúdos relacionados
- Executar etapas com base em uma condição (instruções condicionais)
- Executar etapas com base em valores diferentes (instruções switch)
- Executar e repetir etapas (loops)
- Executar ou mesclar etapas paralelas (ramificações)
- Executar etapas com base no status da ação agrupada (escopos)
- Esquema de linguagem de definição de fluxo de trabalho para Aplicativos Lógicos do Azure
- Ações e gatilhos de fluxo de trabalho para Aplicativos Lógicos do Azure