Поток создания и обновления связей

Поток выполнения создания/обновления связей выполняет проверку параметров связи на наличие: левого/правого концов связи, прав пользователя на работу со связью.

Описание сегментов потока:

  1. Стартовый сегмент: [RELATION_UPSERT_START] – обеспечивает базовую валидацию исходного контекста и выполняет его настройку для дальнейшего исполнения в потоке:

    • Контекст должен иметь корректную идентификацию левого и правого концов связи: либо идентификация на основе эталонной записи (etalonId); либо на основе исходной записи (externalId, sourceSystem); либо оба варианта.

    • Эталонные и исходные записи левого и правого концов связи должны иметь активный статус (ACTIVE).

  2. Сегмент типа Selector: [RELATION_UPSERT_SELECTOR] – определяет по какой ветви потока пойдет процесс. Если выполняется создание/обновление связи в режиме черновика, то запускается ветвь [DRAFT]; в обычном режиме – ветвь [REGULAR].

  3. Финишный сегмент: [RELATION_UPSERT_FINISH] – возвращает ключи и эталонную запись созданной/обновленной связи.

Ветвь потока [DRAFT]:

  • Point сегмент [RELATION_UPSERT_MODBOX] – выполняет подготовку внесенных изменений перед вычислением обновленного состояния связи.

  • Point сегмент [RELATION_UPSERT_STATE] – вычисляет обновленное состояние связи. Применяет внесенные изменения к текущему состоянию связи, создает эталонную запись.

  • Point сегмент [RELATION_UPSERT_DRAFT] – выполняет сохранение/обновление черновика актива.

Ветвь потока [REGULAR]:

  • Point сегмент [RELATION_UPSERT_MODBOX] – выполняет подготовку внесенных изменений перед вычислением обновленного состояния связи.

  • Point сегмент [RELATION_UPSERT_STATE] – вычисляет обновленное состояние связи. Применяет внесенные изменения к текущему состоянию связи, создает эталонную запись.

  • Point сегмент [RELATION_UPSERT_VALIDATE] – выполняет валидацию вычисленной эталонной записи на соответствие связи модели.

  • Point сегмент [RELATION_UPSERT_INDEXING] – вычисляет изменения связи для поискового индекса.

  • Point сегмент [RELATION_UPSERT_PERSISTENCE] – выполняет сохранение внесенных изменений в базу данных, поисковый индекс и хранилище графа.