Skip to Content

Очереди обмена данными (интерфейс UI4)

Описание экранов для предыдущей версии интерфейса (UI2) см. в статье Очереди обмена данными.

Очереди обмена данными – это структуры данных в базе данных Оркестратора, используемые для организации коммуникации роботов при выполнении RPA-проектов.

Очереди могут работать по принципу FIFO («первым пришёл – первым обслужен») или по фильтру с блокировкой, при котором элемент извлекается только одним роботом. Чтение с фильтром гарантирует эксклюзивный доступ к элементу и оптимально использует блокировки в базе данных.

Особенности версии 1.25.11: при фильтрации с опцией Занимать (в Студии - активность Получить из очереди по фильтру) блокировка применяется только к элементам, соответствующим фильтру. Для зашифрованных очередей блокировка с фильтром запрещена (ошибка HTTP 409 Conflict).

Где найти: главное меню → раздел Роботы → вкладка Очереди обмена данными.

Список очередей обмена данными

Список очередей переключается между режимами Активные и Архивные. Колонки: Наименование, Описание, Последнее использование (робот и время), Дата создания, Кем создана, Попыток (макс) и Элементы — в последней колонке рядом с общим числом элементов показаны их статусы (например, Success 23, Error 20, New 6). Над таблицей — поиск по названию или описанию.

1. Создание очереди

Чтобы создать очередь:

  1. Перейдите в раздел РоботыОчереди обмена данными.
  2. Нажмите Добавить очередь.
  3. Задайте параметры очереди. Подробное описание параметров приведено в разделе 2. Настройки очереди.

Форма создания очереди

Общие схемы алгоритмов для обработки очереди:

Схемы алгоритмов обработки очереди

2. Настройки очереди

Очередь обмена данными может создаваться с настройками, определяющими её поведение. Обязательное поле — только Наименование.

№п/пНаименованиеОписание
1.Время жизни элемента очереди (сек.)Время, после которого элемент принудительно удаляется из очереди
2.Максимальное количество попыток поставить элемент в очередь повторноКогда элемент очереди получает статус Завершилось с ошибкой общего вида или Завершилось с бизнес-ошибкой, он ставится в очередь по FIFO повторно. После превышения этого значения элемент в очередь повторно не ставится
3.На какие ошибки элемент должен ставиться в очередь повторноЗавершилось с ошибкой общего вида или Завершилось с бизнес-ошибкой
4.Тип уникальности натурального ключаКак проверяется уникальность натурального ключа: Проверка на уникальность внутри очереди либо Проверка на уникальность глобально. Если не задан, уникальность не проверяется
5.Specific JSON SchemaJSON-схема входных данных, помещаемых в очередь
6.Робот удаляет свои элементыРобот по ключу сможет удалить только те элементы, которые он сам поместил в очередь
7.ПубличнаяДоступна либо всем роботам, либо только перечисленным
8.ЗашифрованаЭлементы очереди будут зашифрованы в БД. Если потом при редактировании очереди снять этот флаг, новые элементы останутся незашифрованными. С версии 1.25.11 В случае работы с зашифрованными очередями (Encrypted = true) блокировка с фильтром по значению теперь запрещена. Если попытаться применить такую блокировку, Оркестратор вернет ошибку HTTP 409 Conflict.
9.Физическое удалениеЕсли выбрано физическое удаление, элемент безвозвратно будет удален из очереди. Если логически, то они остаются в БД, их можно видеть в UI Оркестратора
10.Кол-во попыток при извлечении элемента по FIFOОпределяет, сколько раз робот может попытаться извлечь элемент из очереди по FIFO, прежде чем очередь будет считаться пустой, что позволяет реализовать различные сценарии обработки на стороне клиента (см. схемы выше).
11.Реакция на невозможность извлечения элемента по FIFOЧто вернуть роботу, если элемент извлечь не удалось: Вернуть null или Вернуть ошибку
12.Автоматическая очистка/архивация для старых элементов очередиВключает автоматическое удаление или архивацию элементов по заданным правилам. Детальная настройка описана в разделе Автоматическая очистка и архивация
⚠️

При переключении на физическое удаление очистите БД от элементов этой очереди, помеченных как удалённые: статистика не учитывает удалённые элементы таких очередей и при их наличии в БД покажет некорректные общие данные.

3. Элементы очереди

Элементы открываются действием Элементы очереди в меню строки очереди.

Элементы очереди со статусами

Колонки: Дата создания / Натуральный ключ, Значение и метаданные (раскрывается кнопкой Показать), Статус (с датой присвоения), Тег, Дата недоступности (до) и (после), Кол повторов в очередь при ошибке, Дата чтения роботом, Создавший робот, Прочитавший робот, Приоритет, Дата создания, Сообщение.

Фильтры: Натуральный ключ, Статусы, Прочтение, Добавление, Тег, Приоритет, Не удаленные, Поиск по метаданным. Переключатель Без повторенных скрывает повторно поставленные элементы; отдельная кнопка открывает статистику очереди.

Сортировка списка элементов идёт сначала по полю Приоритет (по возрастанию, пустые значения — последними), затем по Дате создания (по возрастанию).

Жизненный цикл и статусы элементов

Текущее состояние элемента отображается в колонке Статус. Каждый элемент в процессе обработки проходит через следующие статусы:

  • New — элемент добавлен, но не извлечен.
  • InProgress — элемент извлечен роботом.
  • Success — обработка элемента завершена успешно.
  • Error — обработка элемента завершена с общей ошибкой.
  • Business Error — обработка завершена с бизнес-ошибкой.

Созданный элемент автоматически получает статус New. Дальнейшее изменение статусов зависит от логики обработки элемента роботом (подробнее см. активность Изменить состояние элемента очереди).

Обратите внимание: Статусы New и InProgress присваиваются системой автоматически. Финальные статусы (Success, Error, Business Error) фиксируются в истории изменений элемента и могут быть присвоены только из статуса InProgress.

Если элемент остаётся в статусе InProgress дольше заданного Таймаута (сек) блокировки элементов очереди, он удаляется как просроченный.

Управление элементами

Элементы очереди поддерживают следующие операции:

  • Клонировать — создается новый элемент (с новым уникальным идентификатором) со статусом New. Он полностью аналогичен оригиналу по содержанию, но имеет обнуленный счетчик повторов.
  • Повторить — существующий элемент (с тем же идентификатором) возвращается в состояние New. Сбрасываются признак прочтения, ссылка на текущий статус и счетчик повторов.
  • Удаление — элемент удаляется из очереди согласно настройке Физическое удаление (см. раздел 2).

Для повторно поставленных элементов доступен просмотр Цепочки повторов.

Статистика по очереди

На основе событий взаимодействия роботов с очередью система автоматически вычисляет статистику:

  • Количество элементов в каждом из статусов.
  • График среднего времени обработки элемента очереди (время между извлечением элемента и присвоением ему финального статуса).

Дополнительные параметры элементов

№п/пНаименованиеОписание
1.Натуральный ключСодержательный идентификатор элемента очереди. Может быть глобальным в пределах очереди, в пределах всех очередей или уникальность может отсутствовать
2.МетаданныеСловарь Ключ-значение с произвольными строковыми данными. При обновлении метаданные полностью переписываются
3.Дата недоступности (до)Элемент недоступен для обработки до указанной даты
4.Дата недоступности (после)Элемент недоступен для обработки после указанной даты
5.Статус элемента очередиТекущий статус элемента в истории его статусов.
6.ТегиПроизвольные строки, по которым может осуществляться поиск элементов
7.ПриоритетОпределяет порядок обработки элементов в очереди. См. статью Сценарии работы основного пользователя

При поиске по тегам флажок Присутствуют все теги сразу требует, чтобы у элемента были сразу все выбранные теги; иначе достаточно любого из них.

Далее приведены дополнительные механизмы и настройки, влияющие на обработку элементов очереди.

JSON-схемы для очередей

При создании очереди обмена данными можно задать Specific JSON Schema для валидации входных данных элементов очереди.

Примечание: Output JSON Schema и Analytics JSON Schema в текущих версиях Оркестратора не влияют на работу очередей.

Пример JSON-схемы для валидации данных

{ "type": "object", "properties": { "prop1": { "type": "string" }, "prop2": { "type": "array" } }, "additionalProperties": false }

Пример данных, соответствующих схеме:

{ "prop1": "James", "prop2": [".NET", "LOLCATS"] }

Автоматическая очистка и архивация элементов

Очистка доступна с версии 1.25.11, архивация — с 1.25.7.20 LTS

В интерфейсе UI4 очистка и архивация настраиваются одним блоком формы очереди — Автоматическая очистка/архивация для старых элементов очереди. В нём два поля:

ПолеОписание
ТипУсловие срабатывания. Доступные значения: Очистка / архивация не выполняется; Очистка при превышении возраста элемента (в днях); Очистка при превышении кол-ва элементов в очереди; Архивация при превышении возраста элемента (в днях); Архивация при превышении кол-ва элементов в очереди
ЗначениеЧисловое значение для выбранного типа (количество дней либо максимальное количество элементов)

Разница между режимами:

  • Очистка — элементы удаляются согласно настройке Физическое удаление;
  • Архивация — элементы не удаляются безвозвратно, а переносятся в архивные таблицы и остаются доступными для просмотра.

Механизм работы

Автоматическое удаление элементов выполняет служба WebApi — ExchangeQueueValuesAutoDeleteService.

  • запускается автоматически при старте WebApi;
  • удаляет элементы только в тех очередях, где включена функция автоматической очистки;
  • работает с заданным интервалом.

Интервал выполнения очистки

Интервал запуска службы задается параметром в конфигурационном файле WebApi:

  • ExchangeQueueValuesAutoDeleteInterval — интервал в минутах.
    • Не добавляется в файл по умолчанию, может быть внесен вручную.
    • Минимальное значение: 5 минут.
    • Значение по умолчанию: 60 минут.

Записи в журнале событий Оркестратора

При выполнении очистки создаются записи в Журнале событий Оркестратора.

В общем перечислении OrchestratorEvent, используемое всеми сервисами Оркестратора, создаются записи:

  • ExchangeQueueItemsAutoDeleteServiceSuccess (код 3030) — успешное удаление элементов.
  • ExchangeQueueItemsAutoDeleteServiceError (код 3031) — ошибка при выполнении очистки.

События фиксируются только при фактическом удалении элементов или возникновении ошибки.

Подробнее обо всех событиях Оркестратра см. в статье Перечень событий Оркестратора

Автоматическая архивация очередей обмена данными

Доступно с версии 1.25.7.20 LTS

Начиная с указанных версий, в дополнение к полному удалению элементов реализована архивация — данные сохраняются в отдельных таблицах базы данных и остаются доступными для просмотра.

Особенности:

  1. Сохранение данных — элементы не удаляются безвозвратно, а переносятся в архивные таблицы (ExchangeQueueValuesArchive, TagsArchive и др.)
  2. Возможность просмотра — архивные данные доступны через интерфейс Orchestrator: в списке очередей есть режим Архивные, а в элементах очереди — фильтр архивных записей
  3. Расширенная конфигурация — добавлены параметры для настройки минимальных порогов архивации

Чтобы включить архивацию, при создании или редактировании очереди в блоке Автоматическая очистка/архивация для старых элементов очереди выберите Архивация при превышении возраста элемента (в днях) либо Архивация при превышении кол-ва элементов в очереди и укажите Значение.

Конфигурационные параметры архивации:

{ "ExchangeQueue": { /* Минимальный возраст элемента (в днях) для архивации */ "MinExchangeQueueArchiveLimitDays": 30, /* Минимальное количество элементов очереди для архивации */ "MinExchangeQueueArchiveLimitElements": 100000, /* Интервал (минут) между запусками автоматической архивации */ "ExchangeQueueValuesAutoDeleteInterval": 60, /* Размер пакета (записей) в сервисе автоматического удаления/архивации старых элементов очередей обмена данными (допустимый диапазон от 1 до 10000) */ "ExchangeQueueValuesAutoDeleteChunkSize": 100 } }

Важно: Параметр ExchangeQueueValuesAutoDeleteChunkSize изначально не отображается в конфигурационном файле — его необходимо добавить вручную в секцию “ExchangeQueue”. Значение по умолчанию — 100, допустимый диапазон — от 1 до 10000.

Пример настройки:

{ "ExchangeQueue": { "MinExchangeQueueArchiveLimitDays": 7, "MinExchangeQueueArchiveLimitElements": 50000, "ExchangeQueueValuesAutoDeleteInterval": 30, "ExchangeQueueValuesAutoDeleteChunkSize": 500 } }

В этом примере:

  • Архивация сработает для элементов старше 7 дней
  • При достижении 50 000 элементов в очереди
  • Служба архивации будет запускаться каждые 30 минут
  • За одну транзакцию будет архивироваться 500 элементов

Архивные таблицы в БД:

Архивные таблицы в БД

Рекомендации

Если архивные таблицы содержат большое количество записей, рекомендуется периодически переносить данные на внешний накопитель и очищать таблицы после остановки Оркестратора.

Примечание по версиям: В LTS-ветке 1.25.7 функция архивации доступна начиная с патча 1.25.7.20. В более ранних версиях поддерживается только очистка элементов без возможности их последующего просмотра.

Last updated on