Создание скрипта: Автоматизация обновления и агрегации активности бизнес-процессов
В этом документе показано, как настроить скрипт в Proceset для регулярного сбора данных активности бизнес-процессов из источника в журнал активности и автоматического создания сводной статистики по кейсам — без ручного запуска и с защитой от дубликатов. Защита обеспечивается инкрементальной загрузкой: передаются только те записи, время начала которых позже последней обработанной записи в журнале.
Решение обеспечивает актуализацию данных и аналитики процессов в реальном времени.
Контекст
Компания ведет мониторинг бизнес-процессов через журнал активности, в котором фиксируются параметры операций: время начала и завершения события, статус, идентификаторы кейса, оператора и клиента. Системным и бизнес-аналитикам важно получать:
- Только новые записи без дублирования при частых обновлениях
- Сводку по каждому кейсу: время начала и окончания, количество операций, общую длительность в секундах
- Автоматическое обновление данных каждые 15 минут для оперативных дашбордов
Традиционный подход требует ручных SQL-запросов или ETL-инструментов. Скрипт в модуле Автоматизация решает задачу за счет инкрементальной загрузки на основе последней даты и агрегации данных в отдельную таблицу сводки.
Этапы реализации скрипта
Реализация скрипта выполняется в 8 этапов:
Этап 1. Подготовка данных. Загрузка таблицы с данными активности в пространство для создания потока событий.
Этап 2. Создание скрипта. Создание скрипта в рабочем пространстве.
Этап 3. Настройка расписания. Установка расписания с помощью блока Планировщик.
Этап 4. Создание таблицы журнала активности. Создание таблицы для загрузки обновленных данных.
Этап 5. Определение даты последнего обновления. Вычисление даты начала последней операции в журнале активности. Значение используется как временная отметка последнего успешного обновления журнала.
Этап 6. Фильтрация и получение новых данных. Извлечение только новых записей активности из исходной таблицы на основе последней обработанной даты.
Этап 7. Загрузка данных и агрегация сводки. Загрузка новых данных в журнал активности с последующей агрегацией сводной статистики по кейсам.
Этап 8. Публикация и запуск. Активация скрипта для работы.
После публикации скрипта настройте дашборд для просмотра сводной статистики по кейсам.
Подготовка данных
Для работы скрипта необходим источник данных. Это может быть таблица из CRM, лог-файл сервера или экспорт из 1С. Используйте приложенный CSV-файл, имитирующий поток событий.
Скачивание и подготовка
Получите данные:
- Скачайте архив с тестовыми данными по ссылке: .
- Распакуйте архив. Внутри него находится файл log_new.csv с таблицей
log_new. Таблица содержит колонки:case_id— идентификатор кейсаclient_id— идентификатор клиентаtime_begin— время начала событияtime_end— время окончания событияstatus— статус процессаuser_id— идентификатор оператора
Загрузка таблицы в пространство
Загрузите таблицу в рабочее пространство:
- Перейдите во вкладку Модель данных и нажмите + Добавить таблицу.
- Нажмите Импортировать.
- В открывшемся окне задайте параметры импорта:
- Разделитель — точка с запятой
- Квалификатор — двойные кавычки
- Кодировка — UTF-8
- Загрузите скачанный файл log_new.csv и нажмите Продолжить.
- В открывшемся окне нажмите Импортировать.
Создание скрипта
Чтобы создать скрипт:
- В рабочем пространстве нажмите + Добавить и в списке выберите Скрипт.
- В открывшемся окне задайте название скрипта «Обновление данных» и нажмите Добавить.
Откроется холст скрипта.
Настройка расписания
С помощью блока Планировщик задайте расписание выполнения скрипта каждые 15 минут. Чтобы добавить и настроить блок:
- Нажмите Выберите триггер и в открывшейся боковой панели нажмите Планировщик.
- Нажмите на раскрывающийся список Запускать скрипт. Поле Минуты должно содержать значение 15.
- Нажмите Тестировать, чтобы протестировать блок.
- Во вкладке Тест отображаются данные об успешном тестировании.
Создание таблицы журнала активности
Для работы с обновленными строками необходима отдельная таблица. Создайте таблицу журнала активности log_activity с колонками case_id, client_id, time_begin, time_end, status и user_id:
- Нажмите + и в левой панели выберите группу Пространство.
- Выберите Создать таблицу.
- В параметрах укажите:
- Тип действия — Создать, если не существует
- Название таблицы —
log_activity - Order by —
case_id
- Нажмите Добавить, чтобы добавить колонку таблицы.
- Задайте параметры колонки: название
case_idи тип данных String. - Аналогично создайте остальные колонки:
client_id— тип данных Stringtime_begin— тип данных DateTime64time_end— тип данных DateTime64status— тип данных Stringuser_id— тип данных String
- Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании.
Определение даты последнего обновления
Настроим часть скрипта, которая получает максимальное значение даты max_time из уже записанных в журнал активности. Это значение будет использоваться для фильтрации новых данных.
Для этого:
- В левой панели перейдите в группу Пространство и нажмите Выбрать строки через SQL-запрос.
- В поле SQL-запрос введите запрос:
SELECT max(time_begin) AS max_time FROM log_activity - Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании.
Фильтрация и получение новых данных
Настроим часть скрипта, которая извлекает из таблицы log_new только новые записи, появившиеся после последней даты из журнала активности.
Блок Выбрать строки через SQL-запрос использует результат предыдущего блока max_time для фильтрации данных. Для создания и настройки блока:
- В левой панели перейдите в группу Пространство и нажмите Выбрать строки через SQL-запрос.
- В поле SQL-запрос введите запрос:
SELECT * FROM log_new WHERE time_begin > parseDateTimeBestEffort() - Подставьте поле
max_timeвparseDateTimeBestEffort(). Для этого в левой панели редактора выберите вкладку Дерево тегов, раскройте список 3. Выбрать строки через SQL-запрос и нажмите на значение. - Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании.
Загрузка данных и агрегация сводки
Добавьте и настройте блок Добавить строки, чтобы перенести обновленные записи в журнал активности. Для этого:
- В левой панели перейдите в группу Пространство и выберите блок Добавить строки.
- В открывшейся панели в раскрывающемся списке Таблица выберите таблицу журнала активности
log_activity, чтобы добавить в нее новые данные. - Нажмите Автозаполнение полей выходными данными.
- В открывшейся панели проверьте корректность маппинга полей и нажмите Применить.
- В настройках блока отображается результат маппинга.
- Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании.
Добавьте блок Синхронизатор, чтобы сводная таблица обновлялась только после полной загрузки новых данных в журнал активности:
- В левой панели перейдите в группу Инструменты и выберите блок Синхронизатор.
Добавьте и настройте блок Создать таблицу для формирования сводки изменений:
- В левой панели перейдите в группу Пространство и выберите блок Создать таблицу.
- В параметрах блока:
- В раскрывающемся списке Тип действия выберите Создать или заменить
- В поле Название таблицы укажите таблицу
cases - Активируйте переключатель Продвинутый режим
- В поле Select-запрос введите запрос:
SELECT case_id, min(time_begin) AS time_begin, max(time_end) AS time_end, count(status) AS count_status, date_diff('second', time_begin, time_end) AS duration FROM log_activity GROUP BY case_id - В поле Order by задайте
case_id
- Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании.
Публикация скрипта
Для активации скрипта его необходимо протестировать, опубликовать и запустить. Для этого:
- На верхней панели нажмите Тестирование, чтобы протестировать скрипт целиком.
- По окончании в правой верхней части экрана появится сообщение об успешном тестировании.
- Нажмите Опубликовать, чтобы опубликовать скрипт.
- Нажмите Активировать, чтобы начать выполнение скрипта.
- В правой верхней части экрана появится сообщение об успешном выполнении скрипта с временными отметками последнего и следующего выполнения.
Просмотр данных в дашборде
Скрипт создает таблицу cases со сводной статистикой по кейсам. Подключите созданную таблицу в Модель данных и настройте дашборд для визуализации показателей.
Подключение таблиц
Подключите таблицы:
- Перейдите во вкладку Модель данных и нажмите + Добавить таблицу → Подключить.
- Выберите таблицу
cases. - Нажмите Подключить.
- Нажмите + Добавить таблицу → Подключить.
- Выберите таблицу
log_new. - В открывшемся окне нажмите Подключить.
Создание связи между таблицами
Создайте и настройте связь между таблицами log_activity и cases:
- Нажмите + Добавить связь таблицы
log_activity. - Нажмите появившуюся иконку связи у таблицы
cases. - В открывшемся окне проверьте, что указан тип связи Многие к одной, выберите колонки
case_idтаблицlog_activityиcasesи нажмите Добавить.
Создание дашборда
- В Панели управления нажмите + Добавить → Дашборд.
- Задайте название Сводка по бизнес-процессам и нажмите Сохранить.
Создание виджета со сводкой
Для добавления и настройки виджета со сводкой:
- Нажмите + Создать строку.
- Нажмите Виджет → Таблица.
- В настройках таблицы нажмите + Разрез.
- В раскрывающемся списке выберите таблицу
cases. - В раскрывающемся списке выберите колонку
case_id. Задайте разрезу название Идентификатор кейса. - Аналогично добавьте колонку
time_begin, выбрав тип данных Дата и время (time_begin). Задайте разрезу название Время начала обработки кейса. - Добавьте колонку
time_end, выбрав тип данных Дата и время (time_end). Задайте разрезу название Время завершения последней операции кейса. - Добавьте колонку
count_status. Задайте разрезу название Количество операций кейса. - Добавьте колонку
durationи выберите формат Длительность. Задайте разрезу название Длительность обработки кейса.
По окончании настройки таблица отображает требуемые показатели. В верхней части экрана нажмите кнопку Опубликовать, чтобы опубликовать дашборд.
Результат
Дашборд визуализирует метрики по каждому кейсу. После активации скрипта таблица обновляется каждые 15 минут.
Преимущества для пользователей
С помощью скрипта автоматизации обновления и агрегации данных пользователи теперь могут:
- Автоматически загружать только новые записи без дублирования
- Получать сводную статистику по длительности и количеству операций для каждого кейса
- Обеспечивать актуальность данных в дашбордах с обновлением каждые 15 минут
| Роль | Польза |
|---|---|
| Бизнес-аналитик | Автоматически агрегирует необработанные логи в готовую сводку по бизнес-процессам без ручных ETL-инструментов |
| Администратор системы | Автоматизирует инкрементальную загрузку и обеспечивает стабильное обновление журналов активности |
| Операционный аналитик | Получает возможность настроить метрики длительности процессов для выявления узких мест в реальном времени |
Была ли статья полезна?