Получить из очереди по фильтру
Eng:Peek queue by filter
Компонент получает элементы из очереди Оркестратора в соответствии с настроенным фильтром. Результат сохраняется в переменную.
Перед началом работы:
- Требуется активное подключение к Оркестратору
- Элемент должен существовать в указанной очереди
Этапы фильтрации:
- Первичная фильтрация – осуществляется на стороне Оркестратора. Элементы очереди фильтруются по всем указанным свойствам, кроме «Фильтра по значению».
- Вторичная фильтрация – осуществляется на стороне робота. На этом этапе робот получает от Оркестратора элементы после первичной фильтрации и фильтрует их по свойству «Фильтр по значению».
- Результат сохраняется в переменную вывода – в свойство «Элемент».
Получить и сразу занять элементы
Обратите внимание, что в свойствах компонента есть чекбокс Занимать. Установка чекбокса позволяет при получении элементов сразу же извлекать их из очереди. Излекать из очереди возможно только новые элементы (статус New) – то есть те, которые еще не занял ни один робот.
Если элемент извлечен, то другие роботы не смогут взять его в работу. Данный элемент перейдет из статуса New в статус InProgress. В дальнейшем только ваш робот сможет изменить состояние извлеченного элемента или удалить его из очереди.
Использование компонента без чекбокса Занимать не изменяет статус элемента в очереди.
Свойства
Описание общих свойств см. в разделе Свойства элемента.
Обязательным для заполнения является только свойство Очередь, остальные фильтры настраиваются выборочно.
До версии 1.24.10 свойство Ключ называлось ID.
Рекомендуется снимать галочку “Получить тэги”. Это позволяет выполнять выборку с учетом тэгов, но без включения самих тэгов в результат запроса, что значительно снижает нагрузку на сервер и сокращает время выполнения операции.
Вывод:
- Элемент [List<LTools.Enterprise.Model.QueueItem>] – название переменной, в которую запишется список элементов очереди, полученных по фильтру.
Процесс:
- Занимать [Boolean] – определяет, требуется ли извлекать из очереди полученные элементы. Возможные значения:
галочка отсутствует
– элементы не нужно извлекать из очереди. В этом случае статус элементов, полученных по фильтру, не изменится. Значение по умолчанию.галочка установлена
– будет получен только список тех элементов, которые возможно сразу извлечь из очереди для обработки вашим роботом. Такие элементы перейдут из статуса New в InProgress и станут недоступны для обработки другими роботами.
- Игнорировать спецполя [Boolean] – определяет, следует ли включать в выборку отсроченные, просроченные и логически удаленные элементы (которые не удаляли из БД). Возможные значения:
галочка отсутствует
– перечисленные элементы не войдут в выборку. Значение по умолчанию.галочка установлена
– перечисленные элементы войдут в выборку. В этом случае следует снять галочку в свойстве Занимать.
- Ключ [String] – натуральный ключ элемента очереди, который пользователь указывал при создании элемента. То же самое, что поле Key в модели QueueItem. Пример:
"MyKey"
. - Кол-во [Int32] – определяет, какое количество элементов очереди вы хотите получить. Если не заполнено, вернется 1 элемент. Пример:
10
. - Логика – настраивает логику поиска элемента по тегам. Доступные значения:
Or
– будет учитываться один и более тегов. Значение по умолчанию.And
– у элемента должны быть все перечисленные теги.
- Очередь* [String] – название очереди в Оркестраторе. Пример:
"Queque1"
. - Получать метаданные [Boolean] — получать метаданные элемента. Если параметр включен, метаданные элемента будут извлечены из Оркестратора. По умолчанию свойство включено. Функция доступна с версии 1.24.10.
- Получать тэги [Boolean] — получать тэги элемента. Если параметр включен, теги элемента будут извлечены из данных очереди Оркестратора. По умолчанию свойство включено. Если теги не указаны или отсутствуют, передается пустое значение (), что не влияет на работу робота и обеспечивает совместимость с более старыми версиями. Функция доступна с версии 1.24.10. Рекомендация: снимать галочку для улучшения производительности, если сами теги не нужны в результатах.
- Статус – фильтр по статусу элемента очереди. Возможные значения:
Any
– статус элемента не важен. Значение по умолчанию.New
– новый элемент.In progress
– элемент извлечен из очереди определенным роботом, но еще не обработан.Success
– элемент извлечен из очереди и успешно обработан.Error
– элемент извлечен из очереди, но его обработка завершилась с ошибкой общего вида.Business Error
– элемент извлечен из очереди, но его обработка завершилась с бизнес-ошибкой.
- Страница [Int32] – номер страницы очереди Оркестратора, на которой находится искомый элемент. Пример:
1
. - Таймаут [Int32] – лимит времени операции (мс). Если по истечении лимита операция не выполнена, робот закончит работу с ошибкой. Пример:
5000
. С версии 1.24.8 таймаут по умолчанию составляет30000
мс (30 секунд). - Только свои [Boolean] – при установке галочки будут получены только те элементы, которые были добавлены в очередь с идентичной учетной записи, то есть тем же роботом.
- Тэги [List<string>] – фильтр по тегам элемента очереди. Пример:
new List<string>() { "tag1", "tag2", "tag3" }
. - Фильтр [String] – фильтр по метаданным элемента, указывается в виде регулярного выражения для SQL:
- если Оркестратор установлен с MS SQL SERVER – следует использовать шаблоны с оператором LIKE (но без указания оператора, только шаблон).
- если Оркестратор установлен с PostgreSQL – доступны функции Regexp. Пример:
"%1330\|15.07.2022%"
.
- Фильтр по значению [String] – фильтр по значению элемента, указывается в виде регулярного выражения. Пример:
"\w+"
.
Только код
Ниже приведен пример использования элемента в процессе с типом Только код (Pure code):
C#
object ret = LTools.Enterprise.OrchestratorApp.PeekQueueByFilter(wf, "queue", id, ".name", LTools.Enterprise.Model.QueueItemStates2.Any, false, 10);
Дополнительно
- Изменить статус в очереди — присваивает элементу финальный статус обработки.
- Удалить из очереди — удаляет элемент из очереди.