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

Основной поток создания/обновления связей

  1. Стартовый сегмент потока [RELATION_UPSERT_START] - обеспечивает базовую валидацию исходного контекста (наличие связи, проверку существования левого и правого концов связи, корректность статуса записи обновляемой связи). Выполняет настройку исходного контекста.

  2. Сегменты типа Point:

    • [RELATION_UPSERT_ACCESS] - выполняет проверку прав пользователя на создание/обновление связи;

    • [RELATION_UPSERT_MEASURED] - нормализует измеряемые атрибуты связи перед сохранением;

    • [RELAТION_UPSERT_PERIOD_CHECK] - проверяет корректность границ периода актуальности создаваемой/обновляемой связи.

    • [RELATION_UPSERT_MODBOX] - сохраняет новую модификацию записи в контекст вставки/обновления связи.

    • [RELATION_UPSERT_TIMELINE] - вычисляет текущий и следующий таймлайн вставляемой/обновляемой связи. В потоке выполнения сегмент должен находиться ПОСЛЕ сегмента, сохраняющего новую модификацию связи - [RELATION_UPSERT_MODBOX].

  3. Сегмент типа Selector [RELATION_UPSERT_SELECTOR] - определяет, по какой ветви потока исполнения пойдет процесс создания/изменения связи: черновик [DRAFT] или регулярный поток [REGULAR].

  4. Финишный сегмент [RELATION_UPSERT_FINISH] - возвращает результат создания/обновления связи.

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

  • [RELATION_UPSERT_MODBOX] - сохраняет новую модификацию связи в контексте вставки/обновления связи.

  • [RELATION_UPSERT_STATE] - точка сохраняет в контекст вставки/обновления связи новое состояние связи. В потоке выполнения точка должна находиться после точки сохранения новой модификации связи (org.unidata.dg.data[RELATION_UPSERT_MODBOX]).

  • [RELATION_UPSERT_DRAFT] - создает/обновляет черновик связи с указанием соответствующей операции черновика.

  • [RELATION_UPSERT_POSTPROCESSING] - выполняет пост обработку вставляемой/обновляемой записи.

  • [RELATION_UPSERT_INDEXING] - подготавливает данные связи для индексации при вставке/обновлении.

  • [RELATION_UPSERT_PERSISTENCE] - точка выполняет финальную фазу вставки/обновления связи - обновление данных в постоянном хранилище.

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

  • [RELATION_UPSERT_MODBOX] - сохраняет новую модификацию связи в контексте вставки/обновления связи.

  • [RELATION_UPSERT_STATE] - точка сохраняет в контекст вставки/обновления связи новое состояние связи. В потоке выполнения точка должна находиться после точки сохранения новой модификации связи (org.unidata.dg.data[RELATION_UPSERT_MODBOX]).

  • [RELATION_UPSERT_VALIDATE] - выполняет валидацию вставки/обновления связи. Если операция неверна, то выбрасывает исключение.

  • [RELATION_CHANGE_VALIDATE] - выполняет изменение вставки/обновления связи. Если операция неверна, то выбрасывает исключение.

  • [RELATION_UPSERT_INDEXING] - подготавливает данные связи для индексации при вставке/обновлении.

  • [RELATION_UPSERT_SNAPSHOT] - создает снэпшот связи при загрузке сканером.

  • [RELATION_UPSERT_BREADCRUMBS] - сохраняет вложенную связь как breadcrumbs-связь.

  • [RELATION_UPSERT_SUBSCRIPTIONS] - отправляет уведомления всем пользователям подписавшимся на обновление актива со связями.

  • [RELATION_UPSERT_PERSISTENCE] - точка выполняет финальную фазу вставки/обновления связи - обновление данных в постоянном хранилище.

  • [RELATION_UPSERT_POSTPROCESSING] - выполняет пост-обработку вставляемой/обновляемой связи.

  • [RELATION_AUDIT_EVENT] - Обрабатывает успешные действия с активом данных и передает их в аудит или любому другому потребителю данных через домен сообщений. Сегмент желательно размещать в потоке выполнения в секции для обычных сегментов как можно позже.