Идентификация объектов между системами
Один и тот же бизнес-объект — контрагент, товар, склад — существует в нескольких системах одновременно. У каждой системы свой внутренний идентификатор этого объекта. Чтобы системы понимали друг друга при обмене, нужен механизм, который связывает эти идентификаторы.
Таблица идентификаторов
Каждый участник обмена ведёт собственную таблицу соответствий идентификаторов. Для каждого известного объекта в ней хранится:
- Внутренний идентификатор — UUID объекта в локальной системе.
- Внешний идентификатор — UUID того же объекта в интегрируемой системе.
- Интегрируемая система — ссылка на запись о внешней системе.
Один локальный объект может иметь несколько записей в таблице — по одной на каждую систему, с которой он обменивается.
Первый обмен
Когда объект впервые участвует в обмене, записи для него в таблице ещё нет.
При первой отправке: система видит, что объект не известен внешней системе, и назначает ему внешний идентификатор равным внутреннему. Эта пара записывается в таблицу. При повторных отправках запись берётся уже из таблицы.
При первом получении: система получает сообщение с идентификатором объекта из внешней системы, создаёт объект у себя и сохраняет соответствие в таблице. При следующих получениях запись уже есть — система понимает, что объект создавать не нужно, нужно обновить существующий.
Данные в сообщении
В каждом сообщении обмена идентификатор объекта передаётся как массив структур — по одной на каждую систему, которой он известен:
Получатель находит в массиве запись с идентификатором своей системы или с идентификатором отправителя — и по ней находит объект в своей таблице соответствий. Если совпадений нет — объект создаётся как новый.
Дедупликация перед началом обмена
Если обе системы уже содержат данные до запуска обмена, возникает задача дедупликации: нужно заранее сопоставить элементы справочников и загрузить соответствия в таблицы идентификаторов. Это даёт системам информацию о том, какие объекты уже существуют у обеих сторон — и не создавать дубли при первых обменах.
Дедупликация — ручной процесс. Инструменты для него каждый проект выбирает самостоятельно: выгрузка в Excel, специализированные средства сравнения, скрипты. Результат в любом случае один — заполненная таблица соответствий до старта обмена.
Что дальше
- Структура сообщения обмена — где в сообщении живёт массив идентификаторов.
- Типы данных / Ссылка на сущность — формат структуры
{SystemID, SystemName, EntityID}. - Параллелизм — почему ссылки между объектами обрабатываются отложенно.