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] — лимит времени операции (мс). Если по истечении лимита операция не выполнена, робот закончит работу с ошибкой. Таймаут по умолчанию составляет 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");

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