Skip to Content

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

Eng: Peek queue by filter

alt

Компонент позволяет получить элементы из очереди Оркестратора в соответствии с настроенным фильтром. Результат сохраняется в переменную.

Результат фильтрации сохраняется в переменную вывода – в свойство Элемент.

Поведение при извлечении элементов

В свойствах компонента доступен параметр Занимать. Включенный параметр позволяет сразу же извлечь полученные элементы из очереди. Извлекать из очереди возможно только новые элементы (статус New) – то есть те, которые еще не занял ни один робот.

Если элемент извлечен, то другие роботы не смогут взять его в работу. Данный элемент перейдет из статуса New в статус InProgress. После извлечения только текущий робот может:

Если параметр Занимать отключён, статус элементов в очереди не изменяется.

Перед началом работы

  • Настроено активное подключение к Оркестратору
  • Элемент должен существовать в указанной очереди

Свойства

Описание общих свойств см. в разделе Свойства элемента.

С версии 1.25.11+

  • При включённом параметре Занимать блокировка применяется только к элементам, соответствующим фильтру.
    Это исправляет проблему, при которой ранее блокировалась вся очередь.
  • Для зашифрованных очередей (Encrypted = true) блокировка с фильтрацией по значению запрещена.
    Оркестратор возвращает ошибку HTTP 409 Conflict.

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

Рекомендуется отключать параметр Получать тэги, если теги не используются в логике процесса.
Это существенно снижает нагрузку на Оркестратор и ускоряет выполнение операции.

Процесс:

  1. Занимать [Boolean] – определяет, требуется ли извлекать из очереди полученные элементы. Возможные значения:

    • галочка отсутствует – элементы не нужно извлекать из очереди. В этом случае статус элементов, полученных по фильтру, не изменится. Значение по умолчанию.
    • галочка установлена – будет получен список элементов, соответствующих фильтру, которые сразу извлекаются из очереди для обработки вашим роботом. Такие элементы перейдут из статуса New в InProgress и станут недоступны для обработки другими роботами.
  2. Игнорировать спецполя [Boolean] – определяет, следует ли включать в выборку отсроченные, просроченные и логически удаленные элементы (которые не удаляли из БД). Возможные значения:

    • галочка отсутствует – перечисленные элементы не войдут в выборку. Значение по умолчанию.
    • галочка установлена – перечисленные элементы войдут в выборку. При включении этого параметра рекомендуется отключить свойство Занимать.
  3. Ключ [String] – натуральный ключ элемента очереди, который RPA-разработчик указывал при создании элемента. То же самое, что поле Key в модели QueueItem. Пример: "MyKey".

  4. Кол-во [Int32] – определяет, какое количество элементов очереди вы хотите получить. Если не заполнено, вернется 1 элемент. Пример: 10.

  5. Логика – настраивает логику поиска элемента по тегам. Доступные значения:

    • Or – будет учитываться один и более тегов. Значение по умолчанию.
    • And – у элемента должны быть все перечисленные теги.
  6. Очередь* [String] – название очереди в Оркестраторе. Пример: "Queue1".

  7. Получать метаданные [Boolean] — получать метаданные элемента. Если параметр включен, метаданные элемента будут извлечены из Оркестратора. По умолчанию свойство включено.

  8. Получать тэги [Boolean] — определяет, нужно ли получать теги элемента. Если параметр включен, теги элемента будут извлечены из данных очереди Оркестратора. По умолчанию свойство включено. Если теги не указаны или отсутствуют, передается пустое значение (), что не влияет на работу робота и обеспечивает совместимость с более старыми версиями. Рекомендация: снимать галочку для улучшения производительности, если сами теги не нужны в результатах.

  9. Статус – фильтр по статусу элемента очереди. Возможные значения:

    • Любой – статус элемента не важен. Значение по умолчанию.
    • Новый – новый элемент.
    • В процессе – элемент извлечен из очереди определенным роботом, но еще не обработан.
    • Успешно – элемент извлечен из очереди и успешно обработан.
    • Ошибка – элемент извлечен из очереди, но его обработка завершилась с ошибкой общего вида.
    • Ошибка в бизнес-логике – элемент извлечен из очереди, но его обработка завершилась с бизнес-ошибкой.
    • Удалён – элемент помечен как удалённый (логическое удаление). Доступно с версии 1.26.1.
    • Отложен – элемент отложен для обработки в будущем (например, через Postpone до определённого времени). Доступно с версии 1.26.1
  10. Страница [Int32] – номер страницы очереди Оркестратора, на которой находится искомый элемент. Пример: 1.

  11. Таймаут [Int32] – лимит времени операции (мс). Если по истечении лимита операция не выполнена, робот закончит работу с ошибкой. Таймаут по умолчанию составляет 30000 мс (30 секунд).

  12. Только свои [Boolean] – при установке галочки будут получены только те элементы, которые были добавлены в очередь с идентичной учетной записи, то есть тем же роботом.

  13. Тэги [List<string>] – фильтр по тегам элемента очереди. Пример: new List<string>() { "tag1", "tag2", "tag3" }.

  14. Фильтр [String] – фильтр по метаданным элемента, указывается в виде регулярного выражения для SQL:

    • если Оркестратор установлен с MS SQL SERVER – следует использовать шаблоны с оператором LIKE (но без указания оператора, только шаблон).
    • если Оркестратор установлен с PostgreSQL – доступны функции Regexp. Пример: "%1330\|15.07.2022%".
  15. Фильтр по значению [String] – фильтр по значению элемента, указывается в виде регулярного выражения. Пример: "\w+".

Вывод:

  • Элемент [List<LTools.Enterprise.Model.QueueItem>] – название переменной, в которую запишется список элементов очереди, соответствующих заданным условиям фильтра.

Только код (Pure code)

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

object ret = LTools.Enterprise.OrchestratorApp.PeekQueueByFilter(wf, "queue", id, ".name", LTools.Enterprise.Model.QueueItemStates2.Any, false, 10);

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