Поделиться через


Справка по схеме языка определения рабочих процессов в Azure Logic Apps

При создании приложения логики в Azure Logic Apps приложение логики имеет базовое определение рабочего процесса, описывающее реальную логику, выполняемую в приложении логики. Определение рабочего процесса использует JSON и соответствует структуре, проверенной схемой языка определения рабочих процессов. Этот справочник содержит общие сведения об этой структуре и о том, как схема определяет атрибуты в определении рабочего процесса.

Структура определения рабочего процесса

Определение рабочего процесса всегда включает триггер для создания экземпляра приложения логики, а также одно или несколько действий, которые выполняются после срабатывания триггера.

Ниже приведена высокоуровневая структура определения рабочего процесса.

"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>" }
}
Атрибут Обязательное поле Описание:
definition Да Начальный элемент определения рабочего процесса.
$schema Только в случае использования внешней ссылки на определение рабочего процесса Расположение файла схемы JSON, описывающего версию языка определения рабочего процесса, которую можно найти здесь:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions No Определения для одного или нескольких действий, которые будут запущены во время выполнения рабочего процесса. Дополнительные сведения см. в статье Триггеры и действия.



Максимальное количество действий: 250.
contentVersion No Номер версии для вашего определения рабочего процесса (по умолчанию — 1.0.0.0). Чтобы помочь определить и подтвердить правильное определение при развертывании рабочего процесса, укажите значение для использования.
outputs No Определения для выходных данных, которые возвращаются из рабочего процесса. Дополнительные сведения: Выходные данные.



Максимальное количество типов выходных данных: 10.
parameters No Определения для одного или нескольких параметров, которые передают значения для использования в среде выполнения приложения логики. Дополнительные сведения см. в разделе Параметры.



Максимальное количество параметров: 50.
staticResults No Определения для одного или нескольких статических результатов, возвращаемых действиями в качестве макетных выходных данных, когда для этих действий включены статические результаты. В определении каждого действия атрибут runtimeConfiguration.staticResult.name ссылается на соответствующее определение внутри staticResults. Дополнительные сведения см. в разделе Статические результаты.
triggers No Определения для одного или нескольких триггеров, которые создают рабочий процесс Можно определить несколько триггеров, но только с помощью языка определения рабочего процесса, а не визуально с помощью конструктора рабочих процессов. Дополнительные сведения см. в статье Триггеры и действия.



Максимальное количество триггеров: 10.

Триггеры и действия

В определении рабочего процесса разделы triggers и actions определяют вызовы, которые происходят во время выполнения рабочего процесса. Синтаксис и дополнительные сведения об этих разделах см. в статье Triggers and actions for workflow definitions in Azure Logic Apps (Триггеры и действия для определений рабочих процессов в Azure Logic Apps).

Параметры

Жизненный цикл развертывания обычно имеет различные среды для разработки, тестирования, промежуточного хранения и производства. При развертывании приложений логики в различных средах, скорее всего, потребуется использовать разные значения, например строки подключения, в зависимости от потребностей развертывания. Вы также можете иметь значения, которые нужно повторно использовать в приложении логики без жесткой фиксации или частого изменения. В разделе parameters определения рабочего процесса можно определить или изменить параметры для значений, которые приложение логики использует во время выполнения. Прежде чем можно будет ссылаться на эти параметры в любом расположении в определении рабочего процесса, необходимо сначала определить эти параметры.

Ниже приведена общая структура определения параметров:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Атрибут Обязательное поле Тип Описание
<parameter-name> Да Строка Имя параметра, который требуется определить
<parameter-type> Да int, float, string, bool, array, object, securestring, secureobject



Примечание. Для всех паролей, ключей и секретов используйте типы securestring или secureobject, потому что операция GET не возвращает эти типы. Дополнительные сведения о защите параметров см. в разделе Рекомендации по безопасности для действий и входных параметров.
Тип параметра.
<default-parameter-value> Да То же, что type Значение параметра по умолчанию, если значение не задано при создании экземпляра рабочего процесса. Атрибут defaultValue является обязательным, чтобы конструктор приложений логики мог правильно отобразить параметр, но можно указать пустое значение.
<array-with-permitted-parameter-values> No Массив Массив со значениями, которые может принимать параметр.
<parameter-description> No Объект JSON Любые другие сведения о параметрах, например описание параметра.

Затем создайте шаблон Azure Resource Manager для определения рабочего процесса, определите параметры шаблона, которые принимают значения, необходимые при развертывании, замените жестко зафиксированные значения ссылками на параметры определения шаблона или рабочего процесса и сохраните значения для использования при развертывании в отдельном файле параметров. Таким образом, вы сможете легко изменить эти значения с помощью файла параметров без необходимости обновлять и повторно развертывать приложение логики. Для получения конфиденциальной информации или защиты, например имен пользователей, паролей и секретов, можно сохранить эти значения в Azure Key Vault и получить эти значения из хранилища ключей. Дополнительные сведения и примеры определения параметров на уровнях определения шаблона и рабочего процесса см. в разделе Обзор. Автоматизация развертывания приложений логики с помощью шаблонов Azure Resource Manager.

Статические результаты

В атрибуте staticResults определите макет действия outputs и status, который будет возвращен при включении статического параметра результата действия. В определении действия атрибут runtimeConfiguration.staticResult.name ссылается на имя статического определения результата в staticResults. Узнайте, как протестировать рабочие процессы приложения логики с помощью макетных данных, настроив статические результаты.

"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": { "<...>" }
}
Атрибут Обязательное поле Тип Описание
<static-result-definition-name> Да Строка Имя статического определения результата, на которое может ссылаться на определение действия через объект runtimeConfiguration.staticResult. Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.

Можно использовать любое уникальное имя. По умолчанию к этому уникальному имени добавляется номер, который увеличивается при необходимости.
<output-attributes-and-values-returned> Да Различается Требования к этим атрибутам зависят от различных условий. Например, если status имеет значение Succeeded, атрибут outputs содержит атрибуты и значения, возвращаемые действием в качестве фиктивных выходных данных. Если status имеет значение Failed, атрибут outputs содержит атрибут errors, который является массивом с одним или несколькими объектами message, содержащими сведения об ошибках.
<header-values> No JSON Все значения заголовка, возвращаемые действием
<status-code-returned> Да Строка Код состояния, возвращаемый действием
<action-status> Да Строка Статус действия, например Succeeded или Failed

Например, в этом определении HTTP-действия атрибут runtimeConfiguration.staticResult.name ссылается на атрибут HTTP0 в атрибуте staticResults, где определены макеты выходных данных для действия. runtimeConfiguration.staticResult.staticResultOptionsАтрибут указывает, что параметр статического результата имеет значение Enabled в действии HTTP.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

Действие HTTP возвращает выходные данные в определении HTTP0 в staticResults. В этом примере для кода состояния макетом выходных данных будет OK. Для значений заголовков макетом выходных данных будет "Content-Type": "application/JSON". Для состояния действия макетом выходных данных будет Succeeded.

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

Выражения

При работе с JSON вы можете иметь литеральные значения, которые существуют во время разработки, например:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

Вы также можете использовать значения, которые не существуют до начала времени выполнения. Чтобы представить эти значения, можно использовать выражения, которые вычисляются во время выполнения. Выражение представляет собой последовательность, которая может содержать одну или несколько функций, операторов, переменных, явных значений или констант. В определении рабочего процесса вы можете использовать выражение в любом месте в строчном значении JSON, указав его вместе с префиксом "\@\". При вычислении выражения, представляющего значение JSON, тело выражения извлекается без символа @ и всегда приводит к другому значению JSON.

Например, вы можете получить значение для ранее определенного свойства customerName, используя функцию parameters() в выражении, и присвоить это значение свойству accountName:

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

Интерполяция строк также позволяет использовать несколько выражений внутри строк, которые начинаются символом @ и заключены в фигурные скобки ({}). Ниже приведен синтаксис.

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

Результат всегда является строкой, что делает эту функцию аналогичной функции concat(), например:

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

Если у вас есть строковый литерал, начинающийся с символа @, добавьте перед символом @ другой символ @ в качестве escape-символа: @@.

В примерах ниже показано, как вычисляются выражения.

Значение JSON Результат
"Sophia Owen" Возвращаются символы: "Sophia Owen".
"array[1]" Возвращаются символы: "array[1]".
"@@" Эти символы возвращаются в виде строки с одним символом: \"\@\".
" @" Эти символы возвращаются в виде строки с двумя символами: \" \@\".

Для этих примеров предположим, что вы определяете "myBirthMonth" равным "January", а "myAge" равным числу 42:

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

В примерах ниже показано, как вычисляются выражения.

Выражение JSON Результат
"@parameters('myBirthMonth')" Возвращается строка: "January".
"@{parameters('myBirthMonth')}" Возвращается строка: "January".
"@parameters('myAge')" Возвращается число: 42.
"@{parameters('myAge')}" Возвращается число как строка: "42".
"My age is @{parameters('myAge')}" Возвращается строка: "My age is 42".
"@concat('My age is ', string(parameters('myAge')))" Возвращается строка: "My age is 42".
"My age is @@{parameters('myAge')}" Возвращается строка, содержащая выражение: "My age is @{parameters('myAge')}`.

При визуальной работе в конструкторе рабочих процессов можно создавать выражения с помощью редактора выражений, например:

Screenshot shows workflow designer and expression editor.

Когда вы закончите, выражение появится для соответствующего свойства в определении рабочего процесса, например свойства searchQuery:

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

Выходные данные

В разделе outputs определите данные, которые ваш рабочий процесс может вернуть при завершении работы. Например, чтобы отслеживать определенное состояние или значение из каждого выполнения, укажите, что в возвращенных выходных данных рабочего процесса должны содержаться такие данные.

Примечание.

При реагировании на входящие запросы из REST API службы не используйте outputs. Вместо этого используйте тип действия Response. Дополнительные сведения см. в статье Triggers and actions for workflow definitions in Azure Logic Apps (Триггеры и действия для определений рабочих процессов в Azure Logic Apps).

Ниже приведена общая структура определения выходных данных.

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Атрибут Обязательное поле Тип Описание
<key-name> Да Строка Имя ключа для возвращаемого значения в выходных данных.
<key-type> Да int, float, string, securestring, bool, массив, объект JSON Тип возвращаемого значения в выходных данных.
<значение ключа> Да То же, что и <key-type> Возвращаемое значение в выходных данных.

Чтобы получить результат выполнения рабочего процесса, просмотрите журнал выполнения и подробности приложения логики на портале Azure или используйте REST API рабочих процессов. Также можно передать выходные данные во внешние системы, например Power BI, для создания панели мониторинга.

Операторы

В выражениях и функциях операторы выполняют определенные задачи, такие как ссылка на свойство или значение в массиве.

Оператор Задача
' Чтобы использовать строковый литерал как входные данные или указать его в выражениях и функциях, поместите строку в одинарные кавычки, например '<myString>'. Не используйте двойные кавычки (""), которые конфликтуют с форматированием JSON вокруг всего выражения. Например:

Да: length('Hello')
No: length("Hello")

Когда вы передаете массивы или числа, их не нужно заключать в какие-либо символы. Например:

Да: длина ([1, 2, 3])
Нет: длина ("[1, 2, 3]")
[] Чтобы ссылаться на значение по определенной позиции (индексу) в массиве или внутри объекта JSON, используйте квадратные скобки, например:

— Чтобы получить второй элемент в массиве:

myArray[1]

— Для доступа к свойствам внутри объекта JSON:

Пример 1.
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

Пример 2.
lastIndexOf(triggerBody()?['subject'],'some string')
. Для указания ссылки на свойство в объекте используйте оператор "точка". Например, чтобы получить name свойство для customer объекта JSON:

"@parameters('customer').name"
? Оператор "вопросительный знак" позволяет ссылаться на отсутствующие свойства объекта без ошибок времени выполнения. Например, для обработки выходных данных null из триггера можно использовать следующее выражение:

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

Функции

Некоторые выражения получают значения из действий среды выполнения, которые могут не существовать при запуске определения рабочего процесса. Чтобы работать с этими значениями или ссылаться на них в выражениях, можно использовать функции, предоставляемые языком определения рабочего процесса.

Следующие шаги