Склейка данных

О склейке данных

Мы предполагаем, что данными из нашего API пользуются сторонние сервисы. Это значит, что мы должны дать им механизмы, позволяющие видеть изменения наших объектов. У нас есть некоторые встроенные системные поля, показывающие когда и кто создавал/обновлял объекты.
Бывают ситуации, когда пользователь нашей системы допускает дубли в своих данных, это значит, что были заведены два одинаковых бизнес объекта, и эти объекты разошлись в другие системы, где кто-то мог успеть использовать эти объекты в какой-то логике.
Например, у нас есть "Объект общей собственности" (Property), и оператор по ошибке завел дубликата этого объекта с одинаковым адресом. Это попало в биллинговые системы, и там к объектам уже успели привязать "Лицевые Счета" (BillingAccount / BankingAccount), и клиент уже успел выполнить "Платежи" (Payment).
Фактически, мы должны произвести процедуру склеивания двух одинаковых объектов. Для этого мы удалим один из объектов (не важно, какой из двух) и проставляем в нем поля newId.
Бывают ситуации, когда мы принимаем решение, что объекты слишком разные и более не являются одной сущностью.
Например, у нас есть объект "Здание" у которого есть атрибут "тип_здания", он может принимать значения "внутренний паркинг", "многоквартирный дом", "отдельно стоящий паркинг". Через некоторое время, мы поняли, что объекты с атрибутом "внутренний паркинг" являются самостоятельными бизнес сущностями и имеют собственный жизненный цикл. Нам нужно провести миграцию данных.
Для проведения миграции, мы создаем новую бизнес сущность "Внутренний паркинг", где один из атрибутов указывает на "Здание" к которому этот паркинг относится. Старые бизнес объекты нужно удалить и поставить в них поля newId и newType.