Поток создания и обновления связей¶
Основной поток создания/обновления связей¶
Стартовый сегмент потока: [RELATION_UPSERT_START] - обеспечивает базовую валидацию исходного контекста (наличие связи, проверку существования левого и правого концов связи, корректность статуса записи обновляемой связи). Выполняет настройку исходного контекста.
Сегменты типа Point:
[RELATION_UPSERT_ACCESS] - выполняет проверку прав пользователя на создание/обновление связи;
[RELATION_UPSERT_MEASURED] - нормализует измеряемые атрибуты связи перед сохранением;
[RELAТION_UPSERT_PERIOD_CHECK] - проверяет корректность границ периода актуальности создаваемой/обновляемой связи.
Сегмент типа Selector: [RELATION_UPSERT_SELECTOR] - определяет по какой ветви потока исполнения пойдет процесс создания/изменения связи: черновик [DRAFT] или регулярный поток [REGULAR].
Финишный сегмент: [RELATION_UPSERT_FINISH] - возвращает результат создания/обновления связи.
Ветвь потока [DRAFT]:
[RELATION_UPSERT_MODBOX] - выполняет подготовку внесенных изменений перед вычислением обновленного таймлайна связи;
[RELATION_UPSERT_TIMELINE] - вычисляет обновленный таймлайн связи. Применяет внесенные изменения к текущему таймлайну связи, вычисляет периоды актуальности, создает эталонную запись связи;
[RELATION_UPSERT_DRAFT] - выполняет сохранение/обновление черновика связи;
[RELATION_UPSERT_POSTPROCESSING] - выполняет постобработку атрибутов связи. Вычисляет отображаемые значения для атрибутов типа "Перечисление" и "Ссылка на справочник", заполняет шаблоны ссылок на веб-ресурсы;
Ветвь потока [REGULAR]:
[RELATION_UPSERT_VALIDATE] - выполняет валидацию атрибутов создаваемой/обновляемой связи и проверяет согласованность данных.
[RELATION_UPSERT_INDEXING] - вычисляет изменения в поисковом индексе при создании/обновлении связи.
[RELATION_UPSERT_PERSISTENCE] - применяет изменения, вычисленные при создании/обновлении связи, в базу данных и поисковый индекс.
Рисунок 1 - Пример готового потока выполнения