Справочник по схемам для типов триггеров и действий в Azure Logic Apps

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

Общие сведения о триггерах

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

  • Опрашивающий триггер проверяет конечную точку службы через равные промежутки времени.

  • Извещающий триггер создает подписку на конечную точку и предоставляет URL-адрес обратного вызова, чтобы конечная точка могла уведомлять триггер, когда происходит указанное событие или стали доступны данные. Затем триггер ожидает ответа конечной точки, прежде чем сработать.

Триггеры имеют следующие основные элементы, хотя некоторые из них являются необязательными.

"<trigger-name>": {
   "type": "<trigger-type>",
   "inputs": { "<trigger-inputs>" },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "conditions": [ "<array-with-conditions>" ],
   "runtimeConfiguration": { "<runtime-config-options>" },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
},

Обязательно

Значение Тип Описание
<trigger-name> Строка Имя триггера
<trigger-type> Строка Тип триггера, например Http или ApiConnection
<trigger-inputs> Объект JSON Входные данные, определяющие режим работы триггера
<time-unit> Строка Единица времени, которая описывает, как часто срабатывает триггер: "секунда", "минута", "час", "день", "неделя" или "месяц"
<number-of-time-units> Целочисленный тип Значение, указывающее, как часто триггер срабатывает на основе частоты, т.е. количество единиц времени, которое необходимо выждать, прежде чем триггер сработает снова

Ниже приведены минимальный и максимальный интервалы.

— Месяц: 1–16 месяцев;
— День: 1–500 дней;
— Час: 1–12 000 часов;
— Минута: 1–72 000 минут;
— Секунда: 1–9 999 999 секунд.

Например, если интервал равен 6, а значение частоты — Month, то повтор будет происходить каждые 6 месяцев.

Необязательный

Значение Тип Описание
<array-with-conditions> Array Массив, содержащий одно или несколько условий, которые определяют выполнение рабочего процесса. Доступно только для триггеров.
<runtime-config-options> Объект JSON Можно изменить поведение триггера во время выполнения, задав свойства runtimeConfiguration. Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.
<splitOn-expression> Строка Для триггеров, возвращающих массив, можно указать выражение для обработки, которое разделяет или выполняет по отдельности элементы массива на нескольких экземплярах рабочего процесса.
<operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

Список типов триггеров

Каждый тип триггера имеет свой интерфейс и свои входные данные, которые определяют его поведение.

Встроенные триггеры

Тип триггера Описание
HTTP Проверяет или опрашивает любую конечную точку. Конечная точка должна соответствовать определенному условию триггера, используя шаблон асинхронных операций 202 или возвращая массив.
HTTPWebhook Создает вызываемую конечную точку для приложения логики, но также вызывает указанный URL-адрес для регистрации или отмены регистрации.
Периодичность Активируется на основе определенного расписания. Можно задать дату и время в будущем для срабатывания триггера. На основе частоты можно также указать время и дни запуска рабочего процесса.
Request Создает вызываемую конечную точку для приложения логики, также называется "ручным" триггером. Например, ознакомьтесь со статьей Вызовы, срабатывания триггеров и создание вложенных рабочих процессов в приложениях логики.

Управляемые триггеры API

Тип триггера Описание
ApiConnection Проверяет или опрашивает конечную точку с помощью управляемых Майкрософт интерфейсов API.
ApiConnectionWebhook Создает вызываемую конечную точку для приложения логики, вызывая управляемые Майкрософт интерфейсы API, для подписки или отмены подписки.

Триггеры. Подробная справочная информация

Триггер APIConnection

Этот триггер проверяет или опрашивает конечную точку с помощью управляемых Майкрософт интерфейсов API, поэтому параметры для этого триггера могут отличаться в зависимости от конечной точки. Многие разделы в этом определении триггера являются необязательными. Режим работы триггера зависит от того, включены ли разделы.

"<APIConnection_trigger_name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": { "<retry-behavior>" },
      "queries": { "<query-parameters>" }
   },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Обязательно

Значение Тип Описание
<APIConnection_trigger_name> Строка Имя триггера
<имя_соединения> Строка Имя подключения к управляемому API, который используется рабочим процессом
<method-type> Строка Метод HTTP для обмена данными с управляемым API: GET, PUT, POST, PATCH или DELETE
<api-operation> Строка Операция API для вызова
<time-unit> Строка Единица времени, которая описывает, как часто срабатывает триггер: "секунда", "минута", "час", "день", "неделя" или "месяц"
<number-of-time-units> Целочисленный тип Значение, указывающее, как часто триггер срабатывает на основе частоты, т.е. количество единиц времени, которое необходимо выждать, прежде чем триггер сработает снова

Ниже приведены минимальный и максимальный интервалы.

— Месяц: 1–16 месяцев;
— День: 1–500 дней;
— Час: 1–12 000 часов;
— Минута: 1–72 000 минут;
— Секунда: 1–9 999 999 секунд.

Например, если интервал равен 6, а значение частоты — Month, то повтор будет происходить каждые 6 месяцев.

Необязательный

Значение Тип Описание
<retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
<query-parameters> Объект JSON Все параметры запроса для включения с помощью вызова API. Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
<max-runs> Целочисленный тип По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно до предела по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма триггера.
<max-runs-queue> Целочисленный тип Когда рабочий процесс уже выполняет максимальное количество экземпляров, которое можно изменить на основе свойства runtimeConfiguration.concurrency.runs, все новые запуски помещаются в очередь до ограничения по умолчанию. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
<splitOn-expression> Строка Для триггеров, возвращающих массивы, это выражение ссылается на массив, который необходимо использовать, чтобы вы могли создать и запустить экземпляр рабочего процесса для каждого элемента массива, а не использовали цикл Foreach.

Например, следующее выражение представляет элемент массива, возвращенный внутри тела триггера: @triggerbody()?['value']

<operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

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

Элемент Тип Описание
Заголовки Объект JSON Заголовки из ответа
текст Объект JSON Текст из ответа
Код состояния Целочисленный тип Код состояния из ответа

Пример

Следующее определение триггера каждый день проверяет электронную почту в папке "Входящие" для рабочей или учебной учетной записи:

"When_a_new_email_arrives": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "get",
      "path": "/Mail/OnNewEmail",
      "queries": {
          "fetchOnlyWithAttachment": false,
          "folderPath": "Inbox",
          "importance": "Any",
          "includeAttachments": false
      }
   },
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Триггер ApiConnectionWebhook

Этот триггер отправляет запрос подписке в конечную точку с помощью управляемых Майкрософт интерфейсов API, предоставляет URL-адрес обратного вызова, на который конечная точка может отправить ответ, и ожидает ответа конечной точки. Дополнительные сведения см. в разделе Подписка конечной точки.

"<ApiConnectionWebhook_trigger_name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
          "NotificationUrl": "@{listCallbackUrl()}"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "retryPolicy": { "<retry-behavior>" },
      "queries": "<query-parameters>"
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Обязательно

Значение Тип Описание
<имя_соединения> Строка Имя подключения к управляемому API, который используется рабочим процессом
<body-content> Объект JSON Любое содержимое сообщения для отправки на управляемый API в качестве полезных данных

Необязательный

Значение Тип Описание
<retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
<query-parameters> Объект JSON Все параметры запроса для включения в вызов API

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.

<max-runs> Целочисленный тип По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно до предела по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма триггера.
<max-runs-queue> Целочисленный тип Когда рабочий процесс уже выполняет максимальное количество экземпляров, которое можно изменить на основе свойства runtimeConfiguration.concurrency.runs, все новые запуски помещаются в очередь до ограничения по умолчанию. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
<splitOn-expression> Строка Для триггеров, возвращающих массивы, это выражение ссылается на массив, который необходимо использовать, чтобы вы могли создать и запустить экземпляр рабочего процесса для каждого элемента массива, а не использовали цикл Foreach.

Например, следующее выражение представляет элемент массива, возвращенный внутри тела триггера: @triggerbody()?['value']

<operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

Пример

Это определение триггера подписывается на API Office 365 Outlook, предоставляет URL-адрес обратного вызова на конечную точку API и ожидает ответа конечной точки при получении нового электронного письма.

"When_a_new_email_arrives_(webhook)": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
         "NotificationUrl": "@{listCallbackUrl()}" 
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "path": "/MailSubscription/$subscriptions",
      "queries": {
          "folderPath": "Inbox",
          "hasAttachment": "Any",
          "importance": "Any"
      }
   },
   "splitOn": "@triggerBody()?['value']"
}

Триггер HTTP

Этот триггер отправляет запрос в указанную конечную точку HTTP или HTTPS на основе указанного расписания повторения. Затем триггер проверяет ответ, чтобы определить, выполняется ли рабочий процесс. Дополнительные сведения см. в статье Вызов конечных точек по протоколу HTTP или HTTPS через Azure Logic Apps.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": "<query-parameters>",
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      }
   },
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Обязательно

Свойство Значение Тип Описание
method <method-type> Строка Выбор метода для отправки запроса: "GET", "PUT", "POST", "PATCH" или "DELETE"
uri <HTTP-or-HTTPS-endpoint-URL> Строка URL-адрес конечной точки HTTP или HTTPS, по которому нужно отправить исходящий запрос. Максимальный размер строки: 2 КБ.

Для службы или ресурса Azure этот синтаксис URI включает идентификатор ресурса и путь к ресурсу, к которому требуется получить доступ.

frequency <time-unit> Строка Единица времени, которая описывает, как часто срабатывает триггер: "секунда", "минута", "час", "день", "неделя" или "месяц"
interval <number-of-time-units> Целочисленный тип Значение, указывающее, как часто триггер срабатывает на основе частоты, т.е. количество единиц времени, которое необходимо выждать, прежде чем триггер сработает снова

Ниже приведены минимальный и максимальный интервалы.

— Месяц: 1–16 месяцев;
— День: 1–500 дней;
— Час: 1–12 000 часов;
— Минута: 1–72 000 минут;
— Секунда: 1–9 999 999 секунд.

Например, если интервал равен 6, а значение частоты — Month, то повтор будет происходить каждые 6 месяцев.

Необязательный

Свойство Значение Тип Описание
headers <header-content> Объект JSON Все заголовки, которые необходимо включить в запрос

Пример задания языка и типа.

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

queries <query-parameters> Объект JSON Все параметры запроса, которые необходимо включить в запрос

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к запросу.

body <body-content> Объект JSON Содержимое сообщения для отправки в качестве полезных данных с запросом
authentication <authentication-type-and-property-values> Объект JSON Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье. Помимо планировщика поддерживается свойство authority. По умолчанию его значение равно https://management.azure.com/, но также можно использовать другое значение.
retryPolicy > type <retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
runs <max-runs> Целочисленный тип По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно до предела по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма триггера.
maximumWaitingRuns <max-runs-queue> Целочисленный тип Когда рабочий процесс уже выполняет максимальное количество экземпляров, которое можно изменить на основе свойства runtimeConfiguration.concurrency.runs, все новые запуски помещаются в очередь до ограничения по умолчанию. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
operationOptions <operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

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

Элемент Тип Описание
headers Объект JSON Заголовки из ответа
body Объект JSON Текст из ответа
status code Целочисленный тип Код состояния из ответа

Требования для входящих запросов

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

Свойство Обязательно Описание
Код состояния Да Код состояния "200 OK" инициирует запуск. Другие коды состояния — нет.
Заголовок retry-after Нет Количество секунд перед повторным опросом конечной точки приложением логики
Заголовок Location Нет URL-адрес для вызова во время следующего интервала опроса. Если не указан, используется исходный URL-адрес.

Пример поведения для различных запросов

Код состояния Повтор через Поведение
200 {нет} Выполняется рабочий процесс, затем после определенного количества повторений снова проверяется, не добавились ли данные.
200 10 с Выполняется рабочий процесс, затем через 10 секунд снова проверяется, не добавились ли данные.
202 60 секунд Рабочий процесс не запускается. Следующая попытка происходит через одну минуту с учетом определенного повторения. Если определенное повторение составляет менее минуты, то приоритет имеет заголовок retry-after. В противном случае используется определенное повторение.
400 {нет} Недопустимый запрос, рабочий процесс не запускается. Если параметр retryPolicy не задан, то используется политика по умолчанию. После достижения количества попыток триггер снова проверяет наличие данных после определенного числа повторений.
500 {нет} Ошибка сервера, рабочий процесс не запускается. Если параметр retryPolicy не задан, то используется политика по умолчанию. После достижения количества попыток триггер снова проверяет наличие данных после определенного числа повторений.

Триггер httpWebhook

Этот триггер делает приложение логики вызываемым, создавая конечную точку, которая может зарегистрировать подписку путем вызова URL-адреса указанной конечной точки. При создании этого триггера в рабочем процессе исходящий запрос выполняет вызов для регистрации подписки. Таким образом, триггер может запустить ожидание событий. Когда операция делает этот триггер недопустимым, исходящий запрос автоматически выполняет вызов для отмены подписки. Дополнительные сведения см. в разделе Подписка конечной точки.

Можно также указать ограничения асинхронных операций на триггере HTTPWebhook. Поведение триггера зависит от разделов, которые используются или пропускаются.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<endpoint-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": { "<retry-behavior>" }
         },
      },
      "unsubscribe": {
         "method": "<method-type>",
         "url": "<endpoint-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" }
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Некоторые значения, например <method-type>, доступны для объектов "subscribe" и "unsubscribe".

Обязательно

Значение Тип Описание
<method-type> Строка Метод HTTP, используемый для запроса подписки: "GET", "PUT", "POST", "PATCH" или "DELETE"
<endpoint-subscribe-URL> Строка URL-адрес конечной точки для отправки запроса на подписку

Необязательный

Значение Тип Описание
<method-type> Строка Метод HTTP, используемый для запроса отмены: GET, PUT, POST, PATCH или DELETE
<endpoint-unsubscribe-URL> Строка URL-адрес конечной точки для отправки запроса на отмену
<body-content> Строка Любое содержимое сообщения для отправки в запросе на подписку или отмену
<authentication-type> Объект JSON Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье.
<retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
<max-runs> Целочисленный тип По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно до предела по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма триггера.
<max-runs-queue> Целочисленный тип Когда рабочий процесс уже выполняет максимальное количество экземпляров, которое можно изменить на основе свойства runtimeConfiguration.concurrency.runs, все новые запуски помещаются в очередь до ограничения по умолчанию. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
<operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

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

Элемент Тип Описание
Заголовки Объект JSON Заголовки из ответа
текст Объект JSON Текст из ответа
Код состояния Целочисленный тип Код состояния из ответа

Пример

Этот триггер создает подписку на указанную конечную точку, предоставляет уникальный URL-адрес обратного вызова и ожидает новых публикаций технологических статей.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "POST",
         "uri": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{listCallbackUrl()}",
            "hub.mode": "subscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         },
      },
      "unsubscribe": {
         "method": "POST",
         "url": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
            "hub.mode": "unsubscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         }
      }
   }
}

Триггер повторения

Этот триггер выполняется на основе указанного расписания повторов и предоставляет простой способ создания регулярно запускающегося рабочего процесса.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
      "startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
      "timeZone": "<time-zone>",
      "schedule": {
         // Applies only when frequency is Day or Week. Separate values with commas.
         "hours": [ <one-or-more-hour-marks> ], 
         // Applies only when frequency is Day or Week. Separate values with commas.
         "minutes": [ <one-or-more-minute-marks> ], 
         // Applies only when frequency is Week. Separate values with commas.
         "weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ] 
      }
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Обязательно

Значение Тип Описание
<time-unit> Строка Единица времени, которая описывает, как часто срабатывает триггер: "секунда", "минута", "час", "день", "неделя" или "месяц"
<number-of-time-units> Целочисленный тип Значение, указывающее, как часто триггер срабатывает на основе частоты, т.е. количество единиц времени, которое необходимо выждать, прежде чем триггер сработает снова

Ниже приведены минимальный и максимальный интервалы.

— Месяц: 1–16 месяцев;
— День: 1–500 дней;
— Час: 1–12 000 часов;
— Минута: 1–72 000 минут;
— Секунда: 1–9 999 999 секунд.

Например, если интервал равен 6, а значение частоты — Month, то повтор будет происходить каждые 6 месяцев.

Необязательный

Значение Тип Описание
<start-date-time-with-format-YYYY-MM-DDThh:mm:ss> Строка Дата и время начала в таком формате:

ГГГГ-ММ-ДДTчч:мм:сс, если указан часовой пояс,

-или-

ГГГГ-ММ-ДДTчч:мм:ссZ, если часовой пояс не указан.

Например, если требуется указать 18 сентября 2017 г. в 14:00, то используйте 2017-09-18T14:00:00 и укажите часовой пояс, такой как "Стандартное тихоокеанское время", или укажите "2017-09-18T14:00:00Z" без часового пояса.

Важно: время начала не может превышать 49 лет в будущем и должно соответствовать спецификациям даты и времени ISO 8601, быть в формате даты и времени UTC, но без Смещения UTC. Если не указать часовой пояс, то необходимо в конце добавить букву Z без пробелов. Эта буква Z ссылается на соответствующее судовое время.

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

<time-zone> Строка Применяется только при указании времени начала, так как этот триггер не принимает смещение от UTC. Укажите часовой пояс, который необходимо применить.
<one-or-more-hour-marks> Целое число или массив целых чисел Если для параметра frequency задать значение Day или Week, то можно указать одно или несколько целых чисел от 0 до 23, разделенных запятыми. В эти часы будет запускаться рабочий процесс.

Например, если указать 10, 12 и 14, вы получите часовые метки 10:00, 12:00 и 14:00.

<one-or-more-minute-marks> Целое число или массив целых чисел Если для параметра frequency задать значение Day или Week, то можно указать одно или несколько целых чисел от 0 до 59, разделенных запятыми. В эти минуты часа будет запускаться рабочий процесс.

Например, если указать 30 минут и использовать предыдущий пример для часов, то вы получите 10:30, 12:30 и 14:30.

weekDays Строка или массив строк Если для параметра frequency задать значение Week, то можно указать один или несколько дней, разделенных запятыми. В эти дни будет запускаться рабочий процесс: Monday (Понедельник), Tuesday (Вторник), Wednesday (Среда), Thursday (Четверг), Friday (Пятница), Saturday (Суббота) и Sunday (Воскресенье).
<max-runs> Целочисленный тип По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно до предела по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма триггера.
<max-runs-queue> Целочисленный тип Когда рабочий процесс уже выполняет максимальное количество экземпляров, которое можно изменить на основе свойства runtimeConfiguration.concurrency.runs, все новые запуски помещаются в очередь до ограничения по умолчанию. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
<operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

Пример 1

Этот основной триггер повторения запускается ежедневно:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Пример 2

Вы можете задать дату и время, когда триггер будет срабатывать. Этот триггер повторения будет запущен в соответствии с указанной датой, а затем будет срабатывать ежедневно:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1,
      "startTime": "2017-09-18T00:00:00Z"
   }
}

Пример 3

Этот триггер повторения был запущен 9 сентября 2017 года в 14:00 и запускался каждый понедельник в 10:30, 12:30 и 14:30 по тихоокеанскому времени:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Week",
      "interval": 1,
      "schedule": {
         "hours": [ 10, 12, 14 ],
         "minutes": [ 30 ],
         "weekDays": [ "Monday" ]
      },
      "startTime": "2017-09-07T14:00:00",
      "timeZone": "Pacific Standard Time"
   }
}

Дополнительные сведения, а также примеры это триггера см. в статье Создание и планирование регулярно выполняющихся задач при помощи Azure Logic Apps.

Триггер запросов

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

Чтобы вызвать этот триггер, необходимо использовать API listCallbackUrl, описанный в REST API службы рабочих процессов. Чтобы узнать, как использовать этот триггер в качестве конечной точки HTTP, см. сведения в статье Вызовы, срабатывания триггеров и создание вложенных рабочих процессов в приложениях логики.

"manual": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "<method-type>",
      "relativePath": "<relative-path-for-accepted-parameter>",
      "schema": {
         "type": "object",
         "properties": { 
            "<property-name>": {
               "type": "<property-type>"
            }
         },
         "required": [ "<required-properties>" ]
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      },
   },
   "operationOptions": "<operation-option>"
}

Обязательно

Значение Тип Описание
<property-name> Строка Имя свойства в схеме JSON, которое описывает полезные данные
<property-type> Строка Тип свойства

Необязательный

Значение Тип Описание
<method-type> Строка Метод, который входящие запросы должны использовать для вызова приложения логики: GET, PUT, POST, PATCH или DELETE
<relative-path-for-accepted-parameter> Строка Относительный путь для параметра, который принимает URL-адрес конечной точки
<required-properties> Array Одно или несколько свойств, требующих значений
<max-runs> Целочисленный тип По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно до предела по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма триггера.
<max-runs-queue> Целочисленный тип Когда рабочий процесс уже выполняет максимальное количество экземпляров, которое можно изменить на основе свойства runtimeConfiguration.concurrency.runs, все новые запуски помещаются в очередь до ограничения по умолчанию. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
<operation-option> Строка Поведение по умолчанию можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

Пример

Этот триггер указывает, что входящий запрос должен использовать HTTP-метод POST для вызова триггера, а также включать схему, проверяющую входные данные входящего запроса.

"manual": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "POST",
      "schema": {
         "type": "object",
         "properties": {
            "customerName": {
               "type": "String"
            },
            "customerAddress": { 
               "type": "Object",
               "properties": {
                  "streetAddress": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  }
               }
            }
         }
      }
   }
}

Условия триггера

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

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

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Hour",
      "interval": 1
   },
   "conditions": [ {
      "expression": "@equals(triggers().code, 'InternalServerError')"
   } ]
}

По умолчанию триггер срабатывает только после получения ответа "200 OK". Если выражение ссылается на код состояния триггера, стандартный режим работы триггера изменяется. Таким образом, если требуется запуск триггера при более чем одном коде состояния, например "200" и "201", необходимо включить в качестве условия следующее выражение.

@or(equals(triggers().code, 200),equals(triggers().code, 201))

Множественные запуски триггера

Если триггер возвращает массив для обработки приложением логики, цикл for each может занять слишком много времени для обработки каждого элемента массива. Вместо этого можно использовать свойство SplitOn в триггере, чтобы выполнить индивидуальную обработку массива. При индивидуальной обработке массив разделяется на элементы и для каждого элемента запускается новый экземпляр рабочего процесса. Такой подход является эффективным, например, если нужно опросить конечную точку, которая может вернуть несколько новых элементов между интервалами опроса. Максимальное число элементов массива, которое свойство SplitOn позволяет обработать в одном приложении логики, см. в статье Ограничения и настройка Logic Apps.

Примечание

Нельзя использовать свойство SplitOn с шаблоном синхронного отклика. Любой рабочий процесс, который использует свойство SplitOn и содержит действие ответа, выполняется асинхронно и сразу же отправляет ответ 202 ACCEPTED.

Если включен параллелизм триггеров, ограничение SplitOn значительно сокращается. Если число элементов превышает это ограничение, функция SplitOn отключается.

Если в файле триггера Swagger описаны полезные данные, составляющие массив, SplitOn автоматически добавляется в триггер. В противном случае добавьте это свойство в полезные данные ответа, содержащий массив, который нужно обработать индивидуально.

Пример

Допустим, что имеется API, который возвращает следующий ответ.

{
   "Status": "Succeeded",
   "Rows": [ 
      { 
         "id": 938109380,
         "name": "customer-name-one"
      },
      {
         "id": 938109381,
         "name": "customer-name-two"
      }
   ]
}

Приложению логики требуется только содержимое массива Rows, поэтому можно создать триггер, как в следующем примере.

"HTTP_Debatch": {
   "type": "Http",
    "inputs": {
        "uri": "https://mydomain.com/myAPI",
        "method": "GET"
    },
   "recurrence": {
      "frequency": "Second",
      "interval": 1
    },
    "splitOn": "@triggerBody()?.Rows"
}

Примечание

Если используется команда SplitOn, получить свойства, которые находятся за пределами массива, невозможно. В нашем примере получить свойство status в ответе, возвращенном из API, невозможно.

Чтобы избежать ошибок, если отсутствует свойство Rows, в этом примере используется оператор ?.

Теперь в определении рабочего процесса можно использовать @triggerBody().name, чтобы получить значения name, которые являются значениями "customer-name-one" при первом выполнении и "customer-name-two" при втором выполнении. Выходные данные триггера выглядят так:

{
   "body": {
      "id": 938109380,
      "name": "customer-name-one"
   }
}
{
   "body": {
      "id": 938109381,
      "name": "customer-name-two"
   }
}

Общие сведения о действиях

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

"<action-name>": {
   "type": "<action-type>",
   "inputs": { 
      "<input-name>": { "<input-value>" },
      "retryPolicy": "<retry-behavior>" 
   },
   "runAfter": { "<previous-trigger-or-action-status>" },
   "runtimeConfiguration": { "<runtime-config-options>" },
   "operationOptions": "<operation-option>"
},

Обязательно

Значение Тип Описание
<action-name> Строка Имя действия
<action-type> Строка Тип действия, например Http или ApiConnection
<input-name> Строка Имя для входа, определяющее поведение действия
<input-value> Различные Входное значение, которое может быть строкой, целым числом, объектом JSON и т. д.
<previous-trigger-or-action-status> Объект JSON Имя и итоговое состояние для триггера или действия, которое должно выполняться немедленно перед запуском текущего действия

Необязательный

Значение Тип Описание
<retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе "Политики повтора".
<runtime-config-options> Объект JSON Режим работы некоторых действий во время выполнения можно изменить, задав свойство runtimeConfiguration. Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.
<operation-option> Строка Режим работы по умолчанию некоторых действий можно изменить, задав свойство operationOptions. Дополнительные сведения см. в разделе Варианты операций.

Список типов действий

Некоторые часто используемые типы действий.

Встроенные действия

Тип действия Описание
Docker Compose Создает один выход из входных данных, который может иметь различные типы.
Execute JavaScript Code Выполнение фрагментов кода JavaScript, соответствующих заданным условиям. Требования к коду и дополнительные сведения см. в разделе Добавление и выполнение фрагментов кода со встроенным кодом.
Функция Вызывает функцию Azure.
HTTP Вызывает конечную точку HTTP.
Соединить Создает строку из всех элементов в массиве и разделяет эти элементы определенным символом разделителя.
Анализ JSON Создает понятные токены из свойств в содержимом JSON. Затем можно ссылаться на эти свойства, включая токены в приложение логики.
Запрос Создает массив из элементов другого массива на основании условия или фильтра.
Ответ Создает ответ на входящий вызов или запрос.
Выберите пункт Создает массив объектов JSON, преобразуя элементы другого массива на основе указанной карты.
Таблица Создает таблицу CSV или HTML из массива.
Завершение Останавливает активное выполнение рабочего процесса.
Ожидание Приостанавливает рабочий процесс на заданный срок или до указанной даты и времени.
Рабочий процесс Создает вложенный рабочий процесс внутри другого рабочего процесса.

Действия управляемых API

Тип действия Описание
ApiConnection Вызывает конечную точку HTTP, используя управляемый Майкрософт интерфейс API.
ApiConnectionWebhook Работает как веб-перехватчик HTTP, но использует интерфейс API, управляемый Майкрософт.

Действия рабочего процесса управления

Эти действия позволяют управлять выполнением рабочего процесса и включают в себя другие действия. За пределами действия рабочего процесса управления можно непосредственно ссылаться на действия внутри него. Например, если имеется действие Http внутри области, можно ссылаться на выражение @body('Http') из любой точки в рабочем процессе. В то же время действия, которые существуют внутри действия рабочего процесса управления, могут "привязываться" только к другим действиям, которые находятся в той же структуре рабочего процесса управления.

Тип действия Описание
Foreach Выполняет те же действия в цикле для каждого элемента массива.
If Выполняет действия в зависимости от того, имеет ли заданное условие значение true или false.
Область Выполняет действия из набора действий на основе состояния группы.
Switch Выполняет действия, организованные в случаях, когда значения из выражений, объектов или токенов соответствуют значениям, указанным для каждого случая.
Until Выполняет действия в цикле до тех пор, пока указанное условие не будет иметь значение true.

Действия. Подробная справочная информация

Действие APIConnection

Это действие отправляет HTTP-запрос для управляемого Microsoft интерфейса API и требует сведения об API и параметрах, а также ссылку на действительное соединение.

"<action-name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<api-name>']['connectionId']"
         },
         "<other-action-specific-input-properties>"        
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": "<retry-behavior>",
      "queries": { "<query-parameters>" },
      "<other-action-specific-properties>"
    },
    "runAfter": {}
}

Обязательно

Значение Тип Описание
<action-name> Строка Имя действия, предоставляемого соединителем
<api-name> Строка Имя управляемого Майкрософт интерфейса API, используемого для подключения
<method-type> Строка Метод HTTP для вызова API: GET, PUT, POST, PATCH или DELETE
<api-operation> Строка Операция API для вызова

Необязательный

Значение Тип Описание
<other-action-specific-input-properties> Объект JSON Все входные свойства, которые применяются к указанному действию
<retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
<query-parameters> Объект JSON Все параметры запроса для включения с помощью вызова API.

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.

<other-action-specific-properties> Объект JSON Все другие свойства, которые применяются к указанному действию

Пример

Это определение описывает действие Отправить по электронной почте для соединителя Outlook Office 365, который является управляемым Майкрософт интерфейсом API.

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "Thank you for your membership!",
         "Subject": "Hello and welcome!",
         "To": "Sophie.Owen@contoso.com"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "POST",
      "path": "/Mail"
    },
    "runAfter": {}
}

Действие APIConnectionWebhook

Это действие отправляет запрос на подписку через HTTP в конечную точку с помощью управляемого Майкрософт интерфейсом API, предоставляет URL-адрес обратного вызова, на который конечная точка может отправить ответ, и ожидает ответа конечной точки. Дополнительные сведения см. в разделе Подписка конечной точки.

"<action-name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<api-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": "<retry-behavior>",
         "queries": { "<query-parameters>" },
         "<other-action-specific-input-properties>"
      },
      "unsubscribe": {
         "method": "<method-type>",
         "uri": "<api-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "<other-action-specific-properties>"
      },
   },
   "runAfter": {}
}

Некоторые значения, например <method-type>, доступны для объектов "subscribe" и "unsubscribe".

Обязательно

Значение Тип Описание
<action-name> Строка Имя действия, предоставляемого соединителем
<method-type> Строка Метод HTTP для подписки или отмены подписки на конечную точку: GET, PUT, POST, PATCH или DELETE
<api-subscribe-URL> Строка Универсальный код ресурса (URI), используемый для подписки на API

Необязательный

Значение Тип Описание
<api-unsubscribe-URL> Строка Универсальный код ресурса (URI), используемый для отмены подписки на API
<header-content> Объект JSON Все заголовки для отправки в запрос

Например, чтобы задать язык и тип запроса:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

<body-content> Объект JSON Любое содержимое сообщения для отправки в запросе
<authentication-type> Объект JSON Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье.
<retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
<query-parameters> Объект JSON Все параметры запроса для включения в вызов API

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.

<other-action-specific-input-properties> Объект JSON Все входные свойства, которые применяются к указанному действию
<other-action-specific-properties> Объект JSON Все другие свойства, которые применяются к указанному действию

Также можно указать ограничения для действий ApiConnectionWebhook так же, как ограничения асинхронных операций HTTP.

Действие compose

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

"Compose": {
   "type": "Compose",
   "inputs": "<inputs-to-compose>",
   "runAfter": {}
},

Обязательно

Значение Тип Описание
<inputs-to-compose> Любой Входные данные для создания единых выходных данных

Пример 1

Это определение действия объединяет abcdefg с конечным пространством и значением 1234.

"Compose": {
   "type": "Compose",
   "inputs": "abcdefg 1234",
   "runAfter": {}
},

Результат, который создает это действие.

abcdefg 1234

Пример 2

Это определение действия объединяет строковую переменную, содержащую abcdefg и целочисленную переменную, которая содержит 1234.

"Compose": {
   "type": "Compose",
   "inputs": "@{variables('myString')}@{variables('myInteger')}",
   "runAfter": {}
},

Результат, который создает это действие.

"abcdefg1234"

Execute JavaScript Code action (Выполнить действие кода JavaScript)

Это действие выполняет фрагмент кода JavaScript и возвращает результаты через маркер Result, на который могут ссылаться дальнейшие действия.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "<JavaScript-code-snippet>",
      "explicitDependencies": {
         "actions": [ <previous-actions> ],
         "includeTrigger": true
      }
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<JavaScript-code-snippet> Различается Код JavaScript, который требуется выполнить. Требования к коду и дополнительные сведения см. в разделе Добавление и выполнение фрагментов кода со встроенным кодом.

В атрибуте code фрагмент кода может использовать в качестве входных данных объект workflowContext, который предназначен только для чтения. Этот объект включает вложенные свойства, дающие коду доступ к результатам из триггера и предыдущих действий в данном рабочем процессе. Дополнительные сведения об объекте workflowContext см. в разделе Эталонный триггер и результаты действия в коде.

Необходимо в некоторых случаях

Атрибут explicitDependencies указывает, что необходимо явно включить результаты из триггера, предыдущих действий, или всего вышеперечисленного, в качестве зависимостей для фрагмента кода. Дополнительные сведения о добавлении этих зависимостей см. в разделе Добавление параметров для встроенного кода.

Для атрибута includeTrigger можно указать значения true или false.

Значение Тип Описание
<previous-actions> Массив строк Массив с указанными именами действий. Используйте имена действий, которые отображаются в определении рабочего процесса; имена действий используют символы подчеркивания (_), а не пробелы ( ).

Пример 1

Это действие запускает код, который получает имя приложения логики и возвращает в результате текст "Hello World FROM <logic-app-name>". В этом примере код ссылается на имя рабочего процесса, обращаясь к свойству workflowContext.workflow.name через объект workflowContext, который доступен только для чтения. Дополнительные сведения об объекте workflowContext см. в разделе Эталонный триггер и результаты действия в коде.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
   },
   "runAfter": {}
}

Пример 2

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

Код извлекает адреса электронной почты из свойства триггера Body и возвращает адреса вместе со значением свойства SelectedOption из действия утверждения. Действие явным образом включает действие отправки утверждения по электронной почте в качестве зависимости в атрибуте explicitDependencies > actions.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var re = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email_.outputs.body.SelectedOption;\r\n\r\nreturn email.match(re) + \" - \" + reply;\r\n;",
      "explicitDependencies": {
         "actions": [
            "Send_approval_email_"
         ]
      }
   },
   "runAfter": {}
}

Действие функции

Это действие вызывает ранее созданный объект Функция Azure.

"<Azure-function-name>": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "<Azure-function-ID>"
      },
      "method": "<method-type>",
      "headers": { "<header-content>" },
      "body": { "<body-content>" },
      "queries": { "<query-parameters>" } 
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<Azure-function-ID> Строка Идентификатор ресурса для функции Azure, которую требуется вызвать. Формат для этого значения:

"/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>"

<method-type> Строка Метод HTTP, используемый для вызова функции: GET, PUT, POST, PATCH или DELETE

Если метод не указан, то по умолчанию используется метод POST.

Необязательный

Значение Тип Описание
<header-content> Объект JSON Все заголовки для отправки с вызовом

Например, чтобы задать язык и тип запроса:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

<body-content> Объект JSON Любое содержимое сообщения для отправки в запросе
<query-parameters> Объект JSON Все параметры запроса для включения в вызов API

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.

<other-action-specific-input-properties> Объект JSON Все входные свойства, которые применяются к указанному действию
<other-action-specific-properties> Объект JSON Все другие свойства, которые применяются к указанному действию

При сохранении приложения логики модуль Logic Apps выполняет эти проверки указанной функции.

  • У рабочего процесса должен быть доступ к функции.

  • Рабочий процесс может использовать только стандартный триггер HTTP или универсальный триггер веб-перехватчика в формате JSON.

    Модуль Logic Apps получает и кэширует URL-адрес триггера, используемый в среде выполнения. Тем не менее, если какая-либо операция делает недействительным кэшированный URL-адрес, то в среде выполнения действие Функция заканчивается сбоем. Чтобы устранить эту проблему, повторно сохраните приложение логики, чтобы оно снова загрузило URL-адрес триггера.

  • Функция не может иметь какой-либо определенный маршрут.

  • Можно использовать только авторизацию с помощью функции и анонимную авторизацию.

Пример

Это определение действия вызывает ранее созданную функцию GetProductID.

"GetProductID": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
      },
      "method": "POST",
      "headers": { 
          "x-ms-date": "@utcnow()"
       },
      "body": { 
          "Product_ID": "@variables('ProductID')"
      }
   },
   "runAfter": {}
}

Действие HTTP

Это действие отсылает запрос на указанную конечную точку HTTP или HTTPS и по результату проверки определяет, следует ли запускать рабочий процесс. Дополнительные сведения см. в статье Вызов конечных точек по протоколу HTTP или HTTPS через Azure Logic Apps.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": { "<query-parameters>" },
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      },
   },
   "runAfter": {}
}

Обязательно

Свойство Значение Тип Описание
method <method-type> Строка Выбор метода для отправки запроса: "GET", "PUT", "POST", "PATCH" или "DELETE"
uri <HTTP-or-HTTPS-endpoint-URL> Строка URL-адрес конечной точки HTTP или HTTPS, по которому нужно отправить исходящий запрос. Максимальный размер строки: 2 КБ.

Для службы или ресурса Azure этот синтаксис URI включает идентификатор ресурса и путь к ресурсу, к которому требуется получить доступ.

Необязательный

Свойство Значение Тип Описание
headers <header-content> Объект JSON Все заголовки, которые необходимо включить в запрос

Пример задания языка и типа.

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

queries <query-parameters> Объект JSON Все параметры запроса, которые необходимо включить в запрос

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.

body <body-content> Объект JSON Содержимое сообщения для отправки в качестве полезных данных с запросом
authentication <authentication-type-and-property-values> Объект JSON Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье. Помимо планировщика поддерживается свойство authority. По умолчанию его значение равно https://management.azure.com/, но также можно использовать другое значение.
retryPolicy > type <retry-behavior> Объект JSON Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе Политики повтора.
<other-action-specific-input-properties> <input-property> Объект JSON Все входные свойства, которые применяются к указанному действию
<other-action-specific-properties> <property-value> Объект JSON Все другие свойства, которые применяются к указанному действию

Пример

Это определение действия получает последние новости, отправив запрос на указанную конечную точку.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "https://mynews.example.com/latest"
   }
}

Действие "Соединить"

Это действие создает строку из всех элементов в массиве и разделяет эти элементы определенным символом разделителя.

"Join": {
   "type": "Join",
   "inputs": {
      "from": <array>,
      "joinWith": "<delimiter>"
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<array> Array Массив или выражение, которое предоставляет исходные элементы. Если задано выражение, заключите его в двойные кавычки.
<delimiter> Единая строка символов Символ, разделяющий каждый элемент в строке

Пример

Предположим, что у вас есть ранее созданная переменная myIntegerArray, содержащая этот массив целых чисел.

[1,2,3,4]

Это определение действия получает значения из переменной с помощью функции variables() в выражении и создает эту строку с теми значениями, которые разделяются запятыми: "1,2,3,4".

"Join": {
   "type": "Join",
   "inputs": {
      "from": "@variables('myIntegerArray')",
      "joinWith": ","
   },
   "runAfter": {}
}

Действие "Анализ JSON"

Это действие создает удобные пользовательские поля или токены из свойств в содержимом JSON. Затем можно получить доступ к этим свойствам в своем приложении логики, используя вместо этого токены. Например, если необходимо использовать выходные данные JSON таких служб как Служебная шина Azure и Azure Cosmos DB, можно включить это действие в своем приложении логики, чтобы иметь возможность легче ссылаться на выходные данные.

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": "<JSON-source>",
         "schema": { "<JSON-schema>" }
      },
      "runAfter": {}
},

Обязательно

Значение Тип Описание
<JSON-source> Объект JSON Содержимое JSON, которое необходимо анализировать
<JSON-schema> Объект JSON Схема JSON, описывающая основное содержимое JSON, которое использует действие для анализа исходного содержимого JSON.

Совет. В Конструкторе Logic Apps можно указать схему или предоставить пример полезных данных, чтобы действие могло создать схему.

Пример

Это определение действия создает маркеры, которые можно использовать в рабочем процессе, но только в действиях, выполняемых после действия Анализ JSON:

FirstName, LastName и Email.

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": {
         "Member": {
            "Email": "Sophie.Owen@contoso.com",
            "FirstName": "Sophie",
            "LastName": "Owen"
         }
      },
      "schema": {
         "type": "object",
         "properties": {
            "Member": {
               "type": "object",
               "properties": {
                  "Email": {
                     "type": "string"
                  },
                  "FirstName": {
                     "type": "string"
                  },
                  "LastName": {
                     "type": "string"
                  }
               }
            }
         }
      }
   },
   "runAfter": { }
},

В этом примере свойство content указывает содержимое JSON для анализа. Также можно предоставить это содержимое JSON как пример полезных данных для создания схемы.

"content": {
   "Member": { 
      "FirstName": "Sophie",
      "LastName": "Owen",
      "Email": "Sophie.Owen@contoso.com"
   }
},

Свойство schema указывает схему JSON, используемую для описания содержимого JSON.

"schema": {
   "type": "object",
   "properties": {
      "Member": {
         "type": "object",
         "properties": {
            "FirstName": {
               "type": "string"
            },
            "LastName": {
               "type": "string"
            },
            "Email": {
               "type": "string"
            }
         }
      }
   }
}

Действие запроса

Это действие создает массив из элементов другого массива на основании указанного условия или фильтра.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": <array>,
      "where": "<condition-or-filter>"
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<array> Array Массив или выражение, которое предоставляет исходные элементы. Если задано выражение, заключите его в двойные кавычки.
<condition-or-filter> Строка Условие, используемое для фильтрации элементов в массиве источника

Примечание. Если нет значений, соответствующих условию, действие создает пустой массив.

Пример

Это определение действия создает массив, содержащий значения, превышающие указанное значение, которое равно двум.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": [ 1, 3, 0, 5, 4, 2 ],
      "where": "@greater(item(), 2)"
   }
}

Действие ответа

Это действие создает полезные данные для ответа на запрос HTTP.

"Response" {
    "type": "Response",
    "kind": "http",
    "inputs": {
        "statusCode": 200,
        "headers": { <response-headers> },
        "body": { <response-body> }
    },
    "runAfter": {}
},

Обязательно

Значение Тип Описание
<response-status-code> Целочисленный тип Код состояния HTTP, отправленный на входящий запрос. Код по умолчанию является "200 OK", но это может быть любой допустимый код состояния, который начинается с 2xx, 4xx или 5xx, но не с 3xxx.

Необязательный

Значение Тип Описание
<response-headers> Объект JSON Один или несколько заголовков для включения в ответ
<response-body> Различные Текст ответа, который может быть строкой, объектом JSON или даже двоичным содержимым из предыдущего действия

Пример

Это определение действия создает ответ на HTTP-запрос с заданным кодом статуса, текстом сообщения и заголовком сообщения.

"Response": {
   "type": "Response",
   "inputs": {
      "statusCode": 200,
      "body": {
         "ProductID": 0,
         "Description": "Organic Apples"
      },
      "headers": {
         "x-ms-date": "@utcnow()",
         "content-type": "application/json"
      }
   },
   "runAfter": {}
}

Ограничения

В отличии от других, действие Ответ имеет специальные ограничения.

  • Рабочий процесс может использовать действие Ответ только тогда, когда он начинается с триггера запроса HTTP, это значит, что рабочий процесс должен запускаться HTTP-запросом.

  • Рабочий процесс может использовать действие Ответ в любом месте, кроме как внутри циклов Foreach, Until, включая последовательные циклы и параллельные ветви.

  • Первоначальный запрос получает ответ рабочего процесса только когда все действия, требуемые действием Ответ, завершены в пределах времени ожидания HTTP-запроса.

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

  • Когда рабочий процесс использует действие Ответ и синхронный шаблон ответа, он не может использовать команду splitOn в определении триггера, потому что эта команда создает несколько запусков. Проверьте этот случай, когда используется метод PUT, и если значение равно true, вернется ответ "Недопустимый запрос".

    В противном случае, если рабочий процесс использует команду splitOn и действие Ответ, рабочий процесс выполняется асинхронно и немедленно возвращает ответ "202 ACCEPTED".

  • Когда выполнение рабочего процесса достигает действия Ответ, но входящий запрос уже получил ответ, действие Ответ помечается как Failed (Сбой) из-за конфликта. И в результате выполнения приложения логики также отмечается состояние Failed (Сбой).

Выбор действия

Это действие создает массив с объектами JSON путем преобразования элементов из другого массива на основе указанного сопоставления. Выходной и исходный массив всегда имеет одинаковое количество элементов. Несмотря на то что невозможно изменить количество объектов в выходном массиве, можно добавлять или удалять свойства и их значения в этих объектах. Свойство select указывает по меньшей мере одну пару "ключ — значение", определяющую сопоставление для преобразования элементов в исходном массиве. Пара "ключ — значение" представляет свойство и его значение во всех объектах выходного массива.

"Select": {
   "type": "Select",
   "inputs": {
      "from": <array>,
      "select": { 
          "<key-name>": "<expression>",
          "<key-name>": "<expression>"        
      }
   },
   "runAfter": {}
},

Обязательно

Значение Тип Описание
<array> Array Массив или выражение, которое предоставляет исходные элементы. Убедитесь, что выражение заключено в двойные кавычки.

Примечание. Если исходный массив пуст, это действие создает пустой массив.

<key-name> Строка Имя свойства, назначенное в результате <expression>

Чтобы добавить новое свойство во всех объектах в выходном массиве, предоставьте <key-name> для этого свойства и объект <expression> для значения свойства.

Чтобы удалить свойство из всех объектов в массиве, опустите <key-name> для этого свойства.

<expression> Строка Выражение, которое преобразует элемент в исходном массиве и присваивает результат для <key-name>

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

Пример

Это определение действия создает массив объектов JSON из массива целых чисел. Действие повторяется с исходным массивом, получает каждое целочисленное значение с помощью выражения @item() и присваивает каждому значению свойство "number" в каждом объекте JSON.

"Select": {
   "type": "Select",
   "inputs": {
      "from": [ 1, 2, 3 ],
      "select": { 
         "number": "@item()" 
      }
   },
   "runAfter": {}
},

Массив, который создает это действие.

[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]

Чтобы использовать этот массив выходных данных в других действиях, передайте этот результат в действие Создать.

"Compose": {
   "type": "Compose",
   "inputs": "@body('Select')",
   "runAfter": {
      "Select": [ "Succeeded" ]
   }
},

Затем можно использовать вывод из действия Создать в других действиях, например Office 365 Outlook: отправить по электронной почте.

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "@{outputs('Compose')}",
         "Subject": "Output array from Select and Compose actions",
         "To": "<your-email@domain>"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "post",
      "path": "/Mail"
   },
   "runAfter": {
      "Compose": [ "Succeeded" ]
   }
},

Действие таблицы

Это действие создает таблицу CSV или HTML из массива. Для массивов с объектами JSON это действие автоматически создает заголовки столбцов с именами свойств объектов. Для массивов с другими типами данных необходимо указать заголовки столбцов и значений. Например, этот массив содержит свойства ID и Product_Name, которые могут использовать это действие для заголовков столбцов.

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

"Create_<CSV | HTML>_table": {
   "type": "Table",
   "inputs": {
      "format": "<CSV | HTML>",
      "from": <array>,
      "columns": [ 
         {
            "header": "<column-name>",
            "value": "<column-value>"
         },
         {
            "header": "<column-name>",
            "value": "<column-value>"
         } 
      ]
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<CSV or HTML> Строка Формат таблицы, которую необходимо создать
<array> Array Массив или выражение, которое предоставляет исходные элементы для таблицы

Примечание. Если исходный массив пуст, это действие создает пустую таблицу.

Необязательный

Чтобы задать или настроить заголовки столбцов и значения, используйте массив columns. Когда пары header-value имеют одинаковое имя заголовка, их значения отображаются в том же столбце под этим заголовком. В противном случае каждый уникальный заголовок определяет уникальный столбец.

Значение Тип Описание
<column-name> Строка Имя заголовка столбца
<column-value> Любой Значение в столбце

Пример 1

Предположим, что имеется ранее созданная переменная myItemArray, содержащая в данный момент этот массив.

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

Это определение действия создает таблицу CSV из переменной myItemArray. Выражение, использующее свойство from, возвращает массив из myItemArray с помощью функции variables().

"Create_CSV_table": {
   "type": "Table",
   "inputs": {
      "format": "CSV",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

Таблица CSV, которая создает это действие.

ID,Product_Name 
0,Apples 
1,Oranges 

Пример 2

Это определение действия создает таблицу HTML из переменной myItemArray. Выражение, использующее свойство from, возвращает массив из myItemArray с помощью функции variables().

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

Таблица HTML, которая создает это действие.

IDProduct_name
0Яблоки
1Апельсины

Пример 3

Это определение действия создает таблицу HTML из переменной myItemArray. Однако этот пример переопределяет имена заголовков столбцов по умолчанию с помощью Stock_ID и Description и добавляет слово Organic к значениям в столбце Description.

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')",
      "columns": [ 
         {
            "header": "Stock_ID",
            "value": "@item().ID"
         },
         {
            "header": "Description",
            "value": "@concat('Organic ', item().Product_Name)"
         }
      ]
    },
   "runAfter": {}
},

Таблица HTML, которая создает это действие.

Stock_IDОписание
0Органические яблоки
1Органические апельсины

Действие terminate

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

"Terminate": {
   "type": "Terminate",
   "inputs": {
       "runStatus": "<status>",
       "runError": {
            "code": "<error-code-or-name>",
            "message": "<error-message>"
       }
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<status> Строка Состояние для возврата запуска: Failed (Сбой), Cancelled (Отменено) или Succeeded (Успешно)

Необязательный

Свойства для объекта runStatus применяются только в том случае, если свойству runStatus присвоено состояние Failed (Сбой).

Значение Тип Описание
<error-code-or-name> Строка Код или имя ошибки
<error-message> Строка Сообщение или текст, описывающий ошибку и любые действия, которые пользователь приложения может предпринять

Пример

Это определение действия останавливает выполнение рабочего процесса, устанавливает статус запуска как Failed (Сбой) и возвращает состояние, код ошибки и сообщение об ошибке.

"Terminate": {
    "type": "Terminate",
    "inputs": {
        "runStatus": "Failed",
        "runError": {
            "code": "Unexpected response",
            "message": "The service received an unexpected response. Please try again."
        }
   },
   "runAfter": {}
}

Действие wait

Это действие приостанавливает выполнение рабочего процесса на указанный период времени или до указанного времени, но не для обоих.

Указанный интервал

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": <number-of-units>,
         "unit": "<interval>"
      }
   },
   "runAfter": {}
},

Указанное время

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "<date-time-stamp>"
      }
   },
   "runAfter": {}
},

Обязательно

Значение Тип Описание
<number-of-units> Целочисленный тип Число единиц ожидания для действия Задержка
<interval> Строка Для действия Задержка период ожидания составляет: "секунда", "минута", "час", "день", "неделя", "месяц"
<date-time-stamp> Строка Дата и время возобновления исполнения для действия Задержка до. Для этого значения необходимо использовать дату и время в формате UTC.

Пример 1

Это определение действия приостанавливает рабочий процесс на 15 минут.

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": 15,
         "unit": "Minute"
      }
   },
   "runAfter": {}
},

Пример 2

Это определение действия приостанавливает рабочий процесс до указанного времени.

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "2017-10-01T00:00:00Z"
      }
   },
   "runAfter": {}
},

Действие workflow

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

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

  • Триггер делает вложенное приложение логики вызываемым, наподобие триггеров Запрос или HTTP

  • Та же подписка Azure, что и родительское приложение логики

  • Чтобы использовать выходы из вложенного приложения логики в родительском приложении логики, вложенное приложение логики должно иметь действие Ответ

"<nested-logic-app-name>": {
   "type": "Workflow",
   "inputs": {
      "body": { "<body-content" },
      "headers": { "<header-content>" },
      "host": {
         "triggerName": "<trigger-name>",
         "workflow": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
         }
      }
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<nested-logic-app-name> Строка Имя приложения логики, которое требуется вызвать
<trigger-name> Строка Имя триггера вложенного приложения логики, которое необходимо вызвать
<Azure-subscription-ID> Строка Идентификатор подписки Azure вложенного приложения логики
<Azure-resource-group> Строка Группа ресурсов Azure вложенного приложения логики
<nested-logic-app-name> Строка Имя приложения логики, которое требуется вызвать

Необязательный

Значение Тип Описание
<header-content> Объект JSON Все заголовки для отправки с вызовом
<body-content> Объект JSON Любое содержимое сообщения для отправки с вызовом

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

Выходные данные этого действия различаются в зависимости от действия "Ответ" вложенного приложения логики. Если вложенное приложение логики не включает действие "Ответ", выходные данные будут пустыми.

Пример

После успешного завершения действия Start_search это определение действия рабочего процесса вызывает другое приложение логики с именем Get_product_information, которое передается в заданные входы.

"actions": {
   "Start_search": { <action-definition> },
   "Get_product_information": {
      "type": "Workflow",
      "inputs": {
         "body": {
            "ProductID": "24601",
         },
         "host": {
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
            "triggerName": "Find_product"
         },
         "headers": {
            "content-type": "application/json"
         }
      },
      "runAfter": { 
         "Start_search": [ "Succeeded" ]
      }
   }
},

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

Действие foreach

Это циклическое действие выполняет итерацию по массиву и действия с каждым элементом массива. По умолчанию цикл Foreach выполняется в параллельном режиме, вплоть до максимального числа циклов. Это максимальное значение указано в разделе Ограничения и конфигурация. Узнайте также, как создавать циклы "for each".

"For_each": {
   "type": "Foreach",
   "actions": { 
      "<action-1>": { "<action-definition-1>" },
      "<action-2>": { "<action-definition-2>" }
   },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": <count>
      }
    },
    "operationOptions": "<operation-option>"
}

Обязательно

Значение Тип Описание
<action-1...n> Строка Имена действий, выполняемых над каждым элементом массива
<action-definition-1...n> Объект JSON Определения действий, которые выполняются
<for-each-expression> Строка Выражение, которое ссылается на каждый элемент в указанном массиве

Необязательный

Значение Тип Описание
<count> Целочисленный тип По умолчанию итерации цикла "for each" запускаются одновременно или параллельно до ограничения по умолчанию. Чтобы изменить это ограничение, задав новое значение <count>, см. раздел Изменение параллелизма цикла Foreach.
<operation-option> Строка Чтобы запустить цикл Foreach последовательно, а не параллельно, задайте <operation-option> для Sequential или <count> для 1, но не для обоих. Дополнительные сведения см. в разделе Последовательный запуск циклов Foreach.

Пример

Этот цикл Foreach отправляет электронное письмо для каждого элемента массива, содержащего вложения из входящего письма. Цикл отправляет электронное письмо, включая вложение, пользователю, который рассматривает вложение.

"For_each": {
   "type": "Foreach",
   "actions": {
      "Send_an_email": {
         "type": "ApiConnection",
         "inputs": {
            "body": {
               "Body": "@base64ToString(items('For_each')?['Content'])",
               "Subject": "Review attachment",
               "To": "Sophie.Owen@contoso.com"
                },
            "host": {
               "connection": {
                  "id": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {}
      }
   },
   "foreach": "@triggerBody()?['Attachments']",
   "runAfter": {}
}

Чтобы указать только массив, который передается в качестве выходных данных из триггера, это выражение получает массив <array-name> из текста триггера. Чтобы избежать ошибок при отсутствии массива, в этом выражении используется оператор ?.

@triggerBody()?['<array-name>']

Действие If

Это действие, которое является условным оператором, оценивает выражение, которое представляет условие и запускает другую ветвь, основанную на том, является ли условие истинным или ложным. Если условие истинное, ему будет присвоено состояние Succeeded (Успешно). Дополнительные сведения см. в разделе Создание условных операторов, которые управляют действиями в рабочих процессах Azure Logic Apps.

"Condition": {
   "type": "If",
   "expression": { "<condition>" },
   "actions": {
      "<action-1>": { "<action-definition>" }
   },
   "else": {
      "actions": {
        "<action-2>": { "<action-definition" }
      }
   },
   "runAfter": {}
}
Значение Тип Описание
<condition> Объект JSON Условие, которое может быть выражением, для оценки
<action-1> Объект JSON Действие выполнится когда <condition> будет истинное
<action-definition> Объект JSON Определение действия
<action-2> Объект JSON Действие выполнится когда <condition> будет ложным

Действия в объектах actions или else получают следующие статусы.

  • "Succeeded", если они запускаются и выполняются успешно;
  • "Failed", если они запускаются, но завершаются ошибкой;
  • "Skipped", если не запускается соответствующая ветвь.

Пример

Это условие указывает, что когда целочисленная переменная имеет значение больше нуля, рабочий процесс проверяет веб-сайт. Если переменная равна нулю или меньше, рабочий процесс проверяет другой веб-сайт.

"Condition": {
   "type": "If",
   "expression": {
      "and": [ {
         "greater": [ "@variables('myIntegerVariable')", 0 ] 
      } ]
   },
   "actions": { 
      "HTTP - Check this website": {
         "type": "Http",
         "inputs": {
         "method": "GET",
            "uri": "http://this-url"
         },
         "runAfter": {}
      }
   },
   "else": {
      "actions": {
         "HTTP - Check this other website": {
            "type": "Http",
            "inputs": {
               "method": "GET",
               "uri": "http://this-other-url"
            },
            "runAfter": {}
         }
      }
   },
   "runAfter": {}
}

Использование выражений условиями

Ниже приведены некоторые примеры, показывающие, как можно использовать выражения в условиях.

JSON Результат
expression: @parameters('<hasSpecialAction>') Только для логических выражений условие передается для любого истинного значения.

Чтобы преобразовать другие типы в логический, используйте следующие функции: empty() или equals().

expression: @greater(actions('<action>').output.value, parameters('<threshold>')) Для сравнения функций действие выполняется только тогда, когда результат <action> больше значения <threshold>.
expression: @or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100)) Для логических функций и создания вложенных логических выражений действие выполняется, когда результат <action> больше значения <threshold> или меньше 100.
expression: @equals(length(actions('<action>').outputs.errors), 0)) Можно использовать функции массива для проверки того, имеет ли массив какие-либо элементы. Действие выполняется, если массив errors пустой.

Действие scope

Логические группы этого действия в областях, которые получают свое состояние после завершения действий в той области. Затем можно использовать статус области, чтобы определить, выполняются ли другие действия. Дополнительные сведения см. в разделе Создание областей, которые выполняют действия рабочего процесса на основе состояния группы в Azure Logic Apps.

"Scope": {
   "type": "Scope",
   "actions": {
      "<inner-action-1>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<inner-action-2>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   }
}

Обязательно

Значение Тип Описание
<inner-action-1...n> Объект JSON Одно или несколько действий, которые выполняются в области
<action-inputs> Объект JSON Входные данные для каждого действия

Действие switch

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

"Switch": {
   "type": "Switch",
   "expression": "<expression-object-or-token>",
   "cases": {
      "Case": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      },
      "Case_2": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      }
   },
   "default": {
      "actions": {
         "<default-action-name>": { "<default-action-definition>" }
      }
   },
   "runAfter": {}
}

Обязательно

Значение Тип Описание
<expression-object-or-token> Различается Выражение, объект JSON или маркер безопасности для оценки
<action-name> Строка Имя действия для запуска в случае соответствия
<action-definition> Объект JSON Определение действия для запуска в случае соответствия
<matching-value> Различается Значение для сравнения с результатом вычисления

Необязательный

Значение Тип Описание
<default-action-name> Строка Имя действия по умолчанию для запуска, если не существует подходящего случая
<default-action-definition> Объект JSON Определение действия по умолчанию для запуска, если не существует подходящего случая

Пример

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

"Switch": {
   "type": "Switch",
   "expression": "@body('Send_approval_email')?['SelectedOption']",
   "cases": {
      "Case": {
         "actions": {
            "Send_an_email": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your approval.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}
         },
         "case": "Approve"
      },
      "Case_2": {
         "actions": {
            "Send_an_email_2": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your response.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}     
         },
         "case": "Reject"
      }
   },
   "default": {
      "actions": { 
         "Send_an_email_3": { 
            "type": "ApiConnection",
            "inputs": {
               "Body": "Please respond with either 'Approve' or 'Reject'.",
               "Subject": "Please respond", 
               "To": "Sophie.Owen@contoso.com"
            },
            "host": {
               "connection": {
                  "name": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {} 
      }
   },
   "runAfter": {
      "Send_approval_email": [ 
         "Succeeded"
      ]
   }
}

Действие Until

Это действие цикла содержит действия, которые выполняются, пока указанное условие имеет истинное значение. После завершения работы всех других действий на последнем этапе цикл проверяет условие. Можно включить несколько действий в объект "actions", и действие должно определить как минимум одно ограничение. Дополнительные сведения см. в разделе Цикл until.

 "Until": {
   "type": "Until",
   "actions": {
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   },
   "expression": "<condition>",
   "limit": {
      "count": <loop-count>,
      "timeout": "<loop-timeout>"
   },
   "runAfter": {}
}
Значение Тип Описание
<action-name> Строка Имя действия, которое необходимо выполнить внутри цикла
<action-type> Строка Тип действия, которое необходимо запустить
<action-inputs> Различные Входные данные для выполнения действия
<condition> Строка Условие или выражение для оценки после всех действий в завершении цикла
<loop-count> Целочисленный тип Предел максимального количества циклов, которое может выполнить действие. Дополнительные сведения о предельном и максимальном предельном значениях по умолчанию см. в разделе Ограничения и настройка Azure Logic Apps.
<loop-timeout> Строка Предел времени работы цикла, в течение которого цикл может работать. Значение timeout по умолчанию равно PT1H, которое требует формат ISO 8601.

Примечание

Если выражение зависит от выходных данных любого действия в цикле "Until", убедитесь, что готовы принять во внимание все сбои, которые могут произойти во результате выполнения.

Пример

Это определение действия цикла отправляет HTTP-запрос по указанному URL-адресу до тех пор, пока не будет выполнено одно из этих условий.

  • Запрос возвращает ответ с состоянием кода "200 OK".
  • Цикл выполнялся 60 раз.
  • Цикл был выполнен в течение одного часа.
 "Run_until_loop_succeeds_or_expires": {
    "type": "Until",
    "actions": {
        "HTTP": {
            "type": "Http",
            "inputs": {
                "method": "GET",
                "uri": "http://myurl"
            },
            "runAfter": {}
        }
    },
    "expression": "@equals(outputs('HTTP')['statusCode'], 200)",
    "limit": {
        "count": 60,
        "timeout": "PT1H"
    },
    "runAfter": {}
}

Веб-перехватчики и подписки

Триггеры и действия на основе веб-перехватчика не регулярно проверяют конечные точки, но ждут конкретных событий или данных на этих конечных точках. Эти триггеры и действия подписываются на конечные точки, предоставляя URL-адрес обратного вызова, куда конечная точка может отправлять ответы.

Вызов subscribe выполняется при любом изменении рабочего процесса, например когда происходит обновление учетных данных или изменяются входные параметры для триггера или действия. Этот вызов использует те же параметры, что и стандартные действия HTTP.

Вызов unsubscribe выполняется автоматически, когда при выполнении операции триггер или действие становится недопустимым, например:

  • удаление или отключение триггера;
  • удаление или отключение рабочего процесса;
  • удаление или отключение подписки.

Для поддержки этих вызовов выражение @listCallbackUrl() возвращает уникальный "URL-адрес обратного вызова" для этого триггера или действия. Этот URL-адрес представляет собой уникальный идентификатор для конечных точек, использующих REST API службы. Параметры этой функции совпадают с параметрами триггера веб-перехватчика или действия.

Изменение асинхронной длительности

Для триггеров и действий можно ограничить длительность для асинхронного шаблона определенным интервалом времени, добавив свойство limit.timeout. Таким образом, если действие не закончилось, когда интервал истекает, статус действия помечается Cancelled с кодом ActionTimedOut. Свойство timeout использует формат ISO 8601.

"<trigger-or-action-name>": {
   "type": "Workflow | Webhook | Http | ApiConnectionWebhook | ApiConnection",
   "inputs": {},
   "limit": {
      "timeout": "PT10S"
   },
   "runAfter": {}
}

Параметры конфигурации среды выполнения

Вы можете изменить поведение среды выполнения по умолчанию для триггеров и действий путем добавления свойств runtimeConfiguration в триггер или определение действия.

Свойство Тип Описание Триггер или действие
runtimeConfiguration.concurrency.runs Целочисленный тип Измените предел по умолчанию для количества экземпляров рабочего процесса, которые могут выполняться одновременно или в параллельном режиме. Изменение данного значения поможет ограничить количество запросов, которые получают серверные системы.

Параметр свойства runs, равный 1, работает так же, как параметр свойства operationOptions, равный SingleInstance. Можно установить любое свойство, но не оба сразу.

Дополнительные сведения об изменении предела по умолчанию см. в раздел об изменении параллелизма триггера или о последовательном запуске экземпляров.

Все триггеры
runtimeConfiguration.concurrency.maximumWaitingRuns Целочисленный тип Измените предел по умолчанию для количества экземпляров рабочего процесса, ожидающих выполнения при достижении приложением логики максимального числа параллельных экземпляров.

Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.

Все триггеры
runtimeConfiguration.concurrency.repetitions Целочисленный тип Измените предел по умолчанию для количества итераций цикла "For each", которые могут выполняться одновременно или в параллельном режиме.

Параметр свойства repetitions, равный 1, работает так же, как параметр свойства operationOptions, равный SingleInstance. Можно установить любое свойство, но не оба сразу.

Дополнительные сведения об изменении предела по умолчанию см. в разделе Изменение параллелизма цикла Foreach или Последовательный запуск циклов Foreach.

Действие:

Foreach

runtimeConfiguration.paginationPolicy.minimumItemCount Целочисленный тип Для определенных действий, которые поддерживают и имеют включенную разбивку на страницы, это значение указывает минимальное число получаемых результатов.

Сведения о включении разбивки на страницы см. в разделе Получение большого объема данных, элементов или результатов с помощью разбивки на страницы

Действие: различные действия
runtimeConfiguration.secureData.properties Array Во многих триггерах и действиях данные параметры существуют для защиты в журнале выполнения приложения логики входных данных или выходных данных, либо и того, и другого.

Дополнительные сведения о защите этих данных см. в разделе Скрытие входных и выходных данных из журнала выполнения.

Большинство триггеров и действий
runtimeConfiguration.staticResult Объект JSON Для действий, которые поддерживают и имеют включенный статический результат, объект staticResult имеет следующие атрибуты:

- name, который ссылается на имя определения статического результата текущего действия, отображающегося внутри атрибута staticResults в атрибуте definition рабочего процесса приложения логики. Дополнительные сведения см. в разделе Статические результаты — справочник по схеме для языка определения рабочего процесса.

- staticResultOptions, который указывает, являются ли статические результаты текущего действия Enabled, или нет.

Сведения о включении статических результатов см. в статье Тестирование приложений логики с помощью макетных данных путем настройки статических результатов

Действие: различные действия

Варианты операций

Можно изменить поведение по умолчанию для триггеров и действий со свойством operationOptions в триггере или определении действия.

Параметр операции Тип Описание Триггер или действие
DisableAsyncPattern Строка Запускайте действия на основе HTTP синхронно, а не асинхронно.

Чтобы задать этот параметр, см. в разделе Синхронное выполнение действия.

Действия:

ApiConnection,
HTTP,
Ответ

IncludeAuthorizationHeadersInOutputs Строка Для приложений логики, которые разрешают открытую проверку подлинности Azure Active Directory (Azure AD OAuth) для авторизации доступа входящих вызовов к конечной точке триггера на основе запроса, включите заголовок Authorization из маркера доступа OAuth в выходные данные триггера. Дополнительные сведения см. в разделе Включение заголовка "Authorization" в выходные данные триггера запроса. Триггеры:

Запрос,
HTTP Webhook

Sequential Строка Запускайте итерации цикла Foreach по одной, а не одновременно параллельно.

Этот параметр работает так же, как параметр свойства runtimeConfiguration.concurrency.repetitions, равный 1. Можно установить любое свойство, но не оба сразу.

Дополнительные сведения о задании этого параметра см. в разделе Последовательный запуск циклов Foreach.

Действие:

Foreach

SingleInstance Строка Запустите триггер для каждого экземпляра приложения логики последовательно и дождитесь завершения предыдущего активного запуска, прежде чем запускать следующий экземпляр приложения логики.

Этот параметр работает так же, как параметр свойства runtimeConfiguration.concurrency.runs, равный 1. Можно установить любое свойство, но не оба сразу.

Чтобы задать этот параметр, см. раздел Последовательная активизация экземпляров.

Все триггеры
SuppressWorkflowHeaders Строка Не отправляйте заголовки метаданных x-ms-* в исходящих запросах. По умолчанию служба Azure Logic Apps включает дополнительные заголовки метаданных с префиксом x-ms- в имени заголовка, который является частью исходящих запросов. Но некоторые устаревшие службы не принимают запросы с дополнительными неизвестными заголовками, что приводит к сбою запросов. Действия:

HTTP,
Функция,
APIManagement

SuppressWorkflowHeadersOnResponse Строка Не отправляйте заголовки метаданных x-ms-* в ответах на исходящие запросы триггеров. По умолчанию служба Azure Logic Apps отправляет ответы на входящие запросы, которые включают дополнительные заголовки метаданных с префиксом x-ms- в имени заголовка. Но некоторые устаревшие службы не принимают запросы или ответы с дополнительными неизвестными заголовками, что приводит к сбою запросов. Триггеры:

Запрос,
HTTP Webhook

Изменение параллелизма триггера

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

При включении управления параллелизмом триггеров экземпляры запускаются параллельно до ограничения по умолчанию. Чтобы изменить предел по умолчанию, можно использовать либо редактор просмотра кода, либо Конструктор Logic Apps, поскольку изменение параметра параллелизма с помощью конструктора добавляет или обновляет свойство runtimeConfiguration.concurrency.runs в базовом определении триггера и наоборот. Это свойство определяет максимальное число экземпляров рабочего процесса, которые могут выполняться параллельно.

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

  • После включения управления параллелизмом его невозможно будет отключить.

  • Если включен параллелизм триггеров, ограничение SplitOn для массивов разбивки значительно сокращается. Если число элементов превышает это ограничение, функция SplitOn отключается.

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

    • Чтобы прервать это состояние, отмените самые ранние из еще выполняющихся экземпляров.

      1. В меню приложения логики выберите Обзор.

      2. В разделе Журнал запусков выберите самый ранний экземпляр, который все еще выполняется, например:

        Выберите самый ранний выполняющийся экземпляр

        Совет

        Чтобы просмотреть только те экземпляры, которые еще работают, откройте список Все и выберите пункт Выполняется.

      3. В разделе Выполнение приложения логики щелкните Отменить выполнение.

        Выберите самый ранний выполняющийся экземпляр

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

      1. В действии приложения логики, в котором нужно добавить время ожидания, в правом верхнем углу нажмите кнопку с многоточием ( ... ), а затем выберите Параметры.

        Открытие параметров действия

      2. В разделе Время ожидания укажите длительность времени ожидания в формате ISO 8601.

        Укажите длительность ожидания

  • Для последовательного запуска приложения логики задайте для параллелизма триггера значение 1 либо с помощью редактора представления кода, либо конструктора. Убедитесь, что для свойства триггера operationOptions в редакторе представления кода не задано значение SingleInstance. В противном случае возникнет ошибка проверки. Дополнительные сведения см. в разделе Последовательная активизация экземпляров.

Изменение в представлении кода

В определении базового триггера добавьте свойство runtimeConfiguration.concurrency.runs и задайте значение в зависимости от ограничений параллелизма триггера. Для последовательного запуска рабочего процесса задайте для свойства значение 1.

Этот пример ограничивает число параллельных запусков до 10 экземпляров:

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 10
      }
   }
}

Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.

Изменение в Конструкторе Logic Apps

  1. В правом верхнем углу окна действия нажмите кнопку с многоточием ( ), а затем выберите Параметры.

  2. В разделе Управление параллелизмом установите для параметра Ограничение значение Вкл.

  3. Перетащите ползунок Степень параллелизма к необходимому значению. Чтобы выполнять приложение логики в последовательном режиме, перетащите ползунок до значения 1.

Изменение параллелизма цикла Foreach

По умолчанию итерации цикла "For each" запускаются одновременно или параллельно. Это означает, что каждая итерация начнет выполняться до завершения предыдущей итерации. Однако количество одновременно выполняемых экземпляров имеет ограничение по умолчанию. Если количество параллельно выполняющихся итераций достигает этого предела, все остальные итерации должны ожидать выполнения.

Чтобы изменить предел по умолчанию, можно использовать либо редактор просмотра кода, либо Конструктор Logic Apps, поскольку изменение параметра параллелизма с помощью конструктора добавляет или обновляет свойство runtimeConfiguration.concurrency.repetitions в базовом определении действия Foreach и наоборот. Это свойство определяет максимальное число итераций, которые могут выполняться параллельно.

Примечание

Если вы установите действие Foreach для запуска последовательно с помощью конструктора или редактора представления кода, не устанавливайте свойство operationOptions действия равное Sequential в редакторе представления кода. В противном случае возникнет ошибка проверки. Дополнительные сведения см. в разделе Последовательный запуск циклов Foreach.

Изменение в представлении кода

В базовом определении "For Each" добавьте или обновите свойство runtimeConfiguration.concurrency.repetitions, которое может иметь значение в диапазоне от 1 до 50.

Ниже приведен пример, который ограничивает параллельные выполнения до 10 итераций.

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 10
      }
   }
}

Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.

Изменение в Конструкторе Logic Apps

  1. В правом верхнем углу в окне действия For each нажмите кнопку с многоточием ( ... ), а затем выберите Параметры.

  2. В разделе Управление параллелизмом для параметра Управление параллелизмом задайте значение Вкл.

  3. Перетащите ползунок Степень параллелизма к необходимому значению. Чтобы выполнять приложение логики в последовательном режиме, перетащите ползунок до значения 1.

Изменение предела ожидающих запусков

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

Количество ожидающих запусков также ограничено по умолчанию. Когда количество ожидающих запусков достигает этого предела, подсистема Logic Apps перестает принимать новые запуски. Триггеры запроса и веб-перехватчика возвращают 429 ошибку, а повторяющиеся триггеры начинают пропускать попытки опроса.

Можно не только изменить ограничение по умолчанию для параллелизма триггеров, но также и ограничение по умолчанию для ожидающих выполнения экземпляров. В базовом определении триггера добавьте свойство runtimeConfiguration.concurrency.maximumWaitingRuns, которое может иметь значение в диапазоне от 1 до 100.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "maximumWaitingRuns": 50
      }
   }
}

Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.

Последовательная активация экземпляров

Чтобы запустить каждый экземпляр приложения логики только после завершения предыдущего экземпляра, установите триггер в значение последовательного запуска. Вы можете использовать либо редактор просмотра кода, либо конструктор Logic Apps, поскольку изменение параметра параллелизма с помощью конструктора также добавляет или обновляет свойство runtimeConfiguration.concurrency.runs в базовом определении триггера и наоборот.

Примечание

Если вы настроите триггер для последовательного запуска с помощью конструктора или редактора представления кода, не устанавливайте свойство operationOptions триггера равное Sequential в редакторе представления кода. В противном случае возникнет ошибка проверки.

Изменение в представлении кода

В определении триггера задайте одно из этих свойств, но не оба.

Задайте для свойства runtimeConfiguration.concurrency.runs значение 1.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 1
      }
   }
}

-или-

Задайте для свойства operationOptions значение SingleInstance.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "operationOptions": "SingleInstance"
}

Дополнительные сведения см. в разделах Настройки конфигурации среды выполнения и Настройки операций.

Изменение в Конструкторе Logic Apps

  1. В правом верхнем углу окна действия нажмите кнопку с многоточием ( ), а затем выберите Параметры.

  2. В разделе Управление параллелизмом установите для параметра Ограничение значение Вкл.

  3. Перетащите ползунок Степень параллелизма на номер 1.

Последовательный запуск циклов Foreach

Чтобы запустить итерацию цикла Foreach только после завершения предыдущей итерации, настройте последовательное выполнение каждого действия. Вы можете использовать либо редактор просмотра кода, либо конструктор Logic Apps, поскольку изменение действия параллелизма с помощью конструктора также добавляет или обновляет свойство runtimeConfiguration.concurrency.repetitions в базовом определении действия и наоборот.

Примечание

Если вы настроите последовательное выполнение действия Foreach для запуска с помощью конструктора или редактора представления кода, не устанавливайте свойство operationOptions действия равным Sequential в редакторе представления кода. В противном случае возникнет ошибка проверки.

Изменение в представлении кода

В определении действия задайте один из этих свойств, но не оба.

Задайте для свойства runtimeConfiguration.concurrency.repetitions значение 1.

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 1
      }
   }
}

-или-

Задайте для свойства operationOptions значение Sequential.

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "operationOptions": "Sequential"
}

Дополнительные сведения см. в разделах Настройки конфигурации среды выполнения и Настройки операций.

Изменение в Конструкторе Logic Apps

  1. В правом верхнем углу в окне действия For each нажмите кнопку с многоточием ( ... ), а затем выберите Параметры.

  2. В разделе Управление параллелизмом для параметра Управление параллелизмом задайте значение Вкл.

  3. Перетащите ползунок Степень параллелизма на номер 1.

Выполнение действий в шаблоне синхронной операции

По умолчанию действия HTTP Action и APIConnection в Azure Logic Apps соответствуют стандартному шаблону асинхронных операций, а действие "Ответ" (Response) соответствует шаблону синхронных операций. Асинхронная модель указывает, что после того, как действие HTTP вызовет или отправит запрос в конечную точку, службу, систему или API, получатель немедленно возвращает ответ 202 ACCEPTED. Этот код подтверждает, что получатель принял запрос, но еще не завершил обработку. Ответ может включать заголовок location, указывающий URL-адрес и идентификатор обновления, который вызывающая сторона может использовать для непрерывного опроса или проверки состояния асинхронного запроса до тех пор, пока получатель не прекратит обработку и не вернет сообщение об успешном завершении 200 OK или другой ответ, отличный от 202. Дополнительные сведения см. в разделе Обеспечение автономности микрослужб через интеграцию асинхронных микрослужб.

  • В конструкторе приложений логики действия HTTP, APIConnection и Response имеют параметр Асинхронная модель. Этот параметр указывает, что вызывающая сторона не ждет завершения обработки и может перейти к следующему действию, но продолжит проверку состояния, пока обработка не будет остановлена. При отключенном параметре вызывающая сторона будет ожидать завершения обработки перед переходом к следующему действию. Чтобы найти этот параметр, выполните следующие шаги.

    1. В строке заголовка действия HTTP нажмите кнопку с многоточием ( ... ), чтобы открыть параметры действия.

    2. Найдите параметр Асинхронная модель.

      Параметр "Асинхронная модель"

  • В определении базовой нотации объекта JavaScript (JSON) действия HTTP действия и APIConnection косвенным образом соответствуют модели асинхронной операции.

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

В этих случаях можно запустить синхронное выполнение действий с помощью следующих параметров:

Выключение параметра Асинхронная модель

  1. В конструкторе приложений логики в строке заголовка действия HTTP нажмите кнопку с многоточием ( ... ), чтобы открыть параметры действия.

  2. Найдите параметр Асинхронная модель, установите для него значение Выкл. , если он включен, и нажмите кнопку Готово.

    Выключение параметра "Асинхронная модель"

Отключение асинхронной модели в определении JSON для действия

В базовом определении JSON действия добавьте и установите свойство "operationOptions" в значение "DisableAsyncPattern" в секции действия "inputs", например:

"<some-long-running-action>": {
   "type": "Http",
   "inputs": { "<action-inputs>" },
   "operationOptions": "DisableAsyncPattern",
   "runAfter": {}
}

Проверка подлинности триггеров и действий

Конечные точки HTTP и HTTPS поддерживают различные виды проверки подлинности. В зависимости от триггера или действия, используемого для выполнения исходящих вызовов или запросов, обращающихся к этим конечным точкам, у вас есть выбор из диапазона различных типов проверки подлинности. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье.

Дальнейшие действия