Comment on page
Перенос данных между системами Бипиума

Процесс переноса системы представляет из себя комбинацию из нескольких внешних запросов, запускающих сценарии по переносу архитектуры и данных между системами. Обращение к внешним запросам должно происходить строго последовательно по следующей схеме: перенос секций -> перенос каталогов в секциях -> перенос полей каталогов -> перенос записей без заполненных связанных полей -> заполнение перенесенных записей связанными полями. Каждый из внешних запросов в вышеописанной схеме запускает сценарий, который обращается в экспортируемую систему Бипиума и переносит в импортируемую систему соответствующие данные. Каждый из сценариев переноса обращается к каталогу «Сопоставление ID», находящемуся в импортируемой системе, для записи или чтения сопоставлений между каталогами экспорта и импорта.
В импортируемой системе создайте каталог «Сопоставление ID». Данный каталог необходим для сопоставления идентификатора сущностей экспортируемой системы с аналогичными сущностями в импортируемой системе. Обратите внимание, что все поля должны создаваться в том же порядке, в каком они созданы на скриншоте ниже, это необходимо для корректного обращения к полям каталога из сценариев. После переноса всех необходимых данных, данный каталог можно удалить из системы. При создании каталога нужно добавить и настроить поля следующим образом:

- Статус (Статус) Описание: Конкретизирует перенесенную сущность.
- ID секции (ориг) (Число) Описание: Хранит ID секции в экспортируемой системе. Настройки: Задайте видимость при значениях статуса «Секция» и «Каталог».
- ID секции (конеч) (Число) Описание: Хранит ID перенесенной секции в импортируемой системе. Настройки: Задайте видимость при значениях статуса «Секция» и «Каталог».
- ID каталога (ориг) (Число) Описание: Хранит ID каталога в экспортируемой системе. Настройки: Задайте видимость при значениях статуса «Каталог», «Поле», «Запись».
- ID каталога (конеч) (Число) Описание: Хранит ID перенесенного каталога в импортируемой системе. Настройки: Задайте видимость при значениях статуса «Каталог», «Поле», «Запись».
- ID поля (ориг) (Число) Описание: Хранит ID поля каталога в экспортируемой системе. Настройки: Задайте видимость при зн ачении статуса «Поле».
- ID поля (конеч) (Число) Описание: Хранит ID перенесенного поля в импортируемой системе. Настройки: Задайте видимость при значении статуса «Поле».

- ID записи (ориг) (Число) Описание: Хранит ID записи в экспортируемой системе. Настройки: Задайте видимость при значении статуса «Запись».
- ID записи (конеч) (Число) Описание: Хранит ID перенесенной записи в импортируемой системе. Настройки: Задайте видимость при значении статуса «Запись».
2.1.2. Создание внешних запросов для переноса
В системном каталоге «Внешние запросы» создайте пять записей и заполните их следующим образом:

В качестве сценариев к созданным запросам необходимо загрузить следующие файлы:
Сценарий по переносу секций из системы выглядит следующим образом:
.png?alt=media&token=39f59d96-2111-490a-9f5a-fd1703a9e832)
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
- Найти сопоставление по этой секции
- Создание записи на сопоставление ID
Сценарий по переносу каталогов из системы выглядит следующим образом:
.png?alt=media&token=2c5fc67e-de0b-42e1-9927-cf9d136010e5)
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
- Найти сопоставление по этому каталогу
- Получение сопоставления по секции
- Создание записи на сопоставление ID
Сценарий по переносу полей каталогов выглядит следующим образом:
.png?alt=media&token=231e44a5-4d2c-48ef-8fab-2c3e53e36e5e)
В сценарии необходимо изменить выделенные компоненты в соответствии с описанием внутри них. Список компонентов к изменению:
- Получить все сопоставления по каталогам
- Получение маппинга каталога
- 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-идентификаторами. Адреса для отправки внешних запросов выглядят следующим образом:
Вместо «import» необходимо вписать домен системы на Бипиуме в которую предполагается импорт.
Обратите внимание, что запросы отправляются асинхронно, так как работа сценариев по переносу сущностей может занимать различное время в зависимости от количества переносимых сущностей. Сценарии по переносу секций и каталогов занимают меньше времени чем сценарии по переносу полей, записей и связанных записей. Сценарий Бипиума, запущенный синхронно, ограничен временем работы в 1 минуту, этого времени может не хватить для переноса требуемых сущностей, и Бипиум принудительно остановит выполнение такого сценария. Для сценария, запущенного асинхронно, такого ограничения нет.
Сценарии переноса записей переносят записи из экспортируемой системы в полном объеме за исключением заполнения полей типа «Сотрудник». Полный перенос каталога «Сотрудники» из экспортируемой системы нецелесообразен и небезопасен. Во всех записях каталогов с типом поля «Сотрудник» сотрудник не будет заполнен. При необходимости самостоятельно введите сотрудников в новую систему или перенесите их из экспортируемой системы вышеописанным способом. Во всех необходимых записях проставьте сотрудников вручную.
В системном каталоге «Внешние запросы» в импортируемой системе должны быть созданы записи с каждой сущностью к переносу: перенос секций, перенос каталогов, перенос полей каталогов, перенос записей без связанных полей, перенос связанных полей в записи. Статусы записей должны находится в состоянии «Активно».

Далее в HTTP-клиенте необходимо сформиров ать POST запрос с определенным телом сообщения для каждого запроса и отправить его.
После отправки сформированного запроса на адрес внешнего запроса в системном каталоге «Процессы» создается запись со статусом выполнения сценария по переносу. Возможные статусы:
- Исполняется — сценарий еще не завершил работу.
- Готово — сценарий завершил работу.
- Ошибка — произошла ошибка в процессе работы сценария.
Контролировать работу сценария также можно из созданного ранее каталога «Сопоставления ID». В процесс е работы сценария на перенос конкретной сущности в каталоге в реальном времени создаются записи о перенесенных на данный момент сущностях. Например, так выглядят записи, созданные в результате работы сценария на перенос двух секций:

В экспортируемой системе для переноса были сформирована структура данных, состоящая их двух секций по два каталога в каждой и некоторым количеством записей внутри этих каталогов. Секции для переноса в импортируемую систему представлены ниже:
.png?alt=media&token=c68670b4-f198-4f33-9b0d-45a9c5385892)
Каталоги для переноса в импортируемую систему внутри секции «Секция с людьми»:
.png?alt=media&token=2cdffa8e-b56f-4190-aa93-e64a1ae5f827)
Структура переносимого каталога «Люди»:

Записи в переносимом каталоге «Люди»:

Структура переносимого каталога «Группы людей»:

Записи в переносимом каталоге «Группы людей»:

Каталоги для переноса в импортируемую систему внутри секции «Секция с товарами»:

Структура переносимого каталога «Товары»:

Записи в переносимом каталоге «Товары»:

Структура переносимого каталога «Товары на складе»:

Записи в переносимом каталоге «Товары на складе»:

Для переноса секций в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:

В результате работы сценария, запущенного внешним запросом по переносу секций, в импортируемой системе создались записи со статусом «Секция», хранящие следующую информацию:
- ID секции в экспортируемой системе.
- ID секции в импортируемой системе.

Секции успешно перенеслись в импортируемую систему и аналогичные секциям из экспортируемой системы.
Для переноса каталогов в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:

В результате работы сценария, запущенного внешним запросом по переносу каталогов, в импортируемой системе создались записи со статусом «Каталог», хранящие следующую информацию:
- ID секции каталога в экспортируемой системе.
- ID секции каталога в импортируемой системе.
- ID каталога в экспортируемой системе.
- ID каталога в импортируемой системе.

Каталоги успешно перенеслись в импортируемую систему и аналогичны каталогам из экспортируемой системы.
Для переноса каталогов в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:
.png?alt=media&token=99864a13-39b0-489b-a588-5dfed1b4d630)
В результате работы сценария, запущенного внешним запросом по переносу полей каталогов, в импортируемой системе создались записи со статусом «Поле», хранящие следующую информацию:
- ID каталога в экспортируемой системе.
- ID каталога в импортируемой системе.
- ID поля каталога в экспортируемой системе.
- ID поля каталога в импортируемой системе.

Поля каталогов успешно перенеслись в импортируемую систему и аналогичны полям каталогов из экспортируемой системы.
Для переноса записей из каталогов в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:

В результате работы сценария, запущенного внешним запросом по переносу полей каталогов, в импортируемой системе создались записи со статусом «Поле», хранящие следующую информацию:
- ID каталога записи в экспортируемой системе.
- ID каталога записи в импортируемой системе.
- ID записи в экспортируемой системе.
- ID записи в импортируемой системе.

Записи из каталогов успешно перенеслись в импортируемую систему и аналогичны полям каталогов из э кспортируемой системы, за исключением наличия связанных записей.
Для переноса связанных записей в ранее перенесенные записи в импортируемую систему в HTTP-клиенте «Postman» был сформирован и отправлен следующий POST-запрос:

В результате работы внешнего запроса в перенесенные ранее записи в соответствующие поля проставились корректные связанные записи.
Last modified 1yr ago