Перенос данных между системами Бипиума
Last updated
Last updated
Процесс переноса системы представляет из себя комбинацию из нескольких внешних запросов, запускающих сценарии по переносу архитектуры и данных между системами. Обращение к внешним запросам должно происходить строго последовательно по следующей схеме: перенос секций -> перенос каталогов в секциях -> перенос полей каталогов -> перенос записей без заполненных связанных полей -> заполнение перенесенных записей связанными полями. Каждый из внешних запросов в вышеописанной схеме запускает сценарий, который обращается в экспортируемую систему Бипиума и переносит в импортируемую систему соответствующие данные. Каждый из сценариев переноса обращается к каталогу «Сопоставление ID», находящемуся в импортируемой системе, для записи или чтения сопоставлений между каталогами экспорта и импорта.
В импортируемой системе создайте каталог «Сопоставление ID». Данный каталог необходим для сопоставления идентификатора сущностей экспортируемой системы с аналогичными сущностями в импортируемой системе. Обратите внимание, что все поля должны создаваться в том же порядке, в каком они созданы на скриншоте ниже, это необходимо для корректного обращения к полям каталога из сценариев. После переноса всех необходимых данных, данный каталог можно удалить из системы. При создании каталога нужно добавить и настроить поля следующим образом:
Статус (Статус) Описание: Конкретизирует перенесенную сущность.
ID секции (ориг) (Число) Описание: Хранит ID секции в экспортируемой системе. Настройки: Задайте видимость при значениях статуса «Секция» и «Каталог».
ID секции (конеч) (Число) Описание: Хранит ID перенесенной секции в импортируемой системе. Настройки: Задайте видимость при значениях статуса «Секция» и «Каталог».
ID каталога (ориг) (Число) Описание: Хранит ID каталога в экспортируемой системе. Настройки: Задайте видимость при значениях статуса «Каталог», «Поле», «Запись».
ID каталога (конеч) (Число) Описание: Хранит ID перенесенного каталога в импортируемой системе. Настройки: Задайте видимость при значениях статуса «Каталог», «Поле», «Запись».
ID поля (ориг) (Число) Описание: Хранит ID поля каталога в экспортируемой системе. Настройки: Задайте видимость при значении статуса «Поле».
ID поля (конеч) (Число) Описание: Хранит ID перенесенного поля в импортируемой системе. Настройки: Задайте видимость при значении статуса «Поле».
ID записи (ориг) (Число) Описание: Хранит ID записи в экспортируемой системе. Настройки: Задайте видимость при значении статуса «Запись».
ID записи (конеч) (Число) Описание: Хранит ID перенесенной записи в импортируемой системе. Настройки: Задайте видимость при значении статуса «Запись».
2.1.2. Создание внешних запросов для переноса
В системном каталоге «Внешние запросы» создайте пять записей и заполните их следующим образом:
В качестве сценариев к созданным запросам необходимо загрузить следующие файлы:
Сценарий по переносу секций из системы выглядит следующим образом:
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
Найти сопоставление по этой секции
Создание записи на сопоставление ID
Сценарий по переносу каталогов из системы выглядит следующим образом:
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
Найти сопоставление по этому каталогу
Получение сопоставления по секции
Создание записи на сопоставление ID
Сценарий по переносу полей каталогов выглядит следующим образом:
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
Получить все сопоставления по каталогам
Получение маппинга каталога
fieldMapping
Создание записи в сопоставлении
Сценарий по переносу записей каталогов выглядит следующим образом:
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
Найти сопоставление каталога
Получить сопоставление полей по обрабатываемому каталогу
Получение сопоставления записи из импортируемой системы
Создание записи сопоставления записи
Сценарий по переносу связанных записей в записи выглядит следующим образом:
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
Получение сопоставления каталога в импортируемой системе
Получение сопоставлений полей для каталогов
Получение сопоставления записи в импортируемой системе
Получение сопоставления записи
Для работы сценариев по адресам внешних запросов необходимо сформировать запрос с необходимыми данными для выгрузки. В данной статье в качестве HTTP-клиента для формирования запросов используется Postman. Запросы на адреса внешних запросов необходимо отправлять методом POST, с заданными в body параметрами запроса. Примеры заполненных body для всех внешних запросов приведены ниже.
Параметры в body для внешнего запроса на перенос секций выглядят следующим образом:
Поля, которые необходимо изменить:
Объект «export»:
В поле «domain» замените «export» на домен системы Бипиума, из которой необходимо экспортировать секции.
В поле «login» замените «user» на адрес электронной почты сотрудника с доступом в экспортируемую систему Бипиума.
В поле «password» замените «password» на пароль сотрудника с доступом в экспортируемую систему Бипиума.
Объект «import»:
В поле «domain» замените «import» на домен системы Бипиума, в которую необходимо импортировать секции.
В поле «login» замените «user» на адрес электронной почты сотрудника с доступом в импортируемую систему Бипиума.
В поле «password» замените «password» на пароль сотрудника с доступом в импортируемую систему Бипиума.
Объект «sections»:
Заполните массив идентификаторами секций (id) из экспортируемой системы. Узнать id секции, как и id каталога, можно из адресной строки браузера в системе:
Параметры в body для внешнего запроса на перенос всех остальных сущностей одинаковы и выглядят следующим образом:
Поля, которые необходимо изменить:
Объект «export»:
В поле «domain» замените «export» на домен системы Бипиума, из которой необходимо экспортировать секции.
В поле «login» замените «user» на адрес электронной почты сотрудника с доступом в экспортируемую систему Бипиума.
В поле «password» замените «password» на пароль сотрудника с доступом в экспортируемую систему Бипиума.
Объект «import»:
В поле «domain» замените «import» на домен системы Бипиума, в которую необходимо импортировать секции.
В поле «login» замените «user» на адрес электронной почты сотрудника с доступом в импортируемую систему Бипиума.
В поле «password» замените «password» на пароль сотрудника с доступом в импортируемую систему Бипиума.
Объект «catalogs»:
Заполните массив идентификаторами каталогов (id) из экспортируемой системы. Узнать id секции, как и id каталога, можно из адресной строки браузера в системе:
Важно! Порядок следования в массиве каталогов имеет значение при переносе полей каталогов. В первую должны переноситься каталоги без связанных полей, являющиеся значениями связанных полей для остальных каталогов. Например, если Каталог А имеет поле связанной записи с Каталогом Б, то в первую очередь необходимо перенести каталог Б для корректной записи связанного поля в каталоге А. В случае же если это правило не будет соблюдаться, перенесенные поля со связанными записями не будет ссылаться на нужные каталоги и их придется связывать в структуре вручную.
Сформированный POST-запрос с заполненным телом сообщения необходимо отправить на адреса внешних запросов с заданными ранее URL-идентификаторами. Адреса для отправки внешних запросов выглядят следующим образом:
Перенос секций: https://import.bpium.ru/api/webrequest/sections/?async=true
Перенос каталогов: https://import.bpium.ru/api/webrequest/catalogs/?async=true
Перенос полей каталогов: https://import.bpium.ru/api/webrequest/fields/?async=true
Перенос записей без связанных полей: https://import.bpium.ru/api/webrequest/records/?async=true
Перенос связанных полей в записи: https://import.bpium.ru/api/webrequest/records/obj/?async=true
Вместо «import» необходимо вписать домен системы на Бипиуме в которую предполагается импорт.
Обратите внимание, что запросы отправляются асинхронно, так как работа сценариев по переносу сущностей может занимать различное время в зависимости от количества переносимых сущностей. Сценарии по переносу секций и каталогов занимают меньше времени чем сценарии по переносу полей, записей и связанных записей. Сценарий Бипиума, запущенный синхронно, ограничен временем работы в 1 минуту, этого времени может не хватить для переноса требуемых сущностей, и Бипиум принудительно остановит выполнение такого сценария. Для сценария, запущенного асинхронно, такого ограничения нет.
Сценарии переноса записей переносят записи из экспортируемой системы в полном объеме за исключением заполнения полей типа «Сотрудник». Полный перенос каталога «Сотрудники» из экспортируемой системы нецелесообразен и небезопасен. Во всех записях каталогов с типом поля «Сотрудник» сотрудник не будет заполнен. При необходимости самостоятельно введите сотрудников в новую систему или перенесите их из экспортируемой системы вышеописанным способом. Во всех необходимых записях проставьте сотрудников вручную.
В системном каталоге «Внешние запросы» в импортируемой системе должны быть созданы записи с каждой сущностью к переносу: перенос секций, перенос каталогов, перенос полей каталогов, перенос записей без связанных полей, перенос связанных полей в записи. Статусы записей должны находится в состоянии «Активно».
Далее в HTTP-клиенте необходимо сформировать POST запрос с определенным телом сообщения для каждого запроса и отправить его.
После отправки сформированного запроса на адрес внешнего запроса в системном каталоге «Процессы» создается запись со статусом выполнения сценария по переносу. Возможные статусы:
Исполняется — сценарий еще не завершил работу.
Готово — сценарий завершил работу.
Ошибка — произошла ошибка в процессе работы сценария.
Контролировать работу сценария также можно из созданного ранее каталога «Сопоставления ID». В процессе работы сценария на перенос конкретной сущности в каталоге в реальном времени создаются записи о перенесенных на данный момент сущностях. Например, так выглядят записи, созданные в результате работы сценария на перенос двух секций:
В экспортируемой системе для переноса были сформирована структура данных, состоящая их двух секций по два каталога в каждой и некоторым количеством записей внутри этих каталогов. Секции для переноса в импортируемую систему представлены ниже:
Каталоги для переноса в импортируемую систему внутри секции «Секция с людьми»:
Структура переносимого каталога «Люди»:
Записи в переносимом каталоге «Люди»:
Структура переносимого каталога «Группы людей»:
Записи в переносимом каталоге «Группы людей»:
Каталоги для переноса в импортируемую систему внутри секции «Секция с товарами»:
Структура переносимого каталога «Товары»:
Записи в переносимом каталоге «Товары»:
Структура переносимого каталога «Товары на складе»:
Записи в переносимом каталоге «Товары на складе»:
Для переноса секций в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:
В результате работы сценария, запущенного внешним запросом по переносу секций, в импортируемой системе создались записи со статусом «Секция», хранящие следующую информацию:
ID секции в экспортируемой системе.
ID секции в импортируемой системе.
Секции успешно перенеслись в импортируемую систему и аналогичные секциям из экспортируемой системы.
Для переноса каталогов в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:
В результате работы сценария, запущенного внешним запросом по переносу каталогов, в импортируемой системе создались записи со статусом «Каталог», хранящие следующую информацию:
ID секции каталога в экспортируемой системе.
ID секции каталога в импортируемой системе.
ID каталога в экспортируемой системе.
ID каталога в импортируемой системе.
Каталоги успешно перенеслись в импортируемую систему и аналогичны каталогам из экспортируемой системы.
Для переноса каталогов в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:
В результате работы сценария, запущенного внешним запросом по переносу полей каталогов, в импортируемой системе создались записи со статусом «Поле», хранящие следующую информацию:
ID каталога в экспортируемой системе.
ID каталога в импортируемой системе.
ID поля каталога в экспортируемой системе.
ID поля каталога в импортируемой системе.
Поля каталогов успешно перенеслись в импортируемую систему и аналогичны полям каталогов из экспортируемой системы.
Для переноса записей из каталогов в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:
В результате работы сценария, запущенного внешним запросом по переносу полей каталогов, в импортируемой системе создались записи со статусом «Поле», хранящие следующую информацию:
ID каталога записи в экспортируемой системе.
ID каталога записи в импортируемой системе.
ID записи в экспортируемой системе.
ID записи в импортируемой системе.
Записи из каталогов успешно перенеслись в импортируемую систему и аналогичны полям каталогов из экспортируемой системы, за исключением наличия связанных записей.
Для переноса связанных записей в ранее перенесенные записи в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:
В результате работы внешнего запроса в перенесенные ранее записи в соответствующие поля проставились корректные связанные записи.