RU
Телефон
Электронная почта
Блог
Тонкости Power Automate и Logic Apps. Справочник citizen developer'a #1

В одной из прошлых статей мы рассказывали какими особенностями обладают облачные сервисы Power Automate и Logic Apps. Мы рассмотрели в чем основные различия между ними, изучили в каких случаях следует использовать тот или иной сервис, а также познакомились с некоторыми сценариями использования. Сегодня мы начинаем новый цикл статей, посвященных различным лайфхакам и обходным решениям, которые позволят реализовать ряд бизнес-сценариев с использованием доступных инструментов.

Запуск Logic Apps потока по кнопке из приложения Power Apps

В некоторых случаях в ходе проектирования и настройки различных модулей системы выгоднее использовать Logic Apps, нежели Power Automate. Причин на то может быть множество, но одна из самых популярных – наличие «премиум» коннекторов в Logic Apps без покупки дополнительных планов, как, например, в Power Automate. К примеру, внутри потока вам может потребоваться осуществить вызов HTTP веб-сервиса и законнектиться с SQL Server, но в Power Automate данные коннекторы недоступны без покупки специального плана по пользователям или по потокам. В этом случае нам поможет Logic Apps, где используется немного другой механизм тарификации и все коннекторы, включая «премиум» доступны изначально. Более подробно про особенности Logic Apps можно почитать в этой статье.

Однако, есть одна особенность – Logic Apps поток нельзя запустить по кнопке из формы или приложения Power Apps, в отличие от Power Automate потока. Как решить эту задачу? На самом деле, решение довольно простое. Рассмотрим данный кейс на примере процесса подачи заявки на техническую поддержку.

Итак, в нашем случае, у нас есть список SharePoint «Заявки на техническую поддержку»:

1.png

Дополнительно, на списке сделана кастомизация формы с использованием Power Apps:

2.png

Как Вы можете заметить, в шапке формы есть переход на дополнительный экран с кнопками действий по выбранной заявке:

3.png

Нажимаем «Делегировать заявку» и заполняем дополнительные поля:

4.png

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

Создаем на сайте SharePoint дополнительный список ActionsList и добавляем несколько полей:

  1. ActionType – тип вызываемого действия
  2. Comments – комментарии
  3. ParentItemID – идентификатор родительского элемента (заявки)
  4. DelegateTo – дополнительное поле для хранения делегата
  5. CompleteProcessFlag – флаг обработки действия

5.png

Теперь из PowerApps делаем создание элемента в списке ActionsList при нажатии на кнопку «Подтвердить»:

6.png

С помощью функции Patch, создаем новый элемент в списке ActionsList с типом «Delegate» и передачей остальных значений контролов с формы. Проверяем что элемент создается:

7.png

Теперь можем перейти к Logic Apps. Идем в Azure, создаем новый поток Logic Apps и указываем триггер «При создании элемента в списке SharePoint»:

8.png

Делаем поток с переключателем:

9.png

Логика данного потока в следующем:

При создании элемента в списке ActionsList поток поднимается, проверяет значение поля «ActionType» нового элемента и, в зависимости от типа действия, идет на одну из веток переключателя, где обрабатывается требуемая логика. Таким образом, мы с Вами можем в одном потоке сделать сколько угодно веток для переключателя и обрабатывать любые события, в рамках одного потока. Останется только создавать в списке ActionsList элементы с нужными типами событий и добавить поддержку этих типов в поток, в виде дополнительных веток переключателя.

Давайте сделаем еще одно создание события из PowerApps, например, для отмены заявки:

9.png

В данном случае в списке ActionsList появится новое событие с типом «Reject» и комментариями к отмене. Обязательно передаем значение идентификатора родительского элемента, иначе потом найти требуемую заявку из потока будет весьма проблематично. Далее, надо добавить поддержку нового типа события в потоке Logic Apps. Делаем еще одну ветку в переключателе:

10.png

И осталось добавить в самый конец потока обновление флага обработки, для того, чтобы понимать какие события обработаны нашим потоком, а какие нет:

11.png

Этот флаг поможет в случае непредвиденных ситуаций, в ходе которых обработка события потоком выполнена неудачно. Можно будет сделать поток, который, например, два раза в день будет подниматься по расписанию и обрабатывать события в списке ActionsList, у которых флаг «CompleteProcessFlag» равен No.

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