Guia de referência de esquema para a Linguagem de Definição de Fluxo de Trabalho nos Aplicativos Lógicos do Azure
Quando você cria um aplicativo lógico nos Aplicativos Lógicos do Azure, seu aplicativo lógico tem uma definição de fluxo de trabalho subjacente que descreve a lógica real que é executada em seu aplicativo lógico. Essa definição de fluxo de trabalho usa JSON e segue uma estrutura validada pelo esquema da Linguagem de Definição de Fluxo de Trabalho. Esta referência fornece uma visão geral sobre essa estrutura e como o esquema define atributos em sua definição de fluxo de trabalho.
Estrutura de definição do fluxo de trabalho
Uma definição de fluxo de trabalho sempre inclui um gatilho para instanciar seu aplicativo lógico, além de uma ou mais ações que são executadas após o disparo de gatilho.
Aqui está a estrutura de alto nível para uma definição de fluxo de trabalho:
"definition": {
"$schema": "<workflow-definition-language-schema-version>",
"actions": { "<workflow-action-definitions>" },
"contentVersion": "<workflow-definition-version-number>",
"outputs": { "<workflow-output-definitions>" },
"parameters": { "<workflow-parameter-definitions>" },
"staticResults": { "<static-results-definitions>" },
"triggers": { "<workflow-trigger-definitions>" }
}
Atributo | Necessário | Descrição |
---|---|---|
definition |
Sim | O elemento inicial para a definição do fluxo de trabalho |
$schema |
Somente ao fazer referência externa a uma definição de fluxo de trabalho | O local do arquivo de esquema JSON que descreve a versão da linguagem de definição de fluxo de trabalho, que você pode encontrar aqui: https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json |
actions |
Não | As definições para uma ou mais ações a serem executadas no tempo de execução do fluxo de trabalho. Para obter mais informações, consulte Gatilhos e ações. Ações máximas: 250 |
contentVersion |
Não | O número da versão da definição do fluxo de trabalho, que é "1.0.0.0" por padrão. Para ajudar a identificar e confirmar a definição correta ao implantar um fluxo de trabalho, especifique um valor a ser usado. |
outputs |
Não | As definições para as saídas a serem retornadas de uma execução de fluxo de trabalho. Para obter mais informações, consulte Saídas. Saídas máximas: 10 |
parameters |
Não | As definições para um ou mais parâmetros que passam os valores a serem usados no tempo de execução do seu aplicativo lógico. Para obter mais informações, consulte Parâmetros. Parâmetros máximos: 50 |
staticResults |
Não | As definições para um ou mais resultados estáticos retornados por ações como saídas fictícias quando os resultados estáticos são habilitados nessas ações. Em cada definição de ação, o runtimeConfiguration.staticResult.name atributo faz referência à definição correspondente dentro de staticResults . Para obter mais informações, consulte Resultados estáticos. |
triggers |
Não | As definições para um ou mais gatilhos que instanciam seu fluxo de trabalho. Você pode definir mais de um gatilho, mas apenas com a Linguagem de Definição de Fluxo de Trabalho, não visualmente por meio do designer de fluxo de trabalho. Para obter mais informações, consulte Gatilhos e ações. Gatilhos máximos: 10 |
Acionadores e ações
Em uma definição de fluxo de trabalho, as triggers
seções e actions
definem as chamadas que acontecem durante a execução do fluxo de trabalho. Para obter sintaxe e mais informações sobre essas seções, consulte Acionadores e ações de fluxo de trabalho.
Parâmetros
O ciclo de vida da implantação geralmente tem ambientes diferentes para desenvolvimento, teste, preparação e produção. Ao implantar aplicativos lógicos em vários ambientes, você provavelmente deseja usar valores diferentes, como cadeias de conexão, com base em suas necessidades de implantação. Ou, você pode ter valores que deseja reutilizar em todo o seu aplicativo lógico sem hardcoding ou que mudam com frequência. Na seção de definição de parameters
fluxo de trabalho, você pode definir ou editar parâmetros para os valores que seu aplicativo lógico usa em tempo de execução. Você deve definir esses parâmetros primeiro antes de poder fazer referência a esses parâmetros em outro lugar na definição do fluxo de trabalho.
Aqui está a estrutura geral para uma definição de parâmetro:
"parameters": {
"<parameter-name>": {
"type": "<parameter-type>",
"defaultValue": <default-parameter-value>,
"allowedValues": [ <array-with-permitted-parameter-values> ],
"metadata": {
"description": "<parameter-description>"
}
}
},
Atributo | Necessário | Type | Description |
---|---|---|---|
<nome-parâmetro> | Sim | String | O nome do parâmetro que você deseja definir |
<tipo-parâmetro> | Sim | int, float, string, bool, matriz, objeto, securestring, secureobject Nota: Para todas as senhas, chaves e segredos, use os securestring tipos ou secureobject porque a GET operação não retorna esses tipos. Para obter mais informações sobre como proteger parâmetros, consulte Recomendações de segurança para parâmetros de ação e entrada. |
O tipo para o parâmetro |
<default-parameter-value> | Sim | O mesmo que type |
O valor de parâmetro padrão a ser usado se nenhum valor for especificado quando o fluxo de trabalho for instanciado. O defaultValue atributo é necessário para que o Logic App Designer possa mostrar corretamente o parâmetro, mas você pode especificar um valor vazio. |
<array-with-permitted-parameter-values> | Não | Matriz | Uma matriz com valores que o parâmetro pode aceitar |
<parâmetro-descrição> | Não | Objeto JSON | Quaisquer outros detalhes do parâmetro, como uma descrição para o parâmetro |
Em seguida, crie um modelo do Azure Resource Manager para sua definição de fluxo de trabalho, defina parâmetros de modelo que aceitem os valores desejados na implantação, substitua valores codificados por referências a parâmetros de definição de modelo ou fluxo de trabalho, conforme apropriado, e armazene os valores a serem usados na implantação em um arquivo de parâmetro separado. Dessa forma, você pode alterar esses valores mais facilmente por meio do arquivo de parâmetros sem precisar atualizar e reimplantar seu aplicativo lógico. Para obter informações confidenciais ou que devem ser protegidas, como nomes de usuário, senhas e segredos, você pode armazenar esses valores no Cofre de Chaves do Azure e fazer com que seu arquivo de parâmetros recupere esses valores do cofre de chaves. Para obter mais informações e exemplos sobre como definir parâmetros nos níveis de definição de modelo e fluxo de trabalho, consulte Visão geral: automatizar a implantação de aplicativos lógicos com modelos do Azure Resource Manager.
Resultados estáticos
No atributo, defina o staticResults
simulado outputs
de uma ação e status
que a ação retorne quando a configuração de resultado estático da ação estiver ativada. Na definição da ação, o runtimeConfiguration.staticResult.name
atributo faz referência ao nome da definição de resultado estático dentro do staticResults
. Saiba como você pode testar fluxos de trabalho de aplicativos lógicos com dados fictícios configurando resultados estáticos.
"definition": {
"$schema": "<...>",
"actions": { "<...>" },
"contentVersion": "<...>",
"outputs": { "<...>" },
"parameters": { "<...>" },
"staticResults": {
"<static-result-definition-name>": {
"outputs": {
<output-attributes-and-values-returned>,
"headers": { <header-values> },
"statusCode": "<status-code-returned>"
},
"status": "<action-status>"
}
},
"triggers": { "<...>" }
}
Atributo | Necessário | Type | Description |
---|---|---|---|
<static-result-definition-name> | Sim | String | O nome de uma definição de resultado estático que uma definição de ação pode referenciar por meio de um runtimeConfiguration.staticResult objeto. Para obter mais informações, consulte Definições de configuração de tempo de execução. Você pode usar qualquer nome exclusivo que desejar. Por padrão, esse nome exclusivo é acrescentado com um número, que é incrementado conforme necessário. |
<saída-atributos-e-valores-retornados> | Sim | Varia | Os requisitos para esses atributos variam com base em diferentes condições. Por exemplo, quando o status é Succeeded , o outputs atributo inclui atributos e valores retornados como saídas fictícias pela ação. Se for status Failed , o outputs atributo inclui o errors atributo, que é uma matriz com um ou mais objetos de erro message que têm informações de erro. |
<valores de cabeçalho> | Não | JSON | Quaisquer valores de cabeçalho retornados pela ação |
<status-código-retornado> | Sim | String | O código de status retornado pela ação |
<status da ação> | Sim | String | O status da ação, por exemplo, Succeeded ou Failed |
Por exemplo, nesta definição de ação HTTP, o runtimeConfiguration.staticResult.name
atributo faz referência HTTP0
dentro do staticResults
atributo onde as saídas fictícias para a ação são definidas. O runtimeConfiguration.staticResult.staticResultOptions
atributo especifica que a configuração de resultado estático está Enabled
na ação HTTP.
"actions": {
"HTTP": {
"inputs": {
"method": "GET",
"uri": "https://www.microsoft.com"
},
"runAfter": {},
"runtimeConfiguration": {
"staticResult": {
"name": "HTTP0",
"staticResultOptions": "Enabled"
}
},
"type": "Http"
}
},
A ação HTTP retorna as saídas na definição dentro do HTTP0
staticResults
. Neste exemplo, para o código de status, a saída simulada é OK
. Para valores de cabeçalho, a saída simulada é "Content-Type": "application/JSON"
. Para o status da ação, a saída simulada é Succeeded
.
"definition": {
"$schema": "<...>",
"actions": { "<...>" },
"contentVersion": "<...>",
"outputs": { "<...>" },
"parameters": { "<...>" },
"staticResults": {
"HTTP0": {
"outputs": {
"headers": {
"Content-Type": "application/JSON"
},
"statusCode": "OK"
},
"status": "Succeeded"
}
},
"triggers": { "<...>" }
},
Expressões
Com JSON, você pode ter valores literais que existem em tempo de design, por exemplo:
"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7
Você também pode ter valores que não existem até o tempo de execução. Para representar esses valores, você pode usar expressões, que são avaliadas em tempo de execução. Uma expressão é uma sequência que pode conter uma ou mais funções, operadores, variáveis, valores explícitos ou constantes. Em sua definição de fluxo de trabalho, você pode usar uma expressão em qualquer lugar em um valor de cadeia de caracteres JSON prefixando a expressão com o at-sign (@). Ao avaliar uma expressão que representa um valor JSON, o corpo da expressão é extraído removendo o caractere @ e sempre resulta em outro valor JSON.
Por exemplo, para a propriedade definida customerName
anteriormente, você pode obter o valor da propriedade usando a função parameters() em uma expressão e atribuir esse valor à accountName
propriedade:
"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"
A interpolação de cadeias de caracteres também permite que você use várias expressões dentro de cadeias de caracteres que são encapsuladas pelo caractere @ e chaves ({}). Aqui está a sintaxe:
@{ "<expression1>", "<expression2>" }
O resultado é sempre uma cadeia de caracteres, tornando esta capacidade semelhante à concat()
função, por exemplo:
"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"
Se você tiver uma cadeia de caracteres literal que comece com o caractere @, prefixe o caractere @ com outro caractere @ como um caractere de escape: @@
Estes exemplos mostram como as expressões são avaliadas:
Valor JSON | Result |
---|---|
"Sophia Owen" | Devolver estas personagens: 'Sophia Owen' |
"matriz[1]" | Retorne estes caracteres: 'array[1]' |
"@@" | Retorne esses caracteres como uma cadeia de caracteres de um caractere: '@' |
" @" | Retorne esses caracteres como uma cadeia de caracteres de dois caracteres: ' @' |
Para estes exemplos, suponha que você defina "myBirthMonth" igual a "January" e "myAge" igual ao número 42:
"myBirthMonth": "January",
"myAge": 42
Estes exemplos mostram como as seguintes expressões são avaliadas:
Expressão JSON | Result |
---|---|
"@parameters('meuMêsde Nascimento')" | Retornar esta cadeia de caracteres: "janeiro" |
"@{parameters('myBirthMonth')}" | Retornar esta cadeia de caracteres: "janeiro" |
"@parameters('myAge')" | Devolver este número: 42 |
"@{parameters('myAge')}" | Retorne este número como uma cadeia de caracteres: "42" |
"Minha idade é @{parameters('myAge')}" | Devolva esta string: "Minha idade é 42" |
"@concat('Minha idade é ', string(parameters('myAge'))" | Devolva esta string: "Minha idade é 42" |
"Minha idade é @@{parameters('myAge')}" | Retorne esta cadeia de caracteres, que inclui a expressão: "Minha idade é @{parameters('myAge')}' |
Ao trabalhar visualmente no designer de fluxo de trabalho, você pode criar expressões usando o editor de expressões, por exemplo:
Quando terminar, a expressão aparecerá para a propriedade correspondente em sua definição de fluxo de trabalho, por exemplo, a searchQuery
propriedade aqui:
"Search_tweets": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['x']['connectionId']"
}
}
},
"method": "get",
"path": "/searchtweets",
"queries": {
"maxResults": 20,
"searchQuery": "Azure @{concat('firstName','', 'LastName')}"
}
},
Saídas
Na seção , defina os dados que seu fluxo de trabalho pode retornar quando terminar a outputs
execução. Por exemplo, para controlar um status ou valor específico de cada execução, especifique que a saída do fluxo de trabalho retorna esses dados.
Nota
Ao responder a solicitações de entrada da API REST de um serviço, não use outputs
o . Em vez disso, use o Response
tipo de ação.
Para obter mais informações, consulte Acionadores e ações de fluxo de trabalho.
Aqui está a estrutura geral para uma definição de saída:
"outputs": {
"<key-name>": {
"type": "<key-type>",
"value": "<key-value>"
}
}
Atributo | Necessário | Type | Description |
---|---|---|---|
<nome-chave> | Sim | String | O nome da chave para o valor de retorno de saída |
<tipo-chave> | Sim | int, float, string, securestring, bool, array, objeto JSON | O tipo para o valor de retorno de saída |
<valor-chave> | Sim | O mesmo que <o tipo de chave> | O valor de retorno de saída |
Para obter a saída de uma execução de fluxo de trabalho, revise o histórico de execução e os detalhes do seu aplicativo lógico no portal do Azure ou use a API REST do Fluxo de Trabalho. Você também pode passar a saída para sistemas externos, por exemplo, o Power BI para que possa criar painéis.
Operadores
Em expressões e funções, os operadores executam tarefas específicas, como fazer referência a uma propriedade ou a um valor em uma matriz.
Operador | Task |
---|---|
' |
Para usar um literal de cadeia de caracteres como entrada ou em expressões e funções, envolva a cadeia de caracteres somente com aspas simples, por exemplo, '<myString>' . Não use aspas duplas ("" ), que entram em conflito com a formatação JSON em torno de uma expressão inteira. Por exemplo: Sim: length('Hello') Não: length("Olá") Quando você passa matrizes ou números, não precisa de pontuação de encapsulamento. Por exemplo: Sim: comprimento([1, 2, 3]) Não: comprimento("[1, 2, 3]") |
[] |
Para fazer referência a um valor em uma posição específica (índice) em uma matriz ou dentro de um objeto JSON, use colchetes, por exemplo: - Para obter o segundo item em uma matriz: myArray[1] - Para acessar as propriedades dentro de um objeto JSON: Exemplo 1: setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>) Exemplo 2: lastIndexOf(triggerBody()?['subject'],'some string') |
. |
Para fazer referência a uma propriedade em um objeto, use o operador dot. Por exemplo, para obter a name propriedade de um customer objeto JSON: "parameters('customer').name" |
? |
Para fazer referência a propriedades nulas em um objeto sem um erro de tempo de execução, use o operador null-ignore (?). Por exemplo, para manipular saídas nulas de um gatilho, você pode usar a seguinte expressão: coalesce(trigger().outputs?.body?['<someProperty>'], '<property-default-value>') |
Funções
Algumas expressões obtêm seus valores de ações de tempo de execução que podem ainda não existir quando a definição do fluxo de trabalho começar a ser executada. Para fazer referência ou trabalhar com esses valores em expressões, você pode usar funções fornecidas pela Linguagem de Definição de Fluxo de Trabalho.
Próximos passos
- Saiba mais sobre ações e gatilhos da linguagem de definição de fluxo de trabalho
- Saiba mais sobre como criar e gerenciar aplicativos lógicos de forma programática com a API REST do fluxo de trabalho