Тонкости 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 «Заявки на техническую поддержку»:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ссылка на оригинал статьи https://habr.com/ru/post/504250/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *