Документация 0.4 Справочник действий

Взять элемент из очереди

orch.queueGetItem · Оркестратор

Берёт в работу следующий элемент очереди (по приоритету и сроку). Пустая очередь — не ошибка: «Найден» = нет

Берёт в работу следующий элемент очереди — по приоритету и сроку. Элемент получает статус „В работе“ и закрепляется за этим роботом: другие роботы его не возьмут. Пустая очередь — не ошибка: выход Найден = нет, и процесс выходит из цикла.

Действие работает в задании оркестратора и при запуске из студии, подключённой к оркестратору: тогда оно обращается к „области для отладки“, выбранной в «Оркестратор» → «Подключение…», и работает с настоящими данными этой области.

Свойства #

Свойство Имя в файле Значение Обязательное По умолчанию Описание
Очередь queue текст да — Имя очереди в оркестраторе, например «Заявки»

Результат #

Значение выхода сохраняется в переменную, выбранную для него в свойствах шага (раздел выходов).

Выход Имя в файле
Элемент item
Найден found

Как работает #

  • Очередь (queue) — имя очереди.
  • Выход Элемент — объект { id, reference, payload, attempt, deadline }: item.payload['ФИО'] — данные, item.reference — ссылка, item.attempt — номер попытки (1 — первая), item.id — для orch.queueSetResult. Очередь пуста — null.
  • Выход Найден — да, если элемент взят.
  • Каждый взятый элемент нужно завершить шагом orch.queueSetResult. Если задание упало, не отметив элемент, оркестратор вернёт его в очередь как системную ошибку.

Ошибки #

Код Причина и что делать
QueueNotFound Нет очереди с таким именем в рабочей области
OrchestratorUnavailable Процесс запущен без оркестратора (студия не подключена) или нет связи с сервером после 4 попыток (паузы 1, 2 и 4 с). Проверьте подключение студии или что агент робота на связи
AccessDenied Не хватает прав в рабочей области или задание уже завершено

Пример #

Типичный обработчик: control.while с условием true, внутри — взять элемент, выйти, если нет, обработать, записать результат:

{ "type": "orch.queueGetItem", "props": { "queue": "Заявки" }, "out": { "item": "item", "found": "found" } }

Следом — control.if с условием !found и control.break внутри.