Пиклист для редактирования из Флоу

Всем привет!

Наши любимые флоу очень часто подкидывают преинтереснейшие задания, и сами по себе являются (и наверняка еще очень долго будут) одним из любимейших “out-of-the-box tool”-ов для заказчиков по ту сторону девелоперских баррикад. Но, как вы наверное уже знаете, незаменимый и полезный инструмент для введения новой информации, Screen Flow, начинает вести себя достаточно непредсказуемо в случае, если требованиями определено, что информация должна не столько добавляться, сколько, скорее, редактироваться. И в этом случае флоу могут подкинуть несколько не очень приятных (во всех отношениях) сюрпризов. Одним из таких сюрпризов является функциональность стандартного элемента “Picklist”, настраиваемые параметры которого мы видим на рисунке:

В полной уверенности, что стандартные компоненты уж должны бы поддерживать редактирование записей из коробки, мы можем попытаться использовать данный компонент в нашей реализации. И с удивлением обнаружить, что все, что нам доступно — это функция Default Value, которая сама по себе “хардкодного” типа, и мало чем полезна в ситуации “Отобразить значения пиклиста с текущим выбранным значением на сохраненной ранее записи”.

Какие у нас есть “workarounds”?

  1. Убедить заказчика не использовать флоу там, где он решил уже это делать, и собрал 100-500 апрувов и подписей на 1000 митингов. (долго, иногда неприменимо).

  2. Убедить заказчика воспользоваться Freeware пакетом компонентов для флоу и заинсталить его с Appexchange (на все сэндбоксы по продакшен включительно).

  3. Выпилить собственный компонент с поддержкой Edit mode для пиклистов.

Поскольку в большинстве случаев первые два варианта мало применимы, попробуем сделать небольшой гайд для случая номер три (кастомизация под свои задачи приветствуется и является необходимой). Сделаем это на основе Aura components, — просто так исторически сложилось.

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

И попробуем достичь максимальной универсальности нашей поделки DIY для будущих целей:

Интерфейс lightning:availableForFlowScreens делает наш компонент видимым в контексте флоу билдера, но для того, чтобы компонент был настраиваемым — без design в нашем bundle не обойтись:

И конечно же контроллер:

Также, неотъемлемой частью данного решения должен быть Apex контроллер, обеспечивающий нас необходимой информацией о текущей метадате (описание что это за зверь такой - пиклист).
Собственно целевой метод:

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

Дальше добавим наш компонент Picklist на один из экранов нашего флоу и попробуем настроить вынесенные в design параметры:

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

Элементы, в целом, могут следовать такому принципу (не настаиваю, это будет вашим решением):

В качестве возможных импрувментов (и фактически использованных :wink: идей) для дальнейшего апгрейда компонента, можно рассмотреть следующие:

  • поддержка фильтрации по рекорд-тайпам

  • поддержка events

  • возможность исключения определенных значений на уровне флоу билдера

  • поддержка стилей (если ваш флоу “вдруг” окажется где-нибудь на коммьюнити пейдж)

  • поддержка всего того, что “очень нужно” вашему заказчику

Stay calm and Have fun!

6 Likes