Skip to Content
Primo RPA OrchestratorПользователямРоботыОчереди обмена данными

Очереди обмена данными

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

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

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

alt

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

Элементы очереди обмена данными:

alt

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

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

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

alt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

alt

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

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

alt

Функция автоматической очистки позволяет удалять устаревшие элементы без участия оператора. Настройка выполняется в форме Роботы → Очереди обмена данными → Редактировать очередь → Автоматическая очистка очереди от старых элементов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

alt

Для новых установок:

  1. При создании или редактировании очереди перейдите в настройки “Автоматическая архивация очереди”
  2. Выберите тип архивации:
    • “Архивация не выполняется” — функция отключена
    • “При превышении возраста элемента” — архивация по времени (дни)
    • “При превышении максимального количества элементов” — архивация по объёму (Например, 500 элементов за одну транзакцию архивации)
  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 элементов

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

alt

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

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

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