Очереди обмена данными (интерфейс UI4)
Описание экранов для предыдущей версии интерфейса (UI2) см. в статье Очереди обмена данными.
Очереди обмена данными – это структуры данных в базе данных Оркестратора, используемые для организации коммуникации роботов при выполнении RPA-проектов.
Очереди могут работать по принципу FIFO («первым пришёл – первым обслужен») или по фильтру с блокировкой, при котором элемент извлекается только одним роботом. Чтение с фильтром гарантирует эксклюзивный доступ к элементу и оптимально использует блокировки в базе данных.
Особенности версии 1.25.11: при фильтрации с опцией Занимать (в Студии - активность Получить из очереди по фильтру) блокировка применяется только к элементам, соответствующим фильтру. Для зашифрованных очередей блокировка с фильтром запрещена (ошибка HTTP 409 Conflict).
Где найти: главное меню → раздел Роботы → вкладка Очереди обмена данными.

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

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

2. Настройки очереди
Очередь обмена данными может создаваться с настройками, определяющими её поведение. Обязательное поле — только Наименование.
| №п/п | Наименование | Описание |
|---|---|---|
| 1. | Время жизни элемента очереди (сек.) | Время, после которого элемент принудительно удаляется из очереди |
| 2. | Максимальное количество попыток поставить элемент в очередь повторно | Когда элемент очереди получает статус Завершилось с ошибкой общего вида или Завершилось с бизнес-ошибкой, он ставится в очередь по FIFO повторно. После превышения этого значения элемент в очередь повторно не ставится |
| 3. | На какие ошибки элемент должен ставиться в очередь повторно | Завершилось с ошибкой общего вида или Завершилось с бизнес-ошибкой |
| 4. | Тип уникальности натурального ключа | Как проверяется уникальность натурального ключа: Проверка на уникальность внутри очереди либо Проверка на уникальность глобально. Если не задан, уникальность не проверяется |
| 5. | Specific JSON Schema | JSON-схема входных данных, помещаемых в очередь |
| 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
Начиная с указанных версий, в дополнение к полному удалению элементов реализована архивация — данные сохраняются в отдельных таблицах базы данных и остаются доступными для просмотра.
Особенности:
- Сохранение данных — элементы не удаляются безвозвратно, а переносятся в архивные таблицы (
ExchangeQueueValuesArchive,TagsArchiveи др.) - Возможность просмотра — архивные данные доступны через интерфейс Orchestrator: в списке очередей есть режим Архивные, а в элементах очереди — фильтр архивных записей
- Расширенная конфигурация — добавлены параметры для настройки минимальных порогов архивации
Чтобы включить архивацию, при создании или редактировании очереди в блоке Автоматическая очистка/архивация для старых элементов очереди выберите Архивация при превышении возраста элемента (в днях) либо Архивация при превышении кол-ва элементов в очереди и укажите Значение.
Конфигурационные параметры архивации:
{
"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. В более ранних версиях поддерживается только очистка элементов без возможности их последующего просмотра.