Группировать связанные действия в области и выполнять дальнейшие действия на основе состояния области в Azure Logic Apps

Применяется к: Azure Logic Apps (Расход + Стандарт)

Иногда рабочий процесс имеет действия, которые необходимо выполнить только после успешной или неудачной группы связанных действий. Для этого сценария добавьте действие «Область» в качестве логического контейнера для действий. После завершения выполнения всех действий области, область получает собственный статус, например:

  • Успешно
  • Неудачно
  • Skipped
  • Время ожидания истекло
  • Отменено
  • Недоношенный

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

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

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

В следующем примере высокого уровня показана область и условие, проверяющее состояние области. Если какие-либо действия области завершаются сбоем или неожиданно, область помечается как Сбой или Прервана соответственно. Рабочий процесс отправляет сообщение Scope failed. Если все действия с заданной областью выполнены успешно, рабочий процесс отправляет сообщение об успешном завершении области .

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

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

Необходимые компоненты

  • Учетная запись и подписка Azure. Получите бесплатную учетную запись Azure.

  • Ресурс и рабочий процесс логического приложения в режимах "Consumption" или "Standard"

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

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

    1. В портал Azure откройте приложение логики и рабочий процесс в конструкторе.

    2. Выполните общие действия , чтобы добавить триггер расписания с именем " Повторение " в рабочий процесс.

    3. В конструкторе выберите триггер. После открытия области сведений о триггере на вкладке "Параметры " задайте параметры триггера следующим значениям:

      Параметр Ценности
      Interval 30
      Периодичность Минута

      Рассмотрим пример.

      На снимке экрана показан триггер расписания под названием

Добавить действие области охвата

  1. В конструкторе под триггером следуйте общим инструкциям, чтобы добавить действие Control с именем Scope.

  2. Измените имя действия Область на Process order, например:

    Снимок экрана: действие области, переименованное в порядок процесса.

  3. Сохраните рабочий процесс.

Добавьте действия в область применения

В этом примере следующие шаги имитируют сценарий обработки заказов в рамках выполняемых действий.

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

    Снимок экрана: выбранная стрелка, направленная вниз, для расширения области действия.

  2. Выполните общие действия , чтобы добавить следующие действия в область:

    1. Добавьте действие "Операции данных " с именем Compose:

      1. Измените имя действия на Validate order.

      2. В поле "Входные данные" введите Order validated.

    2. Добавьте действие schedule с именем Delay:

      1. Измените имя на Fulfill order.

      2. Установите Count на 5. Задайте для единицы второе значение.

    3. Добавьте действие "Операции данных " с именем Compose:

      1. Измените имя действия на Complete order.

      2. В поле "Входные данные" введите Order fulfilled.

    После завершения, действие области будет выглядеть так:

    Снимок экрана показывает добавленные действия Compose и Delay в области действия.

    В настоящее время все действия в этой области выполняются успешно при выполнении рабочего процесса.

  3. Сохраните рабочий процесс.

Добавить условие для проверки состояния области видимости

  1. Ниже действия области выполнения следуйте общим шагам, чтобы добавить действие Control с именем Condition.

  2. Изменение имени действия на Did order processing fail

  3. На вкладке "Параметры" настройте следующее условие с выражением, которое проверяет состояние области:

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

    2. В поле редактора выражений введите следующее выражение:

      actions('Process_order')?['status']

      Рассмотрим пример.

      На снимке экрана показано выражение, которое проверяет состояние области действия.

      Оператор вопросительного знака (?) предотвращает сбой рабочего процесса с ошибкой среды выполнения, если значение свойства status отсутствует или родительский объект равен null.

    3. Закончив, нажмите кнопку Добавить.

    4. В поле среднего оператора убедитесь, что для параметра задано =значение .

    5. В правом поле "Выбор значения" введите значение Failed.

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

    На скриншоте показано условие, которое проверяет статус области.

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

    1. На вкладке "Настройки действия условия", в разделе "Запуск после", разверните вкладку "Порядок обработки".

    2. Выберите все состояния охвата:

      • Успешно
      • Истекло время ожидания
      • Пропущено
      • Произошел сбой
  5. Сохраните рабочий процесс.

Добавление действий для выполнения на основе результата области видимости

  1. В конструкторе в условии разверните ветвь True , если она не развернута.

  2. В ветви True добавьте действие Compose и выполните следующие действия:

    1. Измените имя действия на Handle failure.

    2. В поле "Входные данные" введите Order processing failed. Take appropriate action.

    Рассмотрим пример.

    Снимок экрана: ветвь True с действием Compose, которое указывает на сбой заказа.

  3. В ветви False добавьте действие Compose и выполните следующие действия:

    1. Измените имя действия на Order succeeded.

    2. В поле "Входные данные" введите Successfully processed order.

    Рассмотрим пример.

    Снимок экрана: ветвь False с действием Compose, которое указывает на успешное выполнение заказа.

  4. Сохраните рабочий процесс.

Тестирование рабочего процесса

  1. На панели инструментов конструктора в меню "Выполнить", выберите "Выполнить".

  2. На боковой панели выберите историю выполнения.

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

    На странице сведений о выполнении показано, что действие области успешно выполнено, например:

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

  4. Разверните действие в области видимости, чтобы просмотреть каждое действие в рамках этой области.

    Каждое действие в контексте успешно выполнено, например:

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

  5. Разверните действие условия вместе с ветвями True и False .

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

    Снимок экрана показывает, что была запущена только ветвь False.

  6. Чтобы проверить путь сбоя и принудительно запустить ветвь True , выполните следующие действия:

    1. На боковой панели выберите конструктор.

    2. В действии области добавьте действие Compose, которое завершается сбоем.

      Например, в действии Compose введите выражение, которое вызывает сбой во время выполнения, например:

      int(triggerBody()?['forceFailure'])

    3. Сохраните рабочий процесс. Повторно запустите рабочий процесс. Просмотр журнала выполнения.

      На этот раз статус рабочего процесса успешно завершён, но действие в пределах области завершилось сбоем, и выполняется ветка обработки ошибок, например:

      Снимок экрана: обновленный рабочий процесс с принудительной ошибкой и только запущено значение True.