Обучение Урок 7 из 12

Очередь заявок

Цель
Один процесс кладёт заявки из Excel в очередь, второй берёт их по одной и подаёт в веб-форме
Время
40 минут

Файлы примеров

Что понадобится #

  • Оркестратор, подключённый к нему робот и студия, подключённая к оркестратору («Оркестратор» → «Подключение…») — как в уроке Публикация и запуск в оркестраторе. Как всё поставить — в разделе Установка документации.
  • На компьютере робота — Microsoft Edge: второй процесс подаёт заявки в браузере.
  • Файлы примеров — два процесса:
    • 05_queue_producer.flow.json и requests.xlsx — процесс, который добавляет заявки в очередь;
    • 06_queue_consumer.flow.json и form.html — процесс, который обрабатывает заявки в веб-форме.

Очередь делит работу между роботами: каждый элемент — одна заявка. Элемент берёт один робот; если робот упал, элемент повторится, а если в данных ошибка — будет ждать оператора.

Шаг 1. Создайте очередь #

В панели оркестратора откройте «Очереди» и нажмите «Создать очередь». Имя — „Заявки“. Остальное оставьте как есть: «Повторов при сбое» — сколько раз повторить элемент после системной ошибки, «Без дубликатов по ссылке» не даст загрузить одну заявку дважды.

Очереди в панели оркестратора
Очереди в панели оркестратора

Шаг 2. Процесс, который добавляет заявки #

  1. Создайте папку Заявки в очередь и положите в неё 05_queue_producer.flow.json и requests.xlsx: процесс читает таблицу из своей папки, а в пакет публикации входит вся папка.
  2. В студии нажмите «Открыть» и выберите 05_queue_producer.flow.json.
  3. Процесс читает строки таблицы шагом excel.readRange и добавляет каждую заявку в очередь шагом orch.queueAddItem: данные элемента — строка таблицы, ссылка элемента — номер заявки (З-1001 …).
  4. «Оркестратор» → «Опубликовать…» → «Опубликовать».

Шаг 3. Запустите его #

В панели откройте «Процессы», выберите опубликованный процесс и нажмите «Запустить». Когда задание завершится, в «Очереди» → „Заявки“ → «Элементы» появятся пять новых элементов — по одному на строку таблицы.

Элементы очереди „Заявки“: статус, ссылка и попытки
Элементы очереди „Заявки“: статус, ссылка и попытки

Шаг 4. Процесс, который обрабатывает заявки #

  1. Создайте папку Обработка заявок с файлами 06_queue_consumer.flow.json и form.html.
  2. Откройте процесс в студии: в цикле он берёт элемент шагом orch.queueGetItem, заполняет форму в браузере и записывает результат шагом orch.queueSetResult. Когда элементов не осталось, цикл заканчивается.
  3. Опубликуйте процесс и запустите его так же, как первый.

Чтобы увидеть бизнес-ошибку, допишите в requests.xlsx строку с новым номером (З-1006) и словом ПЛОХО в ФИО, запустите первый процесс, а затем второй.

Шаг 5. Запуск по очереди #

Чтобы второй процесс запускался сам, когда в очереди появилась работа, откройте «Расписания» → «Создать расписание» в «Когда запускать» выберите «По очереди», «Очередь» — „Заявки“, «Минимум элементов» — 1. Подробнее о расписаниях — в уроке Расписание.

Что должно получиться #

  • В очереди „Заявки“ все элементы из таблицы успешные; у каждого в результате — номер заявки Z-….
  • Элементы со словом ПЛОХО — с бизнес-ошибкой и понятным текстом причины.
  • В «Задания» оба запуска завершились, а в журнале задания видны шаги обработки каждой заявки: Заявка З-1001 подана, номер Z-….

Если не получилось #

Что видно Что сделать
Ошибка „Очередь … не найдена в области …“ Имя очереди в панели и в аргументе queue процессов должно совпадать: „Заявки“. Очередь должна быть в той же рабочей области, что и процесс.
Первый процесс упал с „файл не найден“ requests.xlsx должен лежать в папке процесса до публикации: в пакет попадает содержимое папки. Опубликуйте новую версию.
Элементы в работе, но не обрабатываются Задание второго процесса ждёт свободного робота — проверьте «Роботы». Элемент, который слишком долго в работе, вернётся в очередь сам.
Все элементы с системной ошибкой На роботе нет Edge или форма не открывается: посмотрите ошибку в журнале задания. После исправления элементы повторятся сами.

Подробнее об очередях — в документации: Очереди.