Guia de referência de esquema para a linguagem de definição de fluxo de trabalho em aplicativos lógicos do AzureSchema reference guide for the Workflow Definition Language in Azure Logic Apps

Quando você cria um aplicativo lógico em 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.When you create a logic app in Azure Logic Apps, your logic app has an underlying workflow definition that describes the actual logic that runs in your logic app. Essa definição de fluxo de trabalho usa JSON e segue uma estrutura validada pelo esquema de linguagem de definição de fluxo de trabalho.That workflow definition uses JSON and follows a structure that's validated by the Workflow Definition Language schema. Essa referência fornece uma visão geral sobre essa estrutura e como o esquema define atributos na sua definição de fluxo de trabalho.This reference provides an overview about this structure and how the schema defines attributes in your workflow definition.

Estrutura de definição de fluxo de trabalhoWorkflow definition structure

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 executadas depois que o gatilho é acionado.A workflow definition always includes a trigger for instantiating your logic app, plus one or more actions that run after the trigger fires.

Aqui está a estrutura de alto nível para uma definição de fluxo de trabalho:Here is the high-level structure for a workflow definition:

"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>" }
}
AtributoAttribute ObrigatórioRequired DescriçãoDescription
definition SimYes O elemento inicial para sua definição de fluxo de trabalhoThe starting element for your workflow definition
$schema Somente ao referenciar externamente uma definição de fluxo de trabalhoOnly when externally referencing a workflow definition O local do arquivo de esquema JSON que descreve a versão da linguagem de definição de fluxo de trabalho, que pode ser encontrada aqui:The location for the JSON schema file that describes the Workflow Definition Language version, which you can find here:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json

actions NãoNo As definições para uma ou mais ações a serem executadas no tempo de execução do fluxo de trabalho.The definitions for one or more actions to execute at workflow runtime. Para obter mais informações, consulte gatilhos e ações.For more information, see Triggers and actions.

Máximo de ações: 250Maximum actions: 250

contentVersion NãoNo O número de versão para sua definição de fluxo de trabalho, que é "1.0.0.0" por padrão.The version number for your workflow definition, which is "1.0.0.0" by default. Para ajudar a identificar e confirmar a definição correta ao implantar um fluxo de trabalho, especifique um valor a ser usado.To help identify and confirm the correct definition when deploying a workflow, specify a value to use.
outputs NãoNo As definições para as saídas a serem retornadas de uma execução de fluxo de trabalho.The definitions for the outputs to return from a workflow run. Para obter mais informações, consulte saídas.For more information, see Outputs.

Máximo de saídas: 10Maximum outputs: 10

parameters NãoNo As definições para um ou mais parâmetros que passam os valores a serem usados no tempo de execução do aplicativo lógico.The definitions for one or more parameters that pass the values to use at your logic app's runtime. Para obter mais informações, consulte parâmetros.For more information, see Parameters.

Máximo de parâmetros: 50Maximum parameters: 50

staticResults NãoNo As definições para um ou mais resultados estáticos retornados por ações como saídas de simulação quando os resultados estáticos são habilitados nessas ações.The definitions for one or more static results returned by actions as mock outputs when static results are enabled on those actions. Em cada definição de ação, o atributo runtimeConfiguration.staticResult.name referencia a definição correspondente dentro de staticResults.In each action definition, the runtimeConfiguration.staticResult.name attribute references the corresponding definition inside staticResults. Para obter mais informações, consulte resultados estáticos.For more information, see Static results.
triggers NãoNo As definições para um ou mais gatilhos que instanciam seu fluxo de trabalho.The definitions for one or more triggers that instantiate your workflow. 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 aplicativos lógicos.You can define more than one trigger, but only with the Workflow Definition Language, not visually through the Logic Apps Designer. Para obter mais informações, consulte gatilhos e ações.For more information, see Triggers and actions.

Máximo de gatilhos: 10Maximum triggers: 10

Gatilhos e açõesTriggers and actions

Em uma definição de fluxo de trabalho, as seções triggers e actions definem as chamadas que acontecem durante a execução do fluxo de trabalho.In a workflow definition, the triggers and actions sections define the calls that happen during your workflow's execution. Para obter a sintaxe e mais informações sobre essas seções, consulte gatilhos e ações de fluxo de trabalho.For syntax and more information about these sections, see Workflow triggers and actions.

ParâmetrosParameters

O ciclo de vida da implantação geralmente tem ambientes diferentes para desenvolvimento, teste, preparo e produção.The deployment lifecycle usually has different environments for development, test, staging, and production. Ao implantar aplicativos lógicos em vários ambientes, você provavelmente desejará usar valores diferentes, como cadeias de conexão, com base nas suas necessidades de implantação.When deploying logic apps to various environments, you likely want to use different values, such as connection strings, based on your deployment needs. Ou você pode ter valores que deseja reutilizar em todo o aplicativo lógico sem codificar ou alterar com frequência.Or, you might have values that you want to reuse throughout your logic app without hardcoding or that change often. Na seção parameters da sua definição de fluxo de trabalho, você pode definir ou editar parâmetros para os valores que seu aplicativo lógico usa no tempo de execução.In your workflow definition's parameters section, you can define or edit parameters for the values that your logic app uses at runtime. Você deve definir esses parâmetros primeiro antes de poder referenciar esses parâmetros em outro lugar na sua definição de fluxo de trabalho.You must define these parameters first before you can reference these parameters elsewhere in your workflow definition.

Aqui está a estrutura geral para uma definição de parâmetro:Here is the general structure for a parameter definition:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
AtributoAttribute ObrigatórioRequired TipoType DescriçãoDescription
<parameter-name><parameter-name> SimYes CadeiaString O nome do parâmetro que você deseja definirThe name for the parameter that you want to define
<parameter-type><parameter-type> SimYes int, float, String, bool, array, Object, SecureString, secureobjectint, float, string, bool, array, object, securestring, secureobject

Observação: para todas as senhas, chaves e segredos, use os tipos securestring ou secureobject porque a operação de GET não retorna esses tipos.Note: For all passwords, keys, and secrets, use the securestring or secureobject types because the GET operation doesn't return these types. Para obter mais informações sobre como proteger os parâmetros, consulte recomendações de segurança para parâmetros de ação e de entrada.For more information about securing parameters, see Security recommendations for action and input parameters.

O tipo para o parâmetroThe type for the parameter
<default-parameter-value><default-parameter-value> SimYes O mesmo que typeSame as type O valor de parâmetro padrão a ser usado se nenhum valor for especificado quando o fluxo de trabalho for instanciado.The default parameter value to use if no value is specified when the workflow instantiates. O atributo defaultValue é necessário para que o designer do aplicativo lógico possa mostrar corretamente o parâmetro, mas você pode especificar um valor vazio.The defaultValue attribute is required so that the Logic App Designer can correctly show the parameter, but you can specify an empty value.
<array-with-permitted-parameter-values><array-with-permitted-parameter-values> NãoNo MatrizArray Uma matriz com valores que o parâmetro pode aceitarAn array with values that the parameter can accept
<parameter-description><parameter-description> NãoNo Objeto JSONJSON object Quaisquer outros detalhes de parâmetro, como uma descrição para o parâmetroAny other parameter details, such as a description for the parameter

Em seguida, crie um modelo de Azure Resource Manager para sua definição de fluxo de trabalho, defina os parâmetros de modelo que aceitam os valores desejados na implantação, substitua os valores codificados por referências aos parâmetros de definição de modelo ou de fluxo de trabalho, conforme apropriado, e armazene os valores a serem usados na implantação em um arquivo de parâmetroseparado.Next, create an Azure Resource Manager template for your workflow definition, define template parameters that accept the values you want at deployment, replace hardcoded values with references to template or workflow definition parameters as appropriate, and store the values to use at deployment in a separate parameter file. Dessa forma, você pode alterar esses valores mais facilmente por meio do arquivo de parâmetro sem precisar atualizar e reimplantar seu aplicativo lógico.That way, you can change those values more easily through the parameter file without having to update and redeploy your logic app. Para obter informações confidenciais ou que devem ser protegidas, como nomes de usuários, senhas e segredos, você pode armazenar esses valores em Azure Key Vault e fazer com que o arquivo de parâmetros recupere esses valores do cofre de chaves.For information that is sensitive or must be secured, such as usernames, passwords, and secrets, you can store those values in Azure Key Vault and have your parameter file retrieve those values from your key vault. Para obter mais informações e exemplos sobre como definir parâmetros nos níveis de definição de modelo e de fluxo de trabalho, consulte visão geral: automatizar a implantação para aplicativos lógicos com modelos de Azure Resource Manager.For more information and examples about defining parameters at the template and workflow definition levels, see Overview: Automate deployment for logic apps with Azure Resource Manager templates.

Resultados estáticosStatic results

No atributo staticResults, defina a simulação de uma ação outputs e status que a ação retorna quando a configuração de resultado estático da ação está ativada.In the staticResults attribute, define an action's mock outputs and status that the action returns when the action's static result setting is turned on. Na definição da ação, o atributo runtimeConfiguration.staticResult.name referencia o nome da definição de resultado estático dentro de staticResults.In the action's definition, the runtimeConfiguration.staticResult.name attribute references the name for the static result definition inside staticResults. Saiba como você pode testar aplicativos lógicos com dados fictícios Configurando resultados estáticos.Learn how you can test logic apps with mock data by setting up static results.

"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": { "<...>" }
}
AtributoAttribute ObrigatórioRequired TipoType DescriçãoDescription
<estático-Result-Definition-name><static-result-definition-name> SimYes CadeiaString O nome de uma definição de resultado estático que uma definição de ação pode referenciar por meio de um objeto runtimeConfiguration.staticResult.The name for a static result definition that an action definition can reference through a runtimeConfiguration.staticResult object. Para obter mais informações, consulte definições de configuração de tempo de execução.For more information, see Runtime configuration settings.

Você pode usar qualquer nome exclusivo que desejar.You can use any unique name that you want. Por padrão, esse nome exclusivo é acrescentado com um número, que é incrementado conforme necessário.By default, this unique name is appended with a number, which is incremented as necessary.

<output-attributes-and-values-returned><output-attributes-and-values-returned> SimYes VariaVaries Os requisitos para esses atributos variam de acordo com as diferentes condições.The requirements for these attributes vary based on different conditions. Por exemplo, quando o status é Succeeded, o atributo outputs inclui atributos e valores retornados como saídas de imitação pela ação.For example, when the status is Succeeded, the outputs attribute includes attributes and values returned as mock outputs by the action. Se o status for Failed, o atributo outputs incluirá o atributo errors, que é uma matriz com um ou mais objetos de message de erro que têm informações de erro.If the status is Failed, the outputs attribute includes the errors attribute, which is an array with one or more error message objects that have error information.
<valores de cabeçalho><header-values> NãoNo JSONJSON Todos os valores de cabeçalho retornados pela açãoAny header values returned by the action
<status-code-returned><status-code-returned> SimYes CadeiaString O código de status retornado pela açãoThe status code returned by the action
<action-status><action-status> SimYes CadeiaString O status da ação, por exemplo, Succeeded ou FailedThe action's status, for example, Succeeded or Failed

Por exemplo, nessa definição de ação HTTP, o atributo runtimeConfiguration.staticResult.name faz referência HTTP0 dentro do atributo staticResults em que as saídas de simulação para a ação são definidas.For example, in this HTTP action definition, the runtimeConfiguration.staticResult.name attribute references HTTP0 inside the staticResults attribute where the mock outputs for the action are defined. O atributo runtimeConfiguration.staticResult.staticResultOptions especifica que a configuração de resultado estático é Enabled na ação HTTP.The runtimeConfiguration.staticResult.staticResultOptions attribute specifies that the static result setting is Enabled on the HTTP action.

"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 de HTTP0 dentro de staticResults.The HTTP action returns the outputs in the HTTP0 definition inside staticResults. Neste exemplo, para o código de status, a saída de simulação é OK.In this example, for the status code, the mock output is OK. Para valores de cabeçalho, a saída de simulação é "Content-Type": "application/JSON".For header values, the mock output is "Content-Type": "application/JSON". Para o status da ação, a saída da simulação é Succeeded.For the action's status, the mock output is Succeeded.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

ExpressõesExpressions

Com o JSON, você pode ter valores literais que existem em tempo de design, por exemplo:With JSON, you can have literal values that exist at design time, for example:

"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.You can also have values that don't exist until run time. Para representar esses valores, você pode usar expressõesque são avaliadas em tempo de execução.To represent these values, you can use expressions, which are evaluated at run time. Uma expressão é uma sequência que pode conter uma ou mais funções, operadores, variáveis, valores explícitos ou constantes.An expression is a sequence that can contain one or more functions, operators, variables, explicit values, or constants. 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 sinal de arroba (@).In your workflow definition, you can use an expression anywhere in a JSON string value by prefixing the expression with the 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.When evaluating an expression that represents a JSON value, the expression body is extracted by removing the @ character, and always results in another JSON value.

Por exemplo, para a propriedade de customerName definida anteriormente, você pode obter o valor da propriedade usando a função Parameters () em uma expressão e atribuir esse valor à propriedade accountName:For example, for the previously defined customerName property, you can get the property value by using the parameters() function in an expression and assign that value to the accountName property:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

A interpolação de cadeia de caracteres também permite que você use várias expressões dentro de cadeias de caracteres que são encapsuladas pelo caractere de @ e chaves ({}).String interpolation also lets you use multiple expressions inside strings that are wrapped by the @ character and curly braces ({}). Aqui está a sintaxe:Here is the syntax:

@{ "<expression1>", "<expression2>" }

O resultado é sempre uma cadeia de caracteres, tornando esse recurso semelhante à função concat(), por exemplo:The result is always a string, making this capability similar to the concat() function, for example:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

Se você tiver uma cadeia de caracteres literal que começa com o caractere @, Prefixe o caractere @ com outro caractere @ como um caractere de escape: @@If you have a literal string that starts with the @ character, prefix the @ character with another @ character as an escape character: @@

Estes exemplos mostram como as expressões são avaliadas:These examples show how expressions are evaluated:

Valor JSONJSON value ResultadoResult
"Sophia Owen""Sophia Owen" Retornar estes caracteres: ' Sophia Owen 'Return these characters: 'Sophia Owen'
"matriz [1]""array[1]" Retornar estes caracteres: ' array [1] 'Return these characters: 'array[1]'
"@@""@@" Retornar estes caracteres como uma cadeia de caracteres de um caractere: '@'Return these characters as a one-character string: '@'
" @"" @" Retornar estes caracteres como uma cadeia de dois caracteres: ' @'Return these characters as a two-character string: ' @'

Para esses exemplos, suponha que você defina "myBirthMonth" igual a "janeiro" e "myAge" igual ao número 42:For these examples, suppose you define "myBirthMonth" equal to "January" and "myAge" equal to the number 42:

"myBirthMonth": "January",
"myAge": 42

Estes exemplos mostram como as seguintes expressões são avaliadas:These examples show how the following expressions are evaluated:

Expressão JSONJSON expression ResultadoResult
"parâmetros de@(' myBirthMonth ')""@parameters('myBirthMonth')" Retornar esta cadeia de caracteres: "janeiro"Return this string: "January"
"@{Parameters (' myBirthMonth ')}""@{parameters('myBirthMonth')}" Retornar esta cadeia de caracteres: "janeiro"Return this string: "January"
"@parameters('myAge')""@parameters('myAge')" Retornar este número: 42Return this number: 42
"@{parameters('myAge')}""@{parameters('myAge')}" Retornar este número como uma cadeia de caracteres: "42"Return this number as a string: "42"
"Minha idade é @{Parameters (' myAge ')}""My age is @{parameters('myAge')}" Retornar esta cadeia de caracteres: "minha idade é 42"Return this string: "My age is 42"
"@Concat (' my age is ', String (Parameters (' myAge '))""@concat('My age is ', string(parameters('myAge')))" Retornar esta cadeia de caracteres: "minha idade é 42"Return this string: "My age is 42"
"Minha idade é @@{Parameters (' myAge ')}""My age is @@{parameters('myAge')}" Retornar esta cadeia de caracteres, que inclui a expressão: "minha idade é @{Parameters (' myAge ')} 'Return this string, which includes the expression: "My age is @{parameters('myAge')}`

Quando você estiver trabalhando visualmente no designer de aplicativos lógicos, poderá criar expressões por meio do construtor de expressões, por exemplo:When you're working visually in the Logic Apps Designer, you can create expressions through the Expression builder, for example:

Designer de aplicativos lógicos > Construtor de expressões

Quando terminar, a expressão aparecerá para a propriedade correspondente na definição do fluxo de trabalho, por exemplo, a propriedade searchQuery aqui:When you're done, the expression appears for the corresponding property in your workflow definition, for example, the searchQuery property here:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['twitter']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

SaídasOutputs

Na seção outputs, defina os dados que seu fluxo de trabalho pode retornar ao concluir a execução.In the outputs section, define the data that your workflow can return when finished running. Por exemplo, para controlar um status ou valor específico de cada execução, especifique que a saída do fluxo de trabalho retorne esses dados.For example, to track a specific status or value from each run, specify that the workflow output returns that data.

Nota

Ao responder a solicitações de entrada da API REST de um serviço, não use outputs.When responding to incoming requests from a service's REST API, do not use outputs. Em vez disso, use o tipo de ação Response.Instead, use the Response action type. Para obter mais informações, consulte gatilhos e ações de fluxo de trabalho.For more information, see Workflow triggers and actions.

Aqui está a estrutura geral para uma definição de saída:Here is the general structure for an output definition:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
AtributoAttribute ObrigatórioRequired TipoType DescriçãoDescription
<key-name><key-name> SimYes CadeiaString O nome da chave para o valor de retorno de saídaThe key name for the output return value
<key-type><key-type> SimYes int, float, string, securestring, bool, array, objeto JSONint, float, string, securestring, bool, array, JSON object O tipo para o valor de retorno de saídaThe type for the output return value
<chave-valor><key-value> SimYes Mesmo que <key-type>Same as <key-type> O valor de retorno de saídaThe output return value

Para obter a saída de uma execução de fluxo de trabalho, examine o histórico de execução do aplicativo lógico e os detalhes no portal do Azure ou use a API REST do fluxo de trabalho.To get the output from a workflow run, review your logic app's run history and details in the Azure portal or use the Workflow REST API. Você também pode passar a saída para sistemas externos, por exemplo, Power BI para que você possa criar painéis.You can also pass output to external systems, for example, Power BI so that you can create dashboards.

OperadoresOperators

Em expressões e funções, os operadores executam tarefas específicas, como fazer referência a uma propriedade ou um valor em uma matriz.In expressions and functions, operators perform specific tasks, such as reference a property or a value in an array.

OperadorOperator TarefaTask
'' Para usar um literal de cadeia de caracteres como entrada ou em expressões e funções, empacote a cadeia de caracteres somente com aspas simples, por exemplo, '<myString>'.To use a string literal as input or in expressions and functions, wrap the string only with single quotation marks, for example, '<myString>'. Não use aspas duplas (""), que entram em conflito com a formatação JSON em uma expressão inteira.Do not use double quotation marks (""), which conflict with the JSON formatting around an entire expression. Por exemplo:For example:

Yes: length('Hello')Yes: length('Hello')
Não: comprimento ("Olá")No: length("Hello")

Quando você passa matrizes ou números, não precisa de Pontuação de quebra automática.When you pass arrays or numbers, you don't need wrapping punctuation. Por exemplo:For example:

Sim: comprimento ([1, 2, 3])Yes: length([1, 2, 3])
Não: comprimento ("[1, 2, 3]")No: length("[1, 2, 3]")

[][] Para fazer referência a um valor em uma posição específica (índice) em uma matriz, use colchetes.To reference a value at a specific position (index) in an array, use square brackets. Por exemplo, para obter o segundo item em uma matriz:For example, to get the second item in an array:

myArray[1]

.. Para fazer referência a uma propriedade em um objeto, use o operador ponto.To reference a property in an object, use the dot operator. Por exemplo, para obter a propriedade name para um objeto JSON customer:For example, to get the name property for a customer JSON object:

"@parameters('customer').name"

?? Para fazer referência a Propriedades nulas em um objeto sem um erro de tempo de execução, use o operador de ponto de interrogação.To reference null properties in an object without a runtime error, use the question mark operator. Por exemplo, para tratar saídas nulas de um gatilho, você pode usar esta expressão:For example, to handle null outputs from a trigger, you can use this expression:

@coalesce(trigger().outputs?.body?.<someProperty>, '<property-default-value>')

FunçõesFunctions

Algumas expressões obtêm seus valores de ações de tempo de execução que talvez ainda não existam quando sua definição de fluxo de trabalho começa a ser executada.Some expressions get their values from runtime actions that might not yet exist when your workflow definition starts to run. Para fazer referência ou trabalhar com esses valores em expressões, você pode usar as funções que a linguagem de definição de fluxo de trabalho fornece.To reference or work with these values in expressions, you can use functions that the Workflow Definition Language provides.

Passos seguintesNext steps