Лоадер позволяет производить манипуляции с базой данных salesforce. Взаимодействие осуществляется при помощи библиотеки jsforce https://jsforce.github.io/ Документация: https://jsforce.github.io/document/
- loader
╞ data
╞ config.json - данные для создания презентаций (заполнение темплейтов)
╞ configsf.json - конфиг для доступа к песочнице, загрузки через ftp
╞ data.xls - данные для заполнения description и display order
╞ functions
╞ connect.js - авторизация и подключение к БД песочницы
╞ createCTL.js - создание CTL-файлов (файл-сопровождения архивов) для загрузки по ftp
╞ find.js - запрос и получение полной информации по презентации для дальнейшей работы
╞ ftpDeploy.js - авторизация и отправка файлов (CTL и zip) на ftp-сервер
╞ getConfirm.js - подтверждение для операции удаления презентации
╞ getDirsTree.js - получение структуры папок презентаций (работа с файловой системой в `zip\`)
╞ getInputValue.js - работа с консольным вводом
╞ parseJson.js - парсинг `loader\data\data.xls` в json
╞ getProductId.js - получение id продукта из SalesForce
╞ modules
╞ createPres.js - создание структуры презентации
╞ deletePres.js - удаление структуры презентации
╞ deploy.js - отправка презентации на ftp-сервер
╞ description.js - заполнение description презентации
╞ displayOrder.js - изменение display-order слайдов презентации
╞ manifest.js - создание манифеста
╞ checkStructure.js - сравнивает структуру презентации в SalesForce и в папке zip на наличие новых слайдов или удаленных слайдов
╞ changeStructure.js - (перед запуском желательно проверить правильность изменений модулем checkStructure) добавляет в SalesForce записи о недостающих слайдах (если есть), удаляет из SalesForce лишние слайды(те которых нет в папке zip, но есть в SalesForce)
╞ createSurvey.js - создает Survey из json файла(для работы модуля требуются поля в package.json "survey_name", "survey_dir" и "survey_type"(сейчас есть 3 типа: Suggestion_Survey_vod, Recurring_vod, One_Time_vod),
пример:
"survey_name": "test_product_survay",
"survey_dir": "./survey/test_product_survay",
"survey_type": "Recurring_vod")
Пример структуры jsona:
[
{
"question__text": "Какой сегодня день недели?",
"question__type": "checkbox",
"question__answers": [
{
"question__answer_text": "Понедельник",
},
{
"question__answer_text": "Вторник",
},
{
"question__answer_text": "Среда",
},
{
"question__answer_text": "Четверг",
},
{
"question__answer_text": "Пятница",
},
{
"question__answer_text": "Суббота",
},
{
"question__answer_text": "Воскресенье",
}
]
}
]
╞ deleteSurvey.js - ищет Survey по подстроке и удаляет его
╞ findDuplicate.js - ищет КМ с именами слайдов из папки zip и смотрит есть ли слайды к которым приклеплен этот КМ, если нет слайдов с таким КМ, выводит сообщение с просьбой проверить этот КМ.Id
╞ index.js - исполняемый файл
- manifests - папка с выгруженными манифестами
- zip - папка с собранными презентациями
#Работа с загрузчиком, основные положения
Инструмент 'Loader' используется для автоматизации процессов создания, удаления, загрузки презентаций в тестовую среду salesforce Структура презентации представляет собой взаимодействие следующих сущностей (записи в бд salesforce):
- презентация
- слайды
- keymessages
- shared-ресурс (keymessage с типом shared-resource)
###Основные моменты:
- Контент слайдов прикрепляется как zip-архив к keymessages
- Презентация изначально никак не связана с keymessages
- Для их связи используются cущности с типом 'slide'. В нем указываются айдишники презентации и keymessage
- shared-ресурс возможно прикрепить к keymessages обычного типа (в нем рационально хранить конфиги, pdf, общие скрипты и стили для уменьшения объема zip-архивов слайдов сборки и отсутствия необходимость перезаливать всю презу)
- shared-ресурс опционален и возможность работы с ним оговаривается при получени задания от менеджера.
В loader'е реализована данная схема:
- Получение id продукта под которым будет загружена презентация
- Создается презентация (берется ее id)
- Создается shared-ресурс (берется его id)
- Создаются keymessages с указанием id shared'a (берутся их id)
- Создаются слайды (используются id презентации и keymessages)
Если презентация не создана (отсутствует в песочнице), то создаем ее (список през прилетает из папки 'zip', по сути это названия папок собранных презентаций)
При создании презы есть возможность указать продукт. Дефолтное значение указано в package.json -> "product"
. Проверяем создан ли продукт в тестовой среде
ВАЖНО!!! если презентация уже создана, то создается дубляж презы и песочница засоряется. Нужно найти все вхождения по подстроке и удалить их. После этого создать заново.
Если возникает ошибка, то при попытке удалить презу из песочницы, вероятнее всего не удален shared ресурс у презы (смотрим внимательно на логи).
В этом случае, вручную удаляем ненужный shared из песочницы (через web-интерфейс salesforce). Так же на всякий случай смотрим удалены ли key-messages (ищем все вхождения через поиск в интерфейсе salesforce).
Слайды после этого удалять не нужно, нужно лишь вручную (web-интерфейс salesforce) удалить объект презентации. После этого создаем презу с помощью loadera
- Создаем презу
- Деплоим ее
- В случае необходимости обновляем display order. Конфиги хранятся в файле
loader\data\data.xls
.
- Для добавления, создаем новую вкладку с именем презы, первая ячейка 'name', последующие в желаемом порядке слайдов. Важно не оставлять пустых строк.
- Descriptions. Тот же файл, вкладка
descriptions
- При передаче презентаций клиенту неодходимо создавать манифесты - слепок-эксель из песочницы salesforce
#Check-list
- [ ] Добавить возможность выгрузки манифестов без shared (реализовано в
https://bitbucket.org/onpoint_dev/boehringer_pradaxa_praxbind_19_2
). - [ ] Добавить возможность создания и удаления всех презентаций сразу на основе зипов.
- [ ] В manifestUsual в поле Hidden определять если продукт "sandoz" то "NO"