Получить из очереди
Eng: Peek queue
Компонент извлекает элемент в статусе New из очереди Оркестратора. В ответе возвращается первый элемент, вошедший в очередь (принцип FIFO). Извлеченный элемент сохраняется в переменную, которая может быть разных типов — строка, объект QueueItem или таблица данных. Выбор переменной осуществляется на ваше усмотрение.
Элемент, который был извлечен из очереди, автоматически переходит из статуса New в статус InProgress. Такой элемент готов для дальнейшей обработки вашим роботом. Другие роботы не cмогут извлечь, изменить или удалить данный элемент.
Для успешного запуска/отладки проекта следует настроить подключение Студии к Оркестратору.
Свойства
Обязательные для заполнения свойства отмечены символом *
. Описание общих свойств см. здесь.
Процесс:
-
Очередь* [String] — название очереди. Значение чувствительно к регистру и должно совпадать с названием очереди в Оркестраторе. Пример:
"QueueName"
. -
Статус [LTools.Enterprise.Model.QueueItemStates] — определяет, следует ли извлекать элемент, который был обработан с ошибкой, а затем повторно добавлен в очередь системой.
По умолчанию, если обработка элемента завершилась ошибкой, то Оркестратор не ставит его в очередь для повторной обработки. Однако если в настройках очереди был включен параметр На какие ошибки элемент должен ставиться в очередь повторно, то для элементов со статусом Error или BusinessError система автоматически создаст копию и поставит ее в очередь. Копия элемента будет иметь статус New, новый идентификатор и определенное число в поле RetryCount, которое указывает, какая это по счету копия оригинального элемента. Ваша цель — определить, как робот должен обращаться с этими копиями.
Доступные значения:
New
— робот должен извлекать только тот элемент в статусе New, который не является копией другого элемента. Значение по умолчанию.Error
— робот должен извлекать элемент, который является первой копией элемента с ошибочным статусом. У такого элемента (копии) в поле RetryCount будет стоять значение 1.Repeated Error
— робот должен извлекать элемент, который был создан в качестве копии при повторной ошибке обработки. У такого элемента (копии) в поле RetryCount будет стоять значение 2 и более.Any
— робот должен извлекать любой элемент в статусе New, вне зависимости от того, является он копией или нет.
-
Таймаут [Int32] — лимит времени операции (мс). Если по истечении лимита операция не выполнена, робот закончит работу с ошибкой. Таймаут по умолчанию составляет
30000
(30 секунд).
Вывод:
- Результат [String] — переменная, которая хранит полученные данные в виде строки.
- Элемент [LTools.Enterprise.Model.QueueItem] — переменная, которая хранит элемент очереди в виде объекта.
- Таблица [DataTable ] — переменная, которая хранит полученные данные в виде таблицы.
Реакция на невозможность извлечения элемента по FIFO
В некоторых случаях бывает невозможно извлечь элемент по FIFO. Например, в очередь одновременно обратилось много роботов, или очередь оказалась пустой. Вы можете настроить реакцию системы на описанные сценарии. Реакция выбирается в веб-интерфейсе Оркестратора, в следующих параметрах очереди обмена данными:
- Реакция на невозможность извлечения элемента по FIFO;
- Кол-во попыток при извлечении элемента по FIFO.
Ознакомьтесь с описанием этих параметров, чтобы использовать подходящий алгоритм обработки очереди по FIFO.
Только код
Ниже приведен пример использования элемента в процессе с типом Только код (Pure code):
C#
object ret = LTools.Enterprise.OrchestratorApp.PeekQueue(wf, "queue");
Дополнительно
- Изменить статус в очереди — присваивает элементу финальный статус обработки.
- Удалить из очереди — удаляет элемент из очереди.