На одном из проектов сделали довольно хитрую схему импорта данных из буферной таблицы. Для пользователя написан вариант использования и там все просто:
См также:
Как составлять вариант использования
А на нашей стороне надо проверить таблицу инкрементов, попробовать выбрать этот инкремент, проверить, создавать новые карточки или обновлять старые, и другие подробности. Если смотреть через админку, триггер запускал три задачи:
Это было продуктивное общение! Пока он объяснял, я рисовала на бумажке схему и задавала по ней вопросы. После нескольких вопросов раработчик признал, что я молодец, он про «вот это и то» не думал. Не зря рисовала!! Без рисунка я бы просто не удержала все в голове и не обнаружила проблемные зоны.
По итогам обсуждения я создала в конфлюенсе раздел «Техническая сторона сценариев, алгоритмы» и переписала туда все со своего листочка, полученный алгоритм и рисунок (в visio накидала):
- Исходная система выгрузила данные в буферные таблицы
- В таблице increment добавила номер выгруженного инкремента — это будет флаг для нашей системы начинать забор данных.
См также:
Как составлять вариант использования
А на нашей стороне надо проверить таблицу инкрементов, попробовать выбрать этот инкремент, проверить, создавать новые карточки или обновлять старые, и другие подробности. Если смотреть через админку, триггер запускал три задачи:
- Подготовка данных
- Загрузка
- Очистка буфера
Это было продуктивное общение! Пока он объяснял, я рисовала на бумажке схему и задавала по ней вопросы. После нескольких вопросов раработчик признал, что я молодец, он про «вот это и то» не думал. Не зря рисовала!! Без рисунка я бы просто не удержала все в голове и не обнаружила проблемные зоны.
По итогам обсуждения я создала в конфлюенсе раздел «Техническая сторона сценариев, алгоритмы» и переписала туда все со своего листочка, полученный алгоритм и рисунок (в visio накидала):
- null => 1. Выбираем все записи из таблицы INCREMENTS, где import_status is null и устанавливаем им значение import_status = 1.
- Удаляем неактуальные записи из буферных таблиц (физ лица и телефонов).
- Грузим физиков по условию in (id_increment, для которого import_status in 1).
- Грузим телефоны по условию in (import_status in 1).
- Создаем связи телефон - физик или телефон - юрик (тип контрагента смотрим по staging).
- Удаляем физиков из буфера, если не было ошибок на этапе загрузки.
- Удаляем те телефоны, у которых есть связи (проверяем наличие record_id физика/юрика в staging).
- 1 => 2. Выбираем все записи из таблицы INCREMENTS, где import_status = 1 и устанавливаем им значение import_status = 2.





