Автоматизация обновления и агрегации активности бизнес-процессов
Документация
Главная

Создание скрипта: Автоматизация обновления и агрегации активности бизнес-процессов

В этом документе показано, как настроить скрипт в Proceset для регулярного сбора данных активности бизнес-процессов из источника в журнал активности и автоматического создания сводной статистики по кейсам — без ручного запуска и с защитой от дубликатов. Защита обеспечивается инкрементальной загрузкой: передаются только те записи, время начала которых позже последней обработанной записи в журнале.

Решение обеспечивает актуализацию данных и аналитики процессов в реальном времени.

Контекст

Компания ведет мониторинг бизнес-процессов через журнал активности, в котором фиксируются параметры операций: время начала и завершения события, статус, идентификаторы кейса, оператора и клиента. Системным и бизнес-аналитикам важно получать:

  • Только новые записи без дублирования при частых обновлениях
  • Сводку по каждому кейсу: время начала и окончания, количество операций, общую длительность в секундах
  • Автоматическое обновление данных каждые 15 минут для оперативных дашбордов

Традиционный подход требует ручных SQL-запросов или ETL-инструментов. Скрипт в модуле Автоматизация решает задачу за счет инкрементальной загрузки на основе последней даты и агрегации данных в отдельную таблицу сводки.

Этапы реализации скрипта

Реализация скрипта выполняется в 8 этапов:

Этап 1. Подготовка данных. Загрузка таблицы с данными активности в пространство для создания потока событий.

Этап 2. Создание скрипта. Создание скрипта в рабочем пространстве.

Этап 3. Настройка расписания. Установка расписания с помощью блока Планировщик.

Этап 4. Создание таблицы журнала активности. Создание таблицы для загрузки обновленных данных.

Этап 5. Определение даты последнего обновления. Вычисление даты начала последней операции в журнале активности. Значение используется как временная отметка последнего успешного обновления журнала.

Этап 6. Фильтрация и получение новых данных. Извлечение только новых записей активности из исходной таблицы на основе последней обработанной даты.

Этап 7. Загрузка данных и агрегация сводки. Загрузка новых данных в журнал активности с последующей агрегацией сводной статистики по кейсам.

Этап 8. Публикация и запуск. Активация скрипта для работы.

После публикации скрипта настройте дашборд для просмотра сводной статистики по кейсам.

Подготовка данных

Для работы скрипта необходим источник данных. Это может быть таблица из CRM, лог-файл сервера или экспорт из 1С. Используйте приложенный CSV-файл, имитирующий поток событий.

Скачивание и подготовка

Получите данные:

  1. Скачайте архив с тестовыми данными по ссылке: .
  2. Распакуйте архив. Внутри него находится файл log_new.csv с таблицей log_new. Таблица содержит колонки:
    • case_id — идентификатор кейса
    • client_id — идентификатор клиента
    • time_begin — время начала события
    • time_end — время окончания события
    • status — статус процесса
    • user_id — идентификатор оператора

Загрузка таблицы в пространство

Загрузите таблицу в рабочее пространство:

  1. Перейдите во вкладку Модель данных и нажмите + Добавить таблицу. + Добавить таблицу
  2. Нажмите Импортировать. Импортировать таблицу
  3. В открывшемся окне задайте параметры импорта:
    • Разделитель — точка с запятой
    • Квалификатор — двойные кавычки
    • Кодировка — UTF-8
  4. Загрузите скачанный файл log_new.csv и нажмите Продолжить. Окно импорта
  5. В открывшемся окне нажмите Импортировать. Окно импорта этап 2

Создание скрипта

Чтобы создать скрипт:

  1. В рабочем пространстве нажмите + Добавить и в списке выберите Скрипт. Создание скрипта
  2. В открывшемся окне задайте название скрипта «Обновление данных» и нажмите Добавить. Название скрипта

Откроется холст скрипта.

Холст скрипта

Настройка расписания

С помощью блока Планировщик задайте расписание выполнения скрипта каждые 15 минут. Чтобы добавить и настроить блок:

  1. Нажмите Выберите триггер и в открывшейся боковой панели нажмите Планировщик. Выбор триггера
  2. Нажмите на раскрывающийся список Запускать скрипт. Поле Минуты должно содержать значение 15. Настройка расписания
  3. Нажмите Тестировать, чтобы протестировать блок. Тестирование Планировщика
  4. Во вкладке Тест отображаются данные об успешном тестировании. Успешный тест Планировщика

Создание таблицы журнала активности

Для работы с обновленными строками необходима отдельная таблица. Создайте таблицу журнала активности log_activity с колонками case_id, client_id, time_begin, time_end, status и user_id:

  1. Нажмите + и в левой панели выберите группу Пространство. Добавление "Создать таблицу"
  2. Выберите Создать таблицу. Добавление "Создать таблицу"
  3. В параметрах укажите:
    • Тип действияСоздать, если не существует
    • Название таблицыlog_activity
    • Order bycase_id
    Параметры Создать таблицу
  4. Нажмите Добавить, чтобы добавить колонку таблицы. Кнопка Добавить
  5. Задайте параметры колонки: название case_id и тип данных String. Задание названия и типа данных колонки
  6. Аналогично создайте остальные колонки:
    • client_id — тип данных String
    • time_begin — тип данных DateTime64
    • time_end — тип данных DateTime64
    • status — тип данных String
    • user_id — тип данных String
    Созданные колонки
  7. Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании. Тестирование Создать таблицу

Определение даты последнего обновления

Настроим часть скрипта, которая получает максимальное значение даты max_time из уже записанных в журнал активности. Это значение будет использоваться для фильтрации новых данных.

Для этого:

  1. В левой панели перейдите в группу Пространство и нажмите Выбрать строки через SQL-запрос. Блок Выбрать строки
  2. В поле SQL-запрос введите запрос:
    SELECT max(time_begin) AS max_time
    FROM log_activity
    
    Ввод запроса
  3. Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании. Тестирование Выбрать строки через SQL-запрос

Фильтрация и получение новых данных

Настроим часть скрипта, которая извлекает из таблицы log_new только новые записи, появившиеся после последней даты из журнала активности.

Блок Выбрать строки через SQL-запрос использует результат предыдущего блока max_time для фильтрации данных. Для создания и настройки блока:

  1. В левой панели перейдите в группу Пространство и нажмите Выбрать строки через SQL-запрос. Блок Выбрать строки
  2. В поле SQL-запрос введите запрос:
    SELECT *
    FROM log_new
    WHERE time_begin > parseDateTimeBestEffort()
    
  3. Подставьте поле max_time в parseDateTimeBestEffort(). Для этого в левой панели редактора выберите вкладку Дерево тегов, раскройте список 3. Выбрать строки через SQL-запрос и нажмите на значение. Подстановка значения
  4. Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании. Тестирование Выбрать строки

Загрузка данных и агрегация сводки

Добавьте и настройте блок Добавить строки, чтобы перенести обновленные записи в журнал активности. Для этого:

  1. В левой панели перейдите в группу Пространство и выберите блок Добавить строки. Блок Добавить строки
  2. В открывшейся панели в раскрывающемся списке Таблица выберите таблицу журнала активности log_activity, чтобы добавить в нее новые данные. Указание таблицы
  3. Нажмите Автозаполнение полей выходными данными. Кнопка Автозаполнение полей выходными данными
  4. В открывшейся панели проверьте корректность маппинга полей и нажмите Применить. Предпросмотр маппинга полей
  5. В настройках блока отображается результат маппинга. Маппинг данных
  6. Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании. Тестирование Добавить строки

Добавьте блок Синхронизатор, чтобы сводная таблица обновлялась только после полной загрузки новых данных в журнал активности:

  1. В левой панели перейдите в группу Инструменты и выберите блок Синхронизатор. Группа Инструменты Блок Синхронизатор

Добавьте и настройте блок Создать таблицу для формирования сводки изменений:

  1. В левой панели перейдите в группу Пространство и выберите блок Создать таблицу. Блок Создать таблицу
  2. В параметрах блока:
    • В раскрывающемся списке Тип действия выберите Создать или заменить
    • В поле Название таблицы укажите таблицу 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
    Параметры Создать таблицу
  3. Нажмите Тестировать, чтобы протестировать блок. Во вкладке Тест отобразятся данные об успешном тестировании. Тестирование Создать таблицу

Публикация скрипта

Для активации скрипта его необходимо протестировать, опубликовать и запустить. Для этого:

  1. На верхней панели нажмите Тестирование, чтобы протестировать скрипт целиком. Тестирование всего скрипта
  2. По окончании в правой верхней части экрана появится сообщение об успешном тестировании. Результат тестирования
  3. Нажмите Опубликовать, чтобы опубликовать скрипт. Публикация скрипта
  4. Нажмите Активировать, чтобы начать выполнение скрипта. Активация скрипта
  5. В правой верхней части экрана появится сообщение об успешном выполнении скрипта с временными отметками последнего и следующего выполнения. Успешное выполнение скрипта

Просмотр данных в дашборде

Скрипт создает таблицу cases со сводной статистикой по кейсам. Подключите созданную таблицу в Модель данных и настройте дашборд для визуализации показателей.

Подключение таблиц

Подключите таблицы:

  1. Перейдите во вкладку Модель данных и нажмите + Добавить таблицуПодключить. + Добавить таблицу
  2. Выберите таблицу cases. Таблица cases
  3. Нажмите Подключить. Подключить таблицу
  4. Нажмите + Добавить таблицуПодключить. + Добавить таблицу 2
  5. Выберите таблицу log_new. Таблица log_new
  6. В открывшемся окне нажмите Подключить.

Создание связи между таблицами

Создайте и настройте связь между таблицами log_activity и cases:

  1. Нажмите + Добавить связь таблицы log_activity. Добавить связь
  2. Нажмите появившуюся иконку связи у таблицы cases. Иконка связи
  3. В открывшемся окне проверьте, что указан тип связи Многие к одной, выберите колонки case_id таблиц log_activity и cases и нажмите Добавить. Кнопка Добавить

Создание дашборда

  1. В Панели управления нажмите + ДобавитьДашборд. Добавление дашборда
  2. Задайте название Сводка по бизнес-процессам и нажмите Сохранить. Задание названия дашборда

Создание виджета со сводкой

Для добавления и настройки виджета со сводкой:

  1. Нажмите + Создать строку. Кнопка + Создать строку
  2. Нажмите ВиджетТаблица. Добавить виджет
  3. В настройках таблицы нажмите + Разрез. Кнопка + Разрез
  4. В раскрывающемся списке выберите таблицу cases. Разрез по cases
  5. В раскрывающемся списке выберите колонку case_id. Задайте разрезу название Идентификатор кейса. Разрез по case_id
  6. Аналогично добавьте колонку time_begin, выбрав тип данных Дата и время (time_begin). Задайте разрезу название Время начала обработки кейса. Разрез по time_begin
  7. Добавьте колонку time_end, выбрав тип данных Дата и время (time_end). Задайте разрезу название Время завершения последней операции кейса.
  8. Добавьте колонку count_status. Задайте разрезу название Количество операций кейса.
  9. Добавьте колонку duration и выберите формат Длительность. Задайте разрезу название Длительность обработки кейса.

По окончании настройки таблица отображает требуемые показатели. В верхней части экрана нажмите кнопку Опубликовать, чтобы опубликовать дашборд.

Опубликованный дашборд

Результат

Дашборд визуализирует метрики по каждому кейсу. После активации скрипта таблица обновляется каждые 15 минут.

Преимущества для пользователей

С помощью скрипта автоматизации обновления и агрегации данных пользователи теперь могут:

  • Автоматически загружать только новые записи без дублирования
  • Получать сводную статистику по длительности и количеству операций для каждого кейса
  • Обеспечивать актуальность данных в дашбордах с обновлением каждые 15 минут
РольПольза
Бизнес-аналитикАвтоматически агрегирует необработанные логи в готовую сводку по бизнес-процессам без ручных ETL-инструментов
Администратор системыАвтоматизирует инкрементальную загрузку и обеспечивает стабильное обновление журналов активности
Операционный аналитикПолучает возможность настроить метрики длительности процессов для выявления узких мест в реальном времени

Была ли статья полезна?

Предыдущая
Карта процесса: Анализ процесса оформления заявок на кредит
Следующая
MS Exchange: Регулярное получение событий из календарей с помощью временной метки SyncState
430006, Саранск,
Северо-восточное шоссе, д. 3
ОКВЭД 62.01
ИНН 1328​909857
Код вида деятельности
в области ИТ 15.02 и 17.01
Языки программирования