Документация 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 внутри.