В настоящее время я являюсь разработчиком Blueprint, организации в Калифорнийском университете в Беркли. Мы бесплатно разрабатываем программное обеспечение для некоммерческих организаций и продвигаем технологии на благо общества. В прошлом году моя команда работала над решением для Проекта мечты. Цель состоит в том, чтобы обеспечить лучшее образование для детей в Доминиканской Республике.

Я пишу этот пост в надежде поделиться своим опытом интеграции Salesforce с использованием Heroku Connect для приложения Ruby on Rails / React Native.

Что такое Heroku Connect?

«Heroku Connect упрощает создание приложений Heroku, которые обмениваются данными с вашим развертыванием Salesforce. Используя двунаправленную синхронизацию между Salesforce и Heroku Postgres, Heroku Connect объединяет данные в вашей базе данных Postgres с контактами, учетными записями и другими настраиваемыми объектами в базе данных Salesforce ».

Другими словами ...

Heroku Connect помогает заменить базу данных Postgres вашего приложения на базу данных Salesforce. Конечно, поскольку приложения Rails изначально подключаются к Postgres, вы не можете выполнять немедленные вызовы и отправки в Salesforce без какого-либо API, такого как гем Restforce.

На самом деле база данных Postgres, с которой будет взаимодействовать наше приложение Rails, служит маскировкой для Salesforce. Это рабочий посредник. Все данные должны пройти через него, прежде чем они попадут в Salesforce, и наоборот. Heroku Connect - это мост, который сочетает в себе возможности Force.com и Heroku без необходимости использования драгоценного камня.

Вы можете спросить… зачем вообще учить интеграцию с Salesforce?

Что ж, интеграция с Salesforce упрощает процесс хранения и извлечения данных. Особенно данные о клиентах для предприятий.

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

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

Образец проекта для вдохновения

Чтобы дать некоторую предысторию для фрагментов кода ниже в руководстве, я заранее объясню проект, над которым я работал. Этот проект познакомил меня с Heroku Connect.

Ранее Dream записывал информацию о студентах в базу данных Salesforce. Это было не идеально для учителей. Чтобы облегчить им жизнь, мы создали удобное приложение. Приложение занималось созданием курсов, набором студентов и контролем посещаемости.

Из-за плохого подключения к Интернету в кампусах Dream мы обратились к Heroku Connect для постоянной синхронизации обновлений. Он синхронизировал обновления на стороне базы данных Heroku Postgres и стороне базы данных Salesforce.

Весь код, описанный в этой демонстрации, доступен в нашем репозитории проекта. Вы также можете проверить React-часть приложения здесь.

Хорошо, приступим к демонстрации…

Обзор

Я собираюсь приступить к этой демонстрации в следующем порядке:

  1. Описание технологии
  2. Настройка (Heroku Postgres и Heroku Connect)
  3. Сопоставления Heroku Connect + примечания
  4. Изменения в вашем локальном приложении Rails

Описание технологии

Настройка: развертывание вашего приложения на Rails

После настройки приложения Rails вы хотите развернуть приложение на Heroku. Вот краткое описание развертывания вашего приложения:

  1. Войдите в свою учетную запись Heroku, и вы будете перенаправлены на панель инструментов в правом верхнем углу. Вы увидите кнопку «Новый» в правом верхнем углу, чтобы создать новый проект. Введите собственное имя приложения и создайте свое приложение.
  2. Вы будете перенаправлены на страницу развертывания вашего нового приложения. Прокрутите вниз до раздела «Развертывание с помощью Heroku Git». Следуйте инструкциям на странице. (Примечание: после добавления пульта Heroku Git вы всегда можете обновить свое приложение Heroku. Вы обновляете, добавляя и фиксируя свои изменения и, наконец, выполняя мастер git push heroku.)

Скорее всего, если это ваш первый раз, вы столкнетесь с ошибкой: Развертывание Heroku завершилось неудачно из-за ошибки гема sqlite3. Это потому, что Heroku использует Postgres вместо sqlite3. Чтобы исправить это, прочтите Сообщение о переполнении стека.

Heroku Postgres

Когда ваше приложение развернуто, на вашей обзорной странице должна быть надстройка Heroku Postgres. Это ваша обычная база данных для развернутых приложений Heroku.

Щелкните это дополнение, чтобы проверить информацию о базе данных URL-адресов на вкладке настроек. Обязательно добавьте URL-адрес вашей базы данных Postgres в ваше приложение Rails.

Чтобы добавить URL базы данных, вы можете либо создать переменную окружения с помощью гема Фигаро:

или просто включите переменную URL в свой файл database.yml:

Heroku Connect

Затем нажмите «Настроить надстройки» или вкладку «Ресурсы» и найдите Heroku Connect. Нажмите «Provisioning», чтобы добавить надстройку.

После этого вы будете перенаправлены на экран, показанный ниже. Обратите внимание, что на данный момент имя схемы - «salesforce» (не стесняйтесь его также менять), и вы можете продолжить.

Щелкните установить соединение. Введите информацию о пользователе Salesforce, чтобы установить соединение с соответствующими данными.

Вы закончили настройку! Теперь мы можем перейти к сопоставлениям.

Сопоставления

Я записал короткое видео о создании карты для объекта Учитель:

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

1. ‘__c’

Вы можете спросить, почему так много __c добавлено в конце объекта "учитель" и полей "учитель". Что ж, Salesforce фактически добавляет это к каждому настраиваемому классу / полю.

Итак, возвращаясь к моему проекту Rails, имя таблицы теперь Teacher__c вместо Teacher, а имена столбцов / полей были изменены с таких имен, как First_name, Last_name на First_name__c, Фамилия__c. Некоторые поля по умолчанию, такие как sfid или createddate, не являются настраиваемыми, поэтому они не требуют добавления ‘__c’.

2. Настраиваемые поля

Итак, как вы создаете настраиваемые поля? На самом деле в правой части экрана есть небольшая стрелка, с помощью которой вы можете редактировать объекты и поля.

После каждого изменения не забывайте проверять, нужно ли вам также изменять сопоставления Heroku Connect.

3. Двусторонняя синхронизация

Я хотел выделить две очень интересные особенности двусторонней синхронизации Heroku Connect. Первый - это частота опроса, которая регулирует, как часто вы хотите, чтобы ваша база данных Postgres обновлялась с помощью обновлений Salesforce. Установка флажка для ускорения опроса делает большинство операций практически мгновенными.

Второй - это раздел о передаче данных из базы данных Postgres для синхронизации с базой данных Salesforce. Вы должны установить флажок, чтобы эта функция вообще работала. Однако сразу после этого вы, скорее всего, увидите всплывающее окно с предупреждением:

Это уровень защиты, чтобы случайно не создать дубликаты объектов. Замечательно, если у вас есть уникальный идентификатор (в видео у каждого учителя уникальный адрес электронной почты, поэтому я сделал его своим идентификатором). В противном случае вы можете пропустить его и по-прежнему иметь работающее сопоставление Heroku Connect. Однако вы можете захотеть запрограммировать свое приложение на двойную проверку существующих записей перед созданием объекта.

Изменения в вашем локальном приложении Rails

Теперь, когда у вас есть Heroku Connect, все готово и настроено, пришло время для быстрой локальной настройки, прежде чем вы сможете взаимодействовать с данными Salesforce.

В обзоре вы увидите имя своей схемы, в данном случае «salesforce». Если бы вы выбрали другое имя на этапе подготовки, это имя отобразилось бы здесь.

Поскольку имя таблицы моего приложения Rails по-прежнему является Teacher, мне нужно изменить его на Teacher__c, чтобы правильно ссылаться на данные Salesforce. Я должен изменить имя таблицы на формат schema_name. object_name или salesforce.teacher__c, чтобы отразить изменения.

Другое заметное изменение применяется, если ваша модель имеет утвержденные утверждения, как моя модель Учителя. После ключевого слова validates у нас все еще есть старые имена полей, такие как first_name без __c и last_name без __c. Нам нужно изменить эти имена, либо добавив «__c» к старым именам полей, либо создав отдельные методы:

После этого создайте несколько объектов в Salesforce и откройте консоль Rails, чтобы получить эту информацию. (В видео я вызвал Teacher.all, чтобы отобразить все объекты Salesforce Teacher в моей консоли Rails.) Информация также должна быть отражена в проводнике Heroku Connect.

Отражение

Я потратил добрую половину семестра, пытаясь понять интеграцию с Salesforce. Я провел много исследований, экспериментировал с различными решениями и получил много поддержки. В конце концов, работа с классными функциями Salesforce / Heroku / Rails была поучительным опытом. Я также узнал, насколько я вырос как разработчик, и подумал о своих сильных и слабых сторонах.

Обычно люди реализуют первые найденные решения. Они делают это, не понимая, почему это хорошо или плохо. Я исследовал и спланировал три отдельных решения, прежде чем открыл для себя Heroku Connect. Благодаря этому я понял, насколько важно взвесить все «за» и «против» различных решений перед тем, как принять решение, даже если больше времени тратится на исследования, а не на внедрение.

Используя эти знания, мы с моей командой создали приложение, которое поможет учителям предоставлять качественное образование учащимся в школах Доминиканской Республики, у которых плохое подключение к Интернету. Мы научились проявлять настойчивость в тяжелые времена, потому что знали, что, несмотря на каждую длительную рабочую сессию, каждое исправление ошибок, каждую строчку кода, у нас есть миссия, и каждый шаг на этом пути был еще одним шагом к улучшению мира.

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

Поэтому всем разработчикам, в какой бы ситуации вы ни оказались, не сдавайтесь. Не бойтесь пробовать новые решения и терпеть неудачи. Оставайтесь позитивными и счастливыми!

Уилсон Ван - младший студент Калифорнийского университета в Беркли, изучает информатику и науку о данных. Он заинтересован в разработке программного обеспечения для улучшения отношений между бизнесом и клиентами. Помимо технологий, Уилсон увлекается боевыми искусствами, архитектурным дизайном и пейзажной фотографией.

Спасибо за прочтение! Чтобы узнать больше о Blueprint, подпишитесь на нас в Facebook и Instagram и посетите наш сайт!