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

Peek queue by filter

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

Этапы фильтрации:

  1. Первичная фильтрация – осуществляется на стороне Оркестратора. Элементы очереди фильтруются по всем указанным свойствам, кроме «Фильтра по значению».

  2. Вторичная фильтрация – осуществляется на стороне робота. На этом этапе робот получает от Оркестратора элементы после первичной фильтрации и фильтрует их по свойству «Фильтр по значению».

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

Получить и сразу занять элементы

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

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

Использование компонента без чекбокса Занимать не изменяет статус элемента в очереди.

Свойства

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

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

Процесс:

  1. Очередь* [String] – название очереди в Оркестраторе. Пример: "Queque1".

  2. ID [String] – натуральный ключ элемента очереди, который пользователь указывал при создании элемента. То же самое, что поле Key в модели QueueItem. Пример: "MyKey".

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

  4. Фильтр по значению [String] – фильтр по значению в виде регулярного выражения. Пример: "\w+".

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

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

    • Or – будет учитываться один и более тегов. Значение по умолчанию.

    • And – у элемента должны быть все перечисленные теги.

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

    • Any – статус элемента не важен. Значение по умолчанию.

    • New – новый элемент.

    • In progress – элемент, извлеченный из очереди определенным роботом, но еще не обработанный.

    • Success – элемент был извлечен из очереди и успешно обработан.

    • Error – элемент был извлечен из очереди, но его обработка завершилась с ошибкой общего вида.

    • Business Error – элемент был извлечен из очереди, но его обработка завершилась с бизнес-ошибкой.

  8. Занимать [Boolean] – по умолчанию чекбокс НЕАКТИВЕН. Определяет, нужно ли извлекать из очереди отфильтрованные элементы. Если чекбокс установлен, то в ответе вернутся лишь те значения, которые можно занять – изъять из очереди, чтобы его мог обработать только ваш робот.

  9. Игнорировать спецполя [Boolean] – определяет, нужно ли включать в выборку отсроченные, просроченные и логически удаленные элементы (которые не удаляли из БД). По умолчанию чекбокс выключен – перечисленные элементы в выборку не входят. При использовании свойства Игнорировать спецполя следует снять галочку в свойстве Занимать.

  10. Страница [Int32] – номер страницы очереди Оркестратора, на которой находится искомый элемент. Пример: 5.

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

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

  13. Таймаут [Int32] – лимит времени операции (мс). Если по истечении лимита операция не выполнена, робот закончит работу с ошибкой. Пример: 5000.

Вывод:

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

Только код

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

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

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

Last updated