Skip to Content

Получить из очереди

Eng: Peek queue

alt

Компонент извлекает из очереди Оркестратора элемент в статусе New. В ответе возвращается первый элемент, вошедший в очередь (принцип FIFO). Извлеченный элемент сохраняется в переменную, которая может быть разных типов — строка, объект QueueItem или таблица данных. Выбор переменной осуществляется на ваше усмотрение.

Элемент, который был извлечен из очереди, автоматически переходит из статуса New в статус InProgress. Такой элемент готов для дальнейшей обработки вашим роботом. Другие роботы не cмогут извлечь, изменить или удалить данный элемент.

Для успешного запуска/отладки проекта следует настроить подключение Студии к Оркестратору.

Свойства

Символ * в названии указывает на обязательность заполнения свойства. Описание общих свойств см. здесь.

Процесс:

  1. Очередь* [String] — название очереди. Значение чувствительно к регистру и должно совпадать с названием очереди в Оркестраторе. Пример: "QueueName".
  2. Статус [LTools.Enterprise.Model.QueueItemStates] — определяет, следует ли извлекать элементы очереди, которые были обработаны с ошибкой, а затем автоматически добавлены в очередь повторно. По умолчанию, если обработка элемента завершилась ошибкой, то система не ставит его в очередь для повторной обработки. Однако если в настройках очереди был включен параметр «На какие ошибки элемент должен ставиться в очередь повторно», то для элементов со статусом Error / BusinessError система автоматически создаст копию и поставит ее в очередь. Копия элемента будет иметь статус New, новый идентификатор и определенное число в поле RetryCount, которое будет указывать, какая по счету это копия оригинального элемента. Вы должны определить, как роботу следует обращаться с этими копиями.
    Доступные значения:
    • New — извлечь элемент в статусе New, который не является копией другого элемента. Значение по умолчанию.
    • Error — извлечь элемент, который был создан в качестве первой копии элемента с ошибочным статусом. У такого элемента (копии) в поле RetryCount будет стоять значение 1.
    • Repeated Error — извлечь элемент, который был создан в качестве копии при повторной ошибке. У такого элемента (копии) в поле RetryCount будет стоять значение 2 и более.
    • Any — извлечь любой элемент в статусе New, вне зависимости от того, является он копией или нет.
  3. Таймаут [Int32] — лимит времени операции (мс). Если по истечении лимита операция не выполнена, робот закончит работу с ошибкой. Пример: 5000. С версии 1.24.8 таймаут по умолчанию составляет 30000 мс (30 секунд).

Вывод:

Используйте одно из представленных ниже свойств.
  1. Результат [String] — строковая переменная для хранения полученных данных.
  2. Элемент [LTools.Enterprise.Model.QueueItem] — переменная для хранения элемента очереди в виде объекта.
  3. Таблица [DataTable] — переменная для хранения полученных данных в виде таблицы.

Реакция на невозможность извлечения элемента по FIFO

В некоторых случаях бывает невозможно извлечь элемент по FIFO. Например, в очередь одновременно обратилось много роботов, или очередь оказалась пустой. Вы можете настроить реакцию системы на описанные события. Реакция выбирается в настройках очереди обмена данными, в следующих параметрах:

  • Реакция на невозможность извлечения элемента по FIFO;
  • Кол-во попыток при извлечении элемента по FIFO.

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

Только код

Ниже приведен пример использования элемента в процессе с типом Только код (Pure code):

object ret = LTools.Enterprise.OrchestratorApp.PeekQueue(wf, "queue");

Дополнительно