Geocodes NO CODE
Очень многие процессы бизнеса так или иначе крутятся вокруг адресов: будь то адрес клиента — или адрес партнера. Все это работает замечательно, пока мы используем стандартные объекты для предоставления всего того, что требуется бизнесу в рамках сложившихся бизнесс-процессов. Но рано или поздно наступает момент, когда стандартных объектов уже недостаточно, и требуется кастомная дата модель с поддержкой адресных данных, и желательно геокодированием, потому как добавление интерактивной карты на record view явно не за горами.
Данная статья не о том, как добавлять последнюю на record view (об этом можно
почитать тут), а о том, как немного упростить себе жизнь получив геокоды адреса, используя стандартную функциональность Salesforce.
Последующие шаги (как всегда) являются рекомендацией, предполагающей дополнительные изменения, которые бы максимально соответствовали вашим задачам:
- Salesforce предоставляет Geocode Data Integration Rules для стандартных объектов и compound address fields (можно найти в Setup → Data → Data Integration Rules). Данной функциональностью мы и воспользуемся для “расширения поддержки” и на наши кастомные объекты:
- Для экспериментов воспользуемся контактом как временной записью для получения геоданных на основе данных адреса. Для этого добавим checkbox на контакт: для того, чтобы отличать наши служебные контакты от “нормальных”:
И соответствующие адресные поля на наш кастомный объект.
- На следующем шаге нам необходимо создать Process Builder, который бы создавал наш временный контакт, на котором мы могли бы получить Longitude / Latitude как часть стандартной функциональности:
Установка Last Name в значение Id соответствующей кастомной записи гарантирует нам успешную валидацию со стороны duplication rules. Также, сюда стоит добавить все те поля, которые требуются для успешного сохранения записи, в зависимости от настроек вашей конфигурации (required fields, validation rules и т.д.). Дополнительный чекбокс isTemporary очень сильно упрощает жизнь при удалении контактов, дабы не удалить “чевой-нибудь” лишнего.
- На следующем этапе необходимо создать Autolaunched flow для сохранения полученных данных геолокации на нашем кастомном объекте и удаления временного контакта.
Создаем input переменные для флоу:
Каждая переменная отмечена как available for input; мы их будем устанавливать из еще одного процесс билдера.
Сохраняем данные:
И удаляем временные записи:
- Последний шаг - добавить процесс, который будет запускать наш флоу:
Тут нам и пригодится Last name содержащий Id соответствующей кастомной записи:
- Тестируем, проверяя отсутствие “временных” контактов с трудно выговариваемыми ID-фамилиями (результат после сохранения новой записи):
ERGO:
Stay calm and have fun!
Особенно, если необходимая функциональность - уже существует в Salesforce.