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


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

Этот справочник описывает общие типы, используемые для идентификации триггеров и действий в базовом определении рабочего процесса приложения логики, которое описывается и проверяется с помощью языка определения рабочего процесса. To find specific connector triggers and actions that you can use in your logic apps, see the list under the Connectors overview.

Triggers overview

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

  • A polling trigger, which checks a service's endpoint at regular intervals

  • A push trigger, which creates a subscription to an endpoint and provides a callback URL so the endpoint can notify the trigger when the specified event happens or data is available. Затем триггер ожидает ответа конечной точки, прежде чем сработать.

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

"<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>"
},

Required

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

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

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

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

Optional

Value Type Description
< array-with-conditions> Array An array that contains one or more conditions that determine whether to run the workflow. Доступно только для триггеров.
< runtime-config-options> JSON Object Можно изменить поведение триггера во время выполнения, задав свойства runtimeConfiguration. Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.
< splitOn-expression> String Для триггеров, возвращающих массив, можно указать выражение для обработки, которое разделяет или выполняет по отдельности элементы массива на нескольких экземплярах рабочего процесса.
< operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

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

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

Built-in triggers

Trigger type Description
HTTP Checks or polls any endpoint. Конечная точка должна соответствовать определенному условию триггера, используя шаблон асинхронных операций 202 или возвращая массив.
HTTPWebhook Создает вызываемую конечную точку для приложения логики, но также вызывает указанный URL-адрес для регистрации или отмены регистрации.
Recurrence Активируется на основе определенного расписания. Можно задать дату и время в будущем для срабатывания триггера. На основе частоты можно также указать время и дни запуска рабочего процесса.
Request Создает вызываемую конечную точку для приложения логики, также называется "ручным" триггером. Например, ознакомьтесь со статьей Вызовы, срабатывания триггеров и создание вложенных рабочих процессов в приложениях логики.

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

Trigger type Description
ApiConnection Checks or polls an endpoint by using Microsoft-managed APIs or "connectors".
ApiConnectionWebhook Создает вызываемую конечную точку для рабочего процесса приложения логики, вызывая управляемые Корпорацией Майкрософт API или соединители для подписки и отмены подписки.

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

APIConnection trigger

This trigger checks or polls an endpoint by using Microsoft-managed APIs or "connectors" so the parameters for this trigger can differ based on the endpoint. Многие разделы в этом определении триггера являются необязательными. Режим работы триггера зависит от того, включены ли разделы.

"<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>"
}

Required

Property Value Type Description
None < APIConnection_trigger_name> String Имя триггера
host.connection.name < connection-name> String Имя подключения к управляемому API, который используется рабочим процессом
method < method-type> String The HTTP method for communicating with the managed API: GET, PUT, POST, PATCH, DELETE
path < api-operation> String Операция API для вызова
recurrence.frequency < time-unit> String The unit of time that describes how often the trigger fires: Second, Minute, Hour, Day, Week, Month
recurrence.interval < number-of-time-units> Integer Значение, указывающее частоту срабатывания триггера на основе частоты, которая является числом единиц времени ожидания, пока триггер снова не срабатывает.

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

- Месяц: 1-16 месяцев
- День: 1-500 дней
- Час: 1–12 000 часов
- Минута: 1-72 000 минут
- Второй: 1-999 999 999 секунд

For example, if the interval is 6, and the frequency is Month, the recurrence is every 6 months.

Optional

Property Value Type Description
retryPolicy < retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
queries < query-parameters> JSON Object Все параметры запроса для включения с помощью вызова API. Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
runtimeConfiguration.concurrency.runs < max-runs> Integer By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
runtimeConfiguration.maximumWaitingRuns < max-runs-queue> Integer If your workflow is already running the maximum number of instances, any new runs are put in this queue up to the default limit. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков. To change the maximum number of instances, specify a value for the runtimeConfiguration.concurrency.runs property.

Note: If you set the
splitOn < splitOn-expression> String Для триггеров, возвращающих массивы, это выражение ссылается на массив, который необходимо использовать, чтобы вы могли создать и запустить экземпляр рабочего процесса для каждого элемента массива, а не использовали цикл Foreach.

Например, следующее выражение представляет элемент массива, возвращенный внутри тела триггера: @triggerbody()?['value']
operationOptions < operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

Outputs

Element Type Description
headers JSON Object Заголовки из ответа
body JSON Object Текст из ответа
status code Integer Код состояния из ответа

Example

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

"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 trigger

This trigger sends a subscription request to an endpoint by using a Microsoft-managed API, provides a callback URL to where the endpoint can send a response, and waits for the endpoint to respond. For more information, see Endpoint subscriptions.

"<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>"
}

Required

Value Type Description
< connection-name> String Имя подключения к управляемому API, который используется рабочим процессом
< body-content> JSON Object Любое содержимое сообщения для отправки на управляемый API в качестве полезных данных

Optional

Value Type Description
< retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
< query-parameters> JSON Object Все параметры запроса для включения в вызов API

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
< max-runs> Integer By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
< splitOn-expression> String Для триггеров, возвращающих массивы, это выражение ссылается на массив, который необходимо использовать, чтобы вы могли создать и запустить экземпляр рабочего процесса для каждого элемента массива, а не использовали цикл Foreach.

Например, следующее выражение представляет элемент массива, возвращенный внутри тела триггера: @triggerbody()?['value']
< operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

Example

Это определение триггера подписывается на 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 trigger

Этот триггер отправляет запрос в указанную конечную точку 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>"
}

Required

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

Для службы или ресурса Azure этот синтаксис URI включает идентификатор ресурса и путь к ресурсу, к которому требуется получить доступ.
frequency < time-unit> String Единица времени, которая описывает, как часто срабатывает триггер: "секунда", "минута", "час", "день", "неделя" или "месяц"
interval < number-of-time-units> Integer Значение, указывающее частоту срабатывания триггера на основе частоты, которая является числом единиц времени ожидания, пока триггер снова не срабатывает.

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

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

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

Optional

Property Value Type Description
headers < header-content> JSON Object Все заголовки, которые необходимо включить в запрос

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

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
queries < query-parameters> JSON Object Все параметры запроса, которые необходимо использовать в запросе

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к запросу.
body < body-content> JSON Object Содержимое сообщения для отправки в качестве полезных данных с запросом
authentication < authentication-type-and-property-values> JSON Object Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье. Помимо планировщика поддерживается свойство authority. По умолчанию его значение равно https://management.azure.com/, но также можно использовать другое значение.
retryPolicy > type < retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
runs < max-runs> Integer By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
maximumWaitingRuns < max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
operationOptions < operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

Outputs

Element Type Description
headers JSON Object Заголовки из ответа
body JSON Object Текст из ответа
status code Integer Код состояния из ответа

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

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

Property Required Description
Status code Yes Код состояния "200 OK" инициирует запуск. Другие коды состояния — нет.
Retry-after header No Количество секунд перед повторным опросом конечной точки приложением логики
Location header No URL-адрес для вызова во время следующего интервала опроса. Если не указан, используется исходный URL-адрес.

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

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

HTTPWebhook trigger

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

You can also specify asynchronous limits on an HTTPWebhook trigger. Поведение триггера зависит от разделов, которые используются или пропускаются.

"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>"
}

Some values, such as <method-type>, are available for both the "subscribe" and "unsubscribe" objects.

Required

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

Optional

Value Type Description
< method-type> String Метод HTTP, используемый для запроса отмены: GET, PUT, POST, PATCH или DELETE
< endpoint-unsubscribe-URL> String URL-адрес конечной точки для отправки запроса на отмену
< body-content> String Любое содержимое сообщения для отправки в запросе на подписку или отмену
< authentication-type> JSON Object Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье.
< retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
< max-runs> Integer By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
< operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

Outputs

Element Type Description
headers JSON Object Заголовки из ответа
body JSON Object Текст из ответа
status code Integer Код состояния из ответа

Example

Этот триггер создает подписку на указанную конечную точку, предоставляет уникальный 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 trigger

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

"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>"
}

Required

Value Type Description
< time-unit> String Единица времени, которая описывает, как часто срабатывает триггер: "секунда", "минута", "час", "день", "неделя" или "месяц"
< number-of-time-units> Integer Значение, указывающее частоту срабатывания триггера на основе частоты, которая является числом единиц времени ожидания, пока триггер снова не срабатывает.

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

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

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

Optional

Value Type Description
< start-date-time-with-format-YYYY-MM-DDThh:mm:ss> String Дата начала и время в этом формате:

ГГГГ-ММ-DDThh:mm:ss, если указать часовой пояс

-or-

ГГГГ-ММ-DDThh:mm:ssZ, если не указать часовой пояс

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

Note: This start time has a maximum of 49 years in the future and must follow the ISO 8601 date time specification in UTC date time format, but without a UTC offset. Если не указать часовой пояс, то необходимо в конце добавить букву Z без пробелов. This "Z" refers to the equivalent nautical time.

В простых расписаниях время начала определяет первый случай выполнения задания, а в сложных расписаниях триггер срабатывает не раньше, чем наступит время начала. Дополнительные сведения о дате и времени начала см. в статье Начало работы с триггером повторения.
< time-zone> String Applies only when you specify a start time because this trigger doesn't accept UTC offset. Укажите часовой пояс, который необходимо применить.
< 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> Integer By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
< operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

Example 1

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

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

Example 2

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

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

Example 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.

Request trigger

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

Note

The original name for the Request trigger was manual, which might still appear in some places. Это имя изменилось, чтобы создать более согласованность вокруг типа шаблона рабочего процесса, который используется для сборки триггера.

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

"Request": {
   "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>"
}

Required

Value Type Description
< property-name> String Имя свойства в схеме JSON, которое описывает полезные данные
< property-type> String Тип свойства

Optional

Value Type Description
< method-type> String Метод, который входящие запросы должны использовать для вызова приложения логики: GET, PUT, POST, PATCH или DELETE
< relative-path-for-accepted-parameter> String Относительный путь для параметра, который принимает URL-адрес конечной точки
< required-properties> Array Одно или несколько свойств, требующих значений
< max-runs> Integer By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
< operation-option> String Поведение по умолчанию можно изменить, задав свойство operationOptions. For more information, see Operation options.

Example

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

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

Trigger conditions

Для любого триггера (или только для триггера) можно включить массив, содержащий одно или несколько выражений для условий, определяющих, следует ли запускать рабочий процесс. Чтобы добавить к приложению логики свойство 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 иногда может занимать слишком много времени для обработки каждого элемента массива. Instead, you can use the SplitOn property in your trigger to debatch the array. При индивидуальной обработке массив разделяется на элементы и для каждого элемента запускается новый экземпляр рабочего процесса. Такой подход является эффективным, например, если нужно опросить конечную точку, которая может вернуть несколько новых элементов между интервалами опроса.

If your trigger's Swagger file describes a payload that's an array, the SplitOn property is automatically added to your trigger. В противном случае добавьте это свойство в полезные данные ответа, содержащий массив, который нужно обработать индивидуально.

Прежде чем использовать функцию SplitOn, ознакомьтесь со следующими рекомендациями.

  • If trigger concurrency is enabled, the SplitOn limit is significantly reduced. Если число элементов превышает это ограничение, функция SplitOn отключается.

  • Функцию SplitOn нельзя использовать с шаблоном синхронного отклика. Any workflow that uses the SplitOn property and includes a response action runs asynchronously and immediately sends a 202 ACCEPTED response.

  • For the maximum number of array items that SplitOn can process in a single workflow run, see Limits and configuration.

Example

Предположим, что у вас есть триггер HTTP, который вызывает 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"
}

Note

Если используется команда 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"
   }
}

Actions overview

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>"
},

Required

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

Optional

Value Type Description
< retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. Дополнительные сведения см. в разделе "Политики повтора".
< runtime-config-options> JSON Object Режим работы некоторых действий во время выполнения можно изменить, задав свойство runtimeConfiguration. Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения.
< operation-option> String Режим работы по умолчанию некоторых действий можно изменить, задав свойство operationOptions. For more information, see Operation options.

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

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

Built-in actions

Action type Description
Compose Создает один выход из входных данных, который может иметь различные типы.
Выполнение кода JavaScript Выполнение фрагментов кода JavaScript, соответствующих заданным условиям. Требования к коду и дополнительные сведения см. в разделе Добавление и выполнение фрагментов кода со встроенным кодом.
Function Вызывает функцию Azure.
HTTP Вызывает конечную точку HTTP.
Join Создает строку из всех элементов в массиве и разделяет эти элементы определенным символом разделителя.
Parse JSON Создает понятные токены из свойств в содержимом JSON. Затем можно ссылаться на эти свойства, включая токены в приложение логики.
Query Создает массив из элементов другого массива на основании условия или фильтра.
Response Создает ответ на входящий вызов или запрос.
Select Создает массив объектов JSON, преобразуя элементы другого массива на основе указанной карты.
Table Создает таблицу CSV или HTML из массива.
Terminate Останавливает активное выполнение рабочего процесса.
Wait Приостанавливает рабочий процесс на заданный срок или до указанной даты и времени.
Workflow Создает вложенный рабочий процесс внутри другого рабочего процесса.

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

Action type Description
ApiConnection Calls an HTTP endpoint by using a Microsoft-managed API.
ApiConnectionWebhook Works like HTTP Webhook but uses a Microsoft-managed API.

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

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

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

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

APIConnection action

This action sends an HTTP request to a Microsoft-managed API and requires information about the API and parameters plus a reference to a valid connection.

"<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": {}
}

Required

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

Optional

Value Type Description
< other-action-specific-input-properties> JSON Object Все входные свойства, которые применяются к указанному действию
< retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
< query-parameters> JSON Object Все параметры запроса для включения с помощью вызова API.

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
< other-action-specific-properties> JSON Object Все другие свойства, которые применяются к указанному действию

Example

Это определение описывает действие Отправить по электронной почте для соединителя 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 action

This action sends a subscription request over HTTP to an endpoint by using a Microsoft-managed API, provides a callback URL to where the endpoint can send a response, and waits for the endpoint to respond. For more information, see Endpoint subscriptions.

"<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": {}
}

Some values, such as <method-type>, are available for both the "subscribe" and "unsubscribe" objects.

Required

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

Optional

Value Type Description
< api-unsubscribe-URL> String Универсальный код ресурса (URI), используемый для отмены подписки на API
< header-content> JSON Object Все заголовки для отправки в запросе

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

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
< body-content> JSON Object Любое содержимое сообщения для отправки в запросе
< authentication-type> JSON Object Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье.
< retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
< query-parameters> JSON Object Все параметры запроса для включения в вызов API

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
< other-action-specific-input-properties> JSON Object Все входные свойства, которые применяются к указанному действию
< other-action-specific-properties> JSON Object Все другие свойства, которые применяются к указанному действию

You can also specify limits on an ApiConnectionWebhook action in the same way as HTTP asynchronous limits.

Compose action

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

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

Required

Value Type Description
< inputs-to-compose> Any Входные данные для создания единых выходных данных

Example 1

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

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

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

abcdefg 1234

Example 2

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

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

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

"abcdefg1234"

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

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

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

Required

Value Type Description
< JavaScript-code-snippet> Varies Код JavaScript, который требуется выполнить. Требования к коду и дополнительные сведения см. в разделе Выполнение фрагментов кода в рабочих процессах.

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

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

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

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

Value Type Description
< preceding-actions> String array Массив с именами действий в формате JSON в виде зависимостей. Make sure to use the action names that appear in your workflow definition where action names use underscores (_), not spaces (" ").

Example 1

Это действие запускает код, который получает имя рабочего процесса приложения логики и возвращает в результате текст "Hello world from <имя-приложения-логики>". В этом примере код ссылается на имя рабочего процесса, обращаясь к свойству 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": {}
}

Example 2

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

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

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\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(myResult) + \" - \" + reply;\r\n;",
      "explicitDependencies": {
         "actions": [
            "Send_approval_email"
         ]
      }
   },
   "runAfter": {}
}

Function action

This action calls a previously created Azure function.

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

Required

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

"/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>"
< method-type> String Метод HTTP, используемый для вызова функции: GET, PUT, POST, PATCH или DELETE.

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

Optional

Value Type Description
< header-content> JSON Object Все заголовки для отправки с помощью вызова

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

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
< body-content> JSON Object Любое содержимое сообщения для отправки в запросе
< query-parameters> JSON Object Все параметры запроса для включения в вызов API

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
< other-action-specific-input-properties> JSON Object Все входные свойства, которые применяются к указанному действию
< other-action-specific-properties> JSON Object Все другие свойства, которые применяются к указанному действию

При сохранении приложения логики Azure Logic Apps выполняет следующие проверки для указанной функции:

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

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

    Azure Logic Apps получает и кэширует URL-адрес триггера, который используется во время выполнения. However, if any operation invalidates the cached URL, the Function action fails at runtime. Чтобы устранить эту проблему, повторно сохраните приложение логики, чтобы оно снова загрузило URL-адрес триггера.

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

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

Example

Это определение действия вызывает ранее созданную функцию 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 action

Это действие отсылает запрос на указанную конечную точку 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": {}
}

Required

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

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

Optional

Property Value Type Description
headers < header-content> JSON Object Все заголовки, которые необходимо включить в запрос

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

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
queries < query-parameters> JSON Object Все параметры запроса, которые необходимо использовать в запросе

Например, объект "queries": { "api-version": "2018-01-01" } добавляет ?api-version=2018-01-01 к вызову.
body < body-content> JSON Object Содержимое сообщения для отправки в качестве полезных данных с запросом
authentication < authentication-type-and-property-values> JSON Object Модель проверки подлинности, которую запрос использует для проверки подлинности исходящих запросов. Дополнительные сведения см. в разделе Добавление проверки подлинности в исходящие вызовы далее в этой статье. Помимо планировщика поддерживается свойство authority. По умолчанию его значение равно https://management.azure.com/, но также можно использовать другое значение.
retryPolicy > type < retry-behavior> JSON Object Настраивает режим повтора для прерывистых сбоев, которые имеют код состояния 408, 429 и 5XX, и для любых исключений при подключении. For more information, see Retry policies.
< other-action-specific-input-properties> < input-property> JSON Object Все входные свойства, которые применяются к указанному действию
< other-action-specific-properties> < property-value> JSON Object Все другие свойства, которые применяются к указанному действию

Example

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

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

Join action

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

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

Required

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

Example

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

[1,2,3,4]

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

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

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

This action creates user-friendly fields or tokens from the properties in JSON content. Затем можно получить доступ к этим свойствам в своем приложении логики, используя вместо этого токены. Например, если необходимо использовать выходные данные JSON таких служб как Служебная шина Azure и Azure Cosmos DB, можно включить это действие в своем приложении логики, чтобы иметь возможность легче ссылаться на выходные данные.

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

Required

Value Type Description
< JSON-source> JSON Object Содержимое JSON, которое необходимо анализировать
< JSON-schema> JSON Object Схема JSON, описывающая основное содержимое JSON, которое использует действие для анализа исходного содержимого JSON.

Tip: In the workflow designer, you can either provide the schema or provide a sample payload so that the action can generate the schema.

Example

This action definition creates these tokens that you can use in your workflow but only in actions that run following the Parse JSON action:

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"
            }
         }
      }
   }
}

Query action

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

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

Required

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

Note: If no values satisfy the condition, then the action creates an empty array.

Example

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

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

Response action

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

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

Required

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

Optional

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

Example

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

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

Restrictions

Unlike other actions, the Response action has special restrictions:

  • Your workflow can use the Response action only when the workflow starts with an HTTP request trigger, meaning your workflow must be triggered by an HTTP request.

  • Your workflow can use the Response action anywhere except inside Foreach loops, Until loops, including sequential loops, and parallel branches.

  • The original request gets your workflow's response only when all actions required by the Response action are finished within the HTTP timeout limit.

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

  • When your workflow uses the Response action and a synchronous response pattern, the workflow can't also use the splitOn command in the trigger definition because that command creates multiple runs. Проверьте этот случай, когда используется метод PUT, и если значение равно true, вернется ответ "Недопустимый запрос".

    Otherwise, if your workflow uses the splitOn command and a Response action, the workflow runs asynchronously and immediately returns a "202 ACCEPTED" response.

  • When your workflow's execution reaches the Response action, but the incoming request has already received a response, the Response action is marked as "Failed" due to the conflict. И в результате выполнения приложения логики также отмечается состояние Failed (Сбой).

Select action

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

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

Required

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

Note: If the source array is empty, the action creates an empty array.
< key-name> String The property name assigned to the result from <expression>

To add a new property across all objects in the output array, provide a <key-name> for that property and an <expression> for the property value.

To remove a property from all objects in the array, omit the <key-name> for that property.
< expression> String The expression that transforms the item in the source array and assigns the result to <key-name>

The Select action creates an array as output, so any action that wants to use this output must either accept an array, or you must convert the array into the type that the consumer action accepts. For example, to convert the output array to a string, you can pass that array to the Compose action, and then reference the output from the Compose action in your other actions.

Example

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

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

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

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

To use this array output in other actions, pass this output into a Compose action:

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

You can then use the output from the Compose action in your other actions, for example, the Office 365 Outlook - Send an email action:

"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" ]
   }
},

Table action

Это действие создает таблицу 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": {}
}

Required

Value Type Description
<CSV or HTML> String Формат таблицы, которую необходимо создать
< array> Array Массив или выражение, предоставляющее исходные элементы для таблицы

Note: If the source array is empty, the action creates an empty table.

Optional

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

Value Type Description
< column-name> String Имя заголовка столбца
< column-value> Any Значение в столбце

Example 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 

Example 2

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

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

Таблица HTML, которую создает это действие:

IDProduct_Name
0Apples
1Oranges

Example 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_IDDescription
0Organic Apples
1Organic Oranges

Terminate action

Это действие останавливает выполнение экземпляра рабочего процесса, отменяет все выполняемые действия, пропуская все оставшиеся действия, и возвращает указанное состояние. For example, you can use the Terminate action when your logic app must exit completely from an error state. This action doesn't affect already completed actions and can't appear inside Foreach and Until loops, including sequential loops.

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

Required

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

Optional

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

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

Example

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

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

Wait action

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

Specified interval

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

Specified time

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

Required

Value Type Description
< number-of-units> Integer For the Delay action, the number of units to wait
< interval> String For the Delay action, the interval to wait: "Second", "Minute", "Hour", "Day", "Week", "Month"
< date-time-stamp> String For the Delay Until action, the date and time to resume execution. Для этого значения необходимо использовать дату и время в формате UTC.

Example 1

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

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

Example 2

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

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

Workflow action

Это действие вызывает другое ранее созданное приложение логики, это значит, что можно включать и повторно использовать другие рабочие процессы приложений логики. You can also use the outputs from the child or nested logic app in actions that follow the nested logic app, provided that the child logic app returns a response.

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

  • A trigger makes the nested logic app callable, such as a Request or HTTP trigger

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

  • To use the outputs from the nested logic app in your parent logic app, the nested logic app must have a Response action

"<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": {}
}

Required

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

Optional

Value Type Description
< header-content> JSON Object Все заголовки для отправки с вызовом
< body-content> JSON Object Любое содержимое сообщения для отправки с вызовом

Outputs

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

Example

После успешного завершения действия 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 action

Это циклическое действие выполняет итерацию по массиву и действия с каждым элементом массива. По умолчанию цикл 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>"
}

Required

Value Type Description
< action-1...n> String Имена действий, выполняемых над каждым элементом массива
< action-definition-1...n> JSON Object Определения действий, которые выполняются
< for-each-expression> String Выражение, которое ссылается на каждый элемент в указанном массиве

Optional

Value Type Description
< count> Integer By default, the "for each" loop iterations run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change "for each" loop concurrency.
< operation-option> String To run a "for each" loop sequentially, rather than in parallel, set either <operation-option> to Sequential or <count> to 1, but not both. Дополнительные сведения см. в разделе Последовательный запуск циклов Foreach.

Example

Этот цикл 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": {}
}

To specify only an array that is passed as output from the trigger, this expression gets the <array-name> array from the trigger body. Чтобы избежать ошибок при отсутствии массива, в этом выражении используется оператор ?.

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

If action

This action, which is a conditional statement, evaluates an expression that represents a condition and runs a different branch based on whether the condition is true or false. Если условие истинное, ему будет присвоено состояние Succeeded (Успешно). Дополнительные сведения см. в разделе Создание условных операторов, которые управляют действиями в рабочих процессах Azure Logic Apps.

"Condition": {
   "type": "If",
   "expression": { "<condition>" },
   "actions": {
      "<action-1>": { "<action-definition>" }
   },
   "else": {
      "actions": {
        "<action-2>": { "<action-definition" }
      }
   },
   "runAfter": {}
}
Value Type Description
< condition> JSON Object Условие, которое может быть выражением, для оценки
< action-1> JSON Object The action to run when <condition> evaluates to true
< action-definition> JSON Object Определение действия
< action-2> JSON Object The action to run when <condition> evaluates to false

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

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

Example

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

"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 Result
"expression": "@parameters('<hasSpecialAction>')" Только для логических выражений условие передается для любого истинного значения.

Чтобы преобразовать другие типы в логический, используйте следующие функции: empty() или equals().
"expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" For comparison functions, the action runs only when the output from <action> is more than the <threshold> value.
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" For logic functions and creating nested Boolean expressions, the action runs when the output from <action> is more than the <threshold> value or under 100.
"expression": "@equals(length(actions('<action>').outputs.errors), 0)" Можно использовать функции массива для проверки того, имеет ли массив какие-либо элементы. Действие выполняется, если массив errors пустой.

Scope action

This action logically groups actions into scopes, which get their own status after the actions in that scope finish running. Затем можно использовать статус области, чтобы определить, выполняются ли другие действия. Дополнительные сведения см. в разделе Создание областей, которые выполняют действия рабочего процесса на основе состояния группы в 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": {}
      }
   }
}

Required

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

Switch action

This action, also known as a switch statement, organizes other actions into cases, and assigns a value to each case, except for the default case if one exists. When your workflow runs, the Switch action compares the value from an expression, object, or token against the values specified for each case. If the Switch action finds a matching case, your workflow runs only the actions for that case. Each time the Switch action runs, either only one matching case exists or no matches exist. If no matches exist, the Switch action runs the default actions. Дополнительные сведения см. в разделе Создание операторов 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": {}
}

Required

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

Optional

Value Type Description
< default-action-name> String Имя действия по умолчанию для запуска, если не существует подходящего случая
< default-action-definition> JSON Object Определение действия по умолчанию для запуска, если не существует подходящего случая

Example

Это определение действия оценивает, выбирает ли пользователь в ответ на письмо с запросом вариант "Утвердить" или "Отклонить". Based on this choice, the Switch action runs the actions for the matching case, which is to send another email to the responder but with different wording in each case.

"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 action

Это действие цикла содержит действия, которые выполняются, пока указанное условие имеет истинное значение. После завершения работы всех других действий на последнем этапе цикл проверяет условие. Можно включить несколько действий в объект "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": {}
}
Value Type Description
< action-name> String Имя действия, которое необходимо выполнить внутри цикла
< action-type> String Тип действия, которое необходимо запустить
< action-inputs> Various Входные данные для выполнения действия
< condition> String Условие или выражение для оценки после всех действий в завершении цикла
< loop-count> Integer Предел максимального количества циклов, которое может выполнить действие. Дополнительные сведения о предельном и максимальном предельном значениях по умолчанию см. в разделе Ограничения и настройка Azure Logic Apps.
< loop-timeout> String Предел времени работы цикла, в течение которого цикл может работать. Значение timeout по умолчанию равно PT1H, которое требует формат ISO 8601.

Note

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

Example

Это определение действия цикла отправляет 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": {}
}

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

Триггеры и действия на основе веб-перехватчика не регулярно проверяют конечные точки, но ждут конкретных событий или данных на этих конечных точках. These triggers and actions subscribe to the endpoints by providing a callback URL where the endpoint can send responses.

Вызов 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 в триггер или определение действия.

Property Type Description Триггер или действие
runtimeConfiguration.concurrency.runs Integer Change the default limit on the number of workflow instances that can run at the same time (concurrently or in parallel). Изменение данного значения поможет ограничить количество запросов, которые получают серверные системы.

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

Дополнительные сведения об изменении предела по умолчанию см. в раздел об изменении параллелизма триггера или о последовательном запуске экземпляров.
All triggers
runtimeConfiguration.concurrency.maximumWaitingRuns Integer Change the default limit on the number of workflow instances that must wait to run when your logic app is already running the maximum concurrent instances.

Чтобы изменить предел по умолчанию, см. раздел Изменение предела ожидающих запусков.
All triggers
runtimeConfiguration.concurrency.repetitions Integer Change the default limit on the number of "for each" loop iterations that can run at the same time (concurrently or in parallel).

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

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

Foreach
runtimeConfiguration.paginationPolicy.minimumItemCount Integer For specific actions that support and have pagination turned on, this value specifies the minimum number of results to retrieve.

Сведения о включении разбивки на страницы см. в разделе Получение большого объема данных, элементов или результатов с помощью разбивки на страницы
Action: Varied
runtimeConfiguration.secureData.properties Array Во многих триггерах и действиях данные параметры существуют для защиты в журнале выполнения приложения логики входных данных или выходных данных, либо и того, и другого.

Дополнительные сведения о защите этих данных см. в разделе Скрытие входных и выходных данных из журнала выполнения.
Большинство триггеров и действий
runtimeConfiguration.staticResult JSON Object For actions that support and have the static result setting turned on, the staticResult object has these attributes:

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

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

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

Operation options

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

Operation option Type Description Триггер или действие
DisableAsyncPattern String Запускайте действия на основе HTTP синхронно, а не асинхронно.



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

ApiConnection,
HTTP,
Response
IncludeAuthorizationHeadersInOutputs String Для приложений логики, которые позволяют OAuth с идентификатором Microsoft Entra id авторизовать доступ к конечной точке триггера на основе запросов, включите Authorization заголовок из маркера доступа OAuth в выходные данные триггера. Дополнительные сведения см. в разделе Включение заголовка "Authorization" в выходные данные триггера запроса. Triggers:

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

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



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

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



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

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

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

Request,
HTTP Webhook

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

По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно. Это означает, что каждый экземпляр триггера срабатывает до завершения выполнения предыдущего экземпляра рабочего процесса. However, the number of concurrently running instances has a default limit. Когда количество одновременно выполняемых экземпляров рабочего процесса достигает этого предела, все остальные экземпляры должны ожидать выполнения. Это ограничение помогает контролировать количество запросов, которые получают серверные системы.

When you turn on the trigger's concurrency control, trigger instances run in parallel up to the default limit. Чтобы изменить это ограничение параллелизма по умолчанию, можно использовать редактор представления кода или конструктор рабочих процессов, так как изменение параметра параллелизма с помощью конструктора добавляет или обновляет runtimeConfiguration.concurrency.runs свойство в базовом определении триггера и наоборот. Это свойство определяет максимальное число экземпляров рабочего процесса, которые могут выполняться параллельно.

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

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

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

  • When concurrency is enabled, the SplitOn limit is significantly reduced for debatching arrays. Если число элементов превышает это ограничение, функция SplitOn отключается.

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

    • To interrupt this state, cancel the earliest instances that are still running.

      1. On your logic app's menu, select Overview.

      2. In the Runs history section, select the earliest instance that is still running, for example:

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

        Tip

        To view only instances that are still running, open the All list, and select Running.

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

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

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

      1. В рабочем процессе приложения логики выберите действие, в которое нужно добавить время ожидания. In the action's upper-right corner, select the ellipses (...) button, and then select Settings.

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

      2. Under Timeout, specify the timeout duration in ISO 8601 format.

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

  • Для последовательного запуска приложения логики задайте для параллелизма триггера значение 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
      }
   }
}

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

Изменение в конструкторе рабочих процессов

  1. In the trigger's upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Limit to On.

  3. Перетащите ползунок Степень параллелизма к необходимому значению. To run your logic app sequentially, drag the slider value to 1.

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

По умолчанию итерации цикла "For each" запускаются одновременно или параллельно. Это означает, что каждая итерация начнет выполняться до завершения предыдущей итерации. However, the number of concurrently running iterations has a default limit. Если количество параллельно выполняющихся итераций достигает этого предела, все остальные итерации должны ожидать выполнения.

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

Note

Если вы установите действие 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
      }
   }
}

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

Изменение в конструкторе рабочих процессов

  1. In the For each action, from the upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Concurrency Control to On.

  3. Перетащите ползунок Степень параллелизма к необходимому значению. To run your logic app sequentially, drag the slider value to 1.

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

По умолчанию экземпляры рабочего процесса запускаются одновременно или параллельно. Это означает, что каждый экземпляр триггера срабатывает до завершения выполнения предыдущего экземпляра рабочего процесса. However, a default limit exists on the number of concurrently running workflow instances. Когда число одновременных запусков достигает этого ограничения, все другие новые экземпляры рабочих процессов должны ждать выполнения. A default limit also exists on the number of waiting workflow instances. Когда число ожидающих экземпляров достигает этого ограничения, Azure Logic Apps больше не принимает новые экземпляры рабочих процессов для запуска. Триггеры запроса и веб-перехватчика возвращают 429 — слишком много ошибок запросов, а повторяющиеся триггеры начинают пропускать попытки опроса.

Можно изменить ограничение по умолчанию на параллелизм триггера, а также ограничение по умолчанию при ожидании выполнения. Однако это изменение в основном замедляет триггер, чтобы облегчить давление из-за параллелизма. Например, если у вас есть триггер опроса, а очередь ожидающих запусков заполнена из-за выполняемых запусков, Azure Logic Apps останавливает опрос. Если рабочий процесс использует триггер на основе запросов, а очередь ожидания выполняется полностью, Azure Logic Apps начинает возвращать ошибку 429. Некоторые сценарии существуют, когда Azure Logic Apps не может остановить триггер от опроса, не вводя сбои и выбирая добавление таких запусков в очередь ожидающих запусков в любом случае без сбоя вызовов.

В базовом определении триггера добавьте свойство runtimeConfiguration.concurrency.maximumWaitingRuns, которое может иметь значение в диапазоне от 1 до 100.

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

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

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

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

Note

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

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

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

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

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

-or-

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

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

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

Изменение в конструкторе рабочих процессов

  1. In the trigger's upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Limit to On.

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

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

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

Note

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

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

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

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

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

-or-

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

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

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

Изменение в конструкторе рабочих процессов

  1. In the For each action's upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Concurrency Control to On.

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

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

По умолчанию действия HTTP Action и APIConnection в Azure Logic Apps соответствуют стандартному шаблону асинхронных операций, а действие "Ответ" (Response) соответствует шаблону синхронных операций. The asynchronous pattern specifies that after an action calls or sends a request to the specified endpoint, service, system, or API, the receiver immediately returns a "202 ACCEPTED" response. Этот код подтверждает, что получатель принял запрос, но еще не завершил обработку. The response can include a location header that specifies the URL and a refresh ID that the caller can use to continually poll or check the status for the asynchronous request until the receiver stops processing and returns a "200 OK" success response or other non-202 response. Дополнительные сведения см. в разделе Асинхронная интеграция микрослужб обеспечивает автономность микрослужб.

  • In the Logic App Designer, the HTTP action, APIConnection actions, and Response action have the Asynchronous Pattern setting. Этот параметр указывает, что вызывающая сторона не ждет завершения обработки и может перейти к следующему действию, но продолжит проверку состояния, пока обработка не будет остановлена. При отключенном параметре вызывающая сторона будет ожидать завершения обработки перед переходом к следующему действию. Чтобы найти этот параметр, выполните следующие шаги.

    1. On the HTTP action's title bar, select the ellipses (...) button, which opens the action's settings.

    2. Find the Asynchronous Pattern setting.

      Параметр

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

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

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

Turn off Asynchronous Pattern setting

  1. In the Logic App Designer, on the action's title bar, select the ellipses (...) button, which opens the action's settings.

  2. Find the Asynchronous Pattern setting, turn the setting to Off if enabled, and select Done.

    Выключение параметра

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

In the action's underlying JSON definition, add and set the "operationOptions" property to "DisableAsyncPattern" under the action's "inputs" section, for example:

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

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

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

Next steps