Потоки выполнения действий с записями

В этой статье:

Поток выполнения вставки/обновления записи

  1. Стартовый сегмент [RECORD_UPSERT_START] - Начинает процесс вставки/обновления записи.

  2. Сегмент типа Point [RECORD_UPSERT_ACCESS] - Проверяет права текущего пользователя на вставку/обновление записи, согласно системным ролям.

  3. Сегмент типа Point [RECORD_UPSERT_MEASURED] - Проверяет единицы измерения значений атрибутов вставляемой/обновляемой записи.

  4. Сегмент типа Point [RECORD_UPSERT_PERIOD_CHECK] - Проверяет периоды актуальности вставляемой/обновляемой записи.

  5. Сегмент типа Point [RECORD_UPSERT_MODBOX] - Сохраняет новую модификацию записи в контекст вставки/обновления записи.

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

  7. Сегмент типа Point [RECORD_UPSERT_DRAFT_ID] - Создает ID черновика записи, если это необходимо.

  8. Сегмент типа Connector [RELATIONS_DELETE_CONNECTOR] - Удаляет связи текущей записи.

  9. Сегмент типа Connector [RELATIONS_UPSERT_CONNECTOR] - Создает/обновляет связи текущей записи.

  10. Сегмент типа Connector [CLASSIFICATION_DELETE_CONNECTOR] - Удаляет классификации текущей записи.

  11. Сегмент типа Connector [CLASSIFICATION_UPSERT_CONNECTOR] - Создает/обновляет классификации текущей записи.

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

  13. Финишный сегмент [RECORD_UPSERT_FINISH] - Завершает процесс вставки/обновления записи.

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

  • Сегмент типа Selector [RECORD_UPSERT_DRAFT_DQ_SELECTOR] - Определяет, по какой ветви потока исполнения пойдет процесс: фаза черновика [DRAFT_PHASE] или регулярная фаза [REGULAR].

    • Фаза черновика [DRAFT_PHASE] добавляет к основному потоку еще 3 сегмента выполнения:

      • [RECORD_QUALITY_CONNECTOR] - Выполняет проверку назначенных на реестр/справочник наборов правил качества и, в случае их наличия, запускает поток выполнения правил качества для записей.

      • [RELATION_UPSERT_CONTINUE_CONNECTOR] - Создает/обновляет связи текущей записи.

      • [CLASSIFICATION_UPSERT_CONTINUE_CONNECTOR] - Создает/обновляет классификации текущей записи.

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

  • Сегмент типа Point [RECORD_UPSERT_DRAFT_REFRESH] - Обновляет информацию о записи в черновике, которую обновляют в кэше и других временных хранилищах.

  • Сегмент типа Point [RECORD_UPSERT_DRAFT_WORKFLOW_REFRESH] - Запускает переиндексацию процессов и задач бизнес-процессов, относящихся к обновляемому черновику записи, с целью обновления отображаемого значения объекта.

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

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

  • Сегмент типа Connector [RECORD_QUALITY_CONNECTOR] - Выполняет проверку назначенных на реестр/справочник наборов правил качества и, в случае их наличия, запускает поток выполнения правил качества для записей.

  • Сегмент типа Point [RECORD_UPSERT_VALIDATE] - Выполняет валидацию записи, в случае если запись невалидна, выбрасывает исключение.

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

  • Сегмент типа Point [RECORD_UPSERT_LOB_SUBMIT] - Планирует прием атрибутов-файлов записи.

  • Сегмент типа Point [RECORD_UPSERT_TRANSITION] - Фиксирует/обновляет список переходов состояний записи (например, удаление или восстановление).

  • Сегмент типа Point [RELATION_UPSERT_CONSTRAINTS] - Проверяет ограничения связей при обновлениях записи.

  • Сегмент типа Point [CLASSIFICATION_UPSERT_CONSTRAINTS] - Проверяет ограничения классификации при обновлениях записи.

  • Сегмент типа Connector [RELATION_UPSERT_CONTINUE_CONNECTOR] - Создает/обновляет связи текущей записи.

  • Сегмент типа Connector [CLASSIFICATION_UPSERT_CONTINUE_CONNECTOR] - Создает/обновляет классификации текущей записи.

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

  • Сегмент типа Point [RECORD_UPSERT_REFRESH] - Обновляет информацию о записи из кэша или других временных хранилищ.

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

  • Сегмент типа Connector [RECORD_UPSERT_MATCHING_CONNECTOR] - Позволяет встраивать сегмент для сохранения данных сопоставления в момент сохранения изменений записи и запускать правила сопоставления для них.

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

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

Поток получения истории записи

  1. Стартовый сегмент [RECORD_HISTORY_START] - Начинает получение истории записи.

  2. Сегмент типа Point [RECORD_HISTORY_RECORD] - Получает историю изменений записи.

  3. Сегмент типа Point [RECORD_HISTORY_RELATIONS] - Получает историю изменений связей записи.

  4. Сегмент типа Point [RECORD_HISTORY_CLASSIFICATIONS] - Получает историю изменений классификаций записи.

  5. Сегмент типа Point [RECORD_HISTORY_TRANSITIONS] - Получает список переходов состояний записи (например, удаление или восстановление).

  6. Финишный сегмент [RECORD_HISTORY_FINISH] - Заканчивает получение истории записи.

Поток выполнения удаления записи

  1. Стартовый сегмент [RECORD_DELETE_START] - Начинает процесс удаления записи.

  2. Сегмент типа Point: [RECORD_DELETE_ACCESS] - Проверяет права текущего пользователя на удаление записи согласно системным ролям.

  3. Сегмент типа Point: [RECORD_DELETE_DRAFT_ID] - Создает ID черновика записи, если это необходимо.

  4. Сегмент типа Connector: [RELATIONS_DELETE_CONNECTOR] - Удаляет связи данной записи.

  5. Сегмент типа Connector: [CLASSIFICATION_DELETE_CONNECTOR] - удаляет классификации текущей записи.

  6. Сегмент типа Point: [RECORD_DELETE_MEASURED] - Проверяет единицы измерения значений атрибутов удаляемой записи.

  7. Сегмент типа Point: [RECORD_DELETE_PERIOD_CHECK] - Проверяет периоды актуальности удаляемой записи.

  8. Сегмент типа Selector: [RECORD_DELETE_SELECTOR] - Определяет, как будет происходить удаление записи: в черновике или напрямую.

  9. Сегмент типа Connector [RECORD_DELETE_MATCHING_CONNECTOR] - позволяет встраивать сегмент для сохранения/удаления данных сопоставления в момент удаления записи.

  10. Финишный сегмент [RECORD_DELETE_FINISH] - Завершает процесс удаления записи.

Поток формирования кластеров запрашиваемой записи

  1. Стартовый сегмент [RECORD_GET_START] - Начинает процесс получения кластеров для запрашиваемой записи.

  2. Сегмент типа Point: [RECORD_READ_ACCESS] - Проверяет права текущего пользователя на получение записи согласно системным ролям.

  3. Сегмент типа Point: [RECORD_GET_DIFF] - Получает разницу ревизий записи.

  4. Сегмент типа Point: [RECORD_GET_VISTORY] - Получает историю изменений записи.

  5. Сегмент типа Point: [RECORD_GET_ATTRIBUTES_POSTPROCESSING] - Выполняет пост обработку получаемой записи.

  6. Сегмент типа Point: [RECORD_GET_SECURITY_POSTPROCESSING] - Фильтрует атрибуты получаемой записи по правам доступа.

  7. Сегмент типа Point: [RECORD_AUDIT_EVENT] - Пример сегмента успешных действий с записью данных, которые могут быть сообщены в аудит или любому другому потребителю данных через домен сообщений. Сегмент желательно размещать в потоке выполнения в секции для обычных сегментов как можно позже.

  8. Сегмент типа Connector [RELATIONS_GET_CONNECTOR] - Позволяет встраивать сегмент для получения данных о связях.

  9. Сегмент типа Connector [CLASSIFICATION_GET_CONNECTOR] - Позволяет встраивать сегмент для получения данных о классификациях.

  10. Сегмент типа Connector [RECORD_GET_QUALITY_CONNECTOR] - Получает вычисленные ошибки правил качества для запрашиваемой записи.

  11. Сегмент типа Connector [RECORD_GET_MATCHING_CONNECTOR] - Позволяет встраивать сегмент для получения данных сопоставления для запрашиваемой записи.

  12. Финишный сегмент [RECORD_GET_FINISH] - Завершает процесс получения кластеров для запрашиваемой записи.

Поток пакетного сохранения изменений записей

  1. Стартовый сегмент [BATCH_RECORD_UPSERT_START] - Начинает процесс пакетной вставки/обновления записи.

  2. Сегмент типа Point: [BATCH_RECORD_GET_PROCESS] - Получает записи из пакета.

  3. Сегмент типа Point: [BATCH_RECORD_AUDIT_EVENT] - Пример сегмента успешных пакетных действий с записью данных, которые могут быть сообщены в аудит или любому другому потребителю данных через домен сообщений. Сегмент желательно размещать в потоке выполнения в секции для обычных сегментов как можно позже.

  4. Сегмент типа Connector [RELATIONS_GET_CONNECTOR] - Позволяет встраивать сегмент для получения данных о связях.

  5. Сегмент типа Connector [BATCH_RECORD_UPSERT_MATCHING_CONNECTOR] - Позволяет встраивать сегмент для сохранения/удаления данных сопоставления при выполнении пакетного сохранения изменений записей.

  6. Финишный сегмент [BATCH_RECORD_UPSERT_FINISH] - Завершает процесс пакетной вставки/обновления записи.

Поток пакетного удаления записей

  1. Стартовый сегмент [BATCH_RECORD_DELETE_START] - Начинает процесс пакетного удаления записи.

  2. Сегмент типа Point: [BATCH_RECORD_DELETE_MULTI_DRAFT] - Создает/продолжает родительский мультичерновик для удаления группы записей. Сегмент обязателен для поддержки массового согласования.

  3. Сегмент типа Point: [BATCH_RECORD_DELETE_PROCESS] - Обрабатывает удаление записей из пакета, собирает статистику по результатам обработки.

  4. Сегмент типа Point: [BATCH_RECORD_DELETE_DRAFT_SKIP] - Пропускает оставшуюся часть потока выполнения, если этот поток начал удаление из существующего массового черновика. Сегмент обязателен для поддержки массового согласования.

  5. Сегмент типа Point: [BATCH_RECORD_DELETE_PERSISTENCE] - Выполняет удаление записей из пакета, которые были успешно обработаны в точке [BATCH_RECORD_DELETE_PROCESS].

  6. Сегмент типа Point: [BATCH_RECORD_AUDIT_EVENT] - Пример сегмента успешных пакетных действий с удалением данных, которые могут быть сообщены в аудит или любому другому потребителю данных через домен сообщений. Сегмент желательно размещать в потоке выполнения в секции для обычных сегментов как можно позже.

  7. Финишный сегмент [BATCH_RECORD_DELETE_FINISH] - Завершает процесс пакетного удаления записи.