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

Отчёт роботом

Цель
Настроить пользовательский отчёт без программиста и заполнять его из процесса — добавлять, обновлять по ключу и искать записи
Время
25 минут

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

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

  • Оркестратор с роботом и студия, подключённая к оркестратору, — как в уроке Публикация и запуск в оркестраторе. Создавать отчёты могут разработчики и владелец области.
  • Файлы примеров:
    • 08_report_writer.flow.json — процесс, который пишет платежи в отчёт;
    • report.json — описание полей отчёта (по нему удобно сверяться; его же можно отправить в API оркестратора).

Отчёт — это таблица в базе отчётов оркестратора: роботы и операторы записывают в неё строки, а люди смотрят, фильтруют, выгружают в Excel и строят по ней SQL-запросы и графики.

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

  1. В панели откройте «Отчёты» и нажмите «Создать отчёт».
  2. «Рабочая область» — область процесса, «Ключ» — payments (по ключу отчёт находят действия робота; после создания он не меняется), «Название» — Платежи.
  3. В «Поля» нажмите «Добавить поле» четыре раза и заполните:
«Ключ поля» «Подпись» «Тип» Проверки
number Номер «Текст» «Обязательное», «Искать по полю», «Длина до, символов» — 20
amount Сумма «Число с дробью» «Обязательное», «Не меньше» — 0, «Цифр всего» — 14, «Знаков после запятой» — 2
paid_on Дата «Дата» —
status Статус «Список значений» «Значения списка»: Новый, Оплачен, Ошибка — по одному в строке
  1. В «Ключ записи» отметьте number: запись с тем же номером робот в режиме upsert обновит, а не продублирует.
  2. Нажмите «Создать отчёт».
Новый отчёт: ключ, название и поля с типами и проверками
Новый отчёт: ключ, название и поля с типами и проверками

Шаг 2. Процесс, который пишет в отчёт #

Откройте 08_report_writer.flow.json в студии. Аргументы: report — ключ отчёта (payments), count — сколько платежей (100), strict — строгий режим.

  1. „Подготовить платежи“ собирает массив объектов с ключами полей: number, amount, paid_on, status.
  2. orch.reportAddMany „Записать все платежи“ пишет весь массив одним вызовом в режиме upsert.
  3. Второй orch.reportAddMany записывает первые пять платежей ещё раз со статусом Оплачен: записи с теми же номерами обновляются, дублей нет.
  4. orch.reportFind „Найти оплаченные“ ищет записи по условию ({ status: 'Оплачен' }).
  5. orch.reportUpdate меняет статус последнего платежа на Ошибка по ключу записи.
  6. orch.reportAdd пробует записать сумму '12,5 сом' — текст в числовом поле. Это бизнес-ошибка ReportValidation: по умолчанию она перехватывается блоком control.tryCatch и пишется в журнал.

Опубликуйте процесс (в своей папке) и запустите его из панели.

Шаг 3. Записи отчёта #

Откройте «Отчёты» → Платежи. На вкладке «Записи» — сто платежей; колонки «Задание» и «Робот» показывают, кто записал строку.

Записи отчёта: поля, фильтры и выгрузка
Записи отчёта: поля, фильтры и выгрузка
  • Поиск и «Фильтры по полям» — например, статус Оплачен или сумма от 150.
  • «Выгрузить XLSX» выгружает текущую выборку с фильтрами.
  • Щелчок по строке открывает запись: значения, «Задание» и «Процесс и версия». Оператор может её изменить — изменение попадёт в аудит.
  • «Добавить запись» и «Загрузить из Excel» — записи руками и из файла.
Карточка записи: значения и задание, которое её записало
Карточка записи: значения и задание, которое её записало

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

  • В отчёте Платежи — 100 записей П-0001 … П-0100; пять первых — Оплачен, последняя — Ошибка, остальные — Новый.
  • В журнале задания: строка о том, что в отчёт payments добавлено записей: 100, Повторно записано по ключу (обновлено, без дублей): 5, Оплачено: 5, первый — П-0001 и предупреждение Бизнес-ошибка ReportValidation: ….
  • В «Результат» задания — платежи с числами добавленных, обновлённых и оплаченных.
  • Запустите процесс ещё раз: записей останется 100 — режим upsert обновил их по номеру.
  • Запустите с strict = true: задание завершится бизнес-ошибкой ReportValidation, а записи до этого шага сохранятся.

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

Что видно Что сделать
Ошибка „Отчёт с ключом … не найден в области …“ Ключ в аргументе report должен совпадать с «Ключ» отчёта (payments), а отчёт — быть в области процесса.
ReportValidation на первой записи Ключи полей в процессе и в отчёте отличаются или нарушена проверка (сумма меньше 0, статус не из списка). Текст ошибки называет поле.
Записи дублируются У отчёта не задан «Ключ записи» или режим шага — insert.
„База отчётов недоступна“ База отчётов не настроена или остановлена — обратитесь к администратору; остальная работа оркестратора продолжается.

Дальше — урок SQL-отчёт: запрос и график по этим платежам. Подробнее — в документации: Отчёты.