Для работы с системой в неё должны быть загружены данные. Для этого в разделе Модели данных создайте новую модель.
При первом входе будет отображена пустая страница, на которой можно создать модель. Нажмите Создать модель данных для создания новой модели.
В появившемся окне выберите способ создания модели:
При создании модели вручную введите название модели данных и нажмите Создать модель данных. Далее, перейдите в созданную модель и воспользуйтесь Быстрым стартом или заполните данные самостоятельно.
При создании модели путём импорта данных, выберите пункт Импортировать из файла VKPM (JSON) и добавьте файл с данными в область размещения файла. Нажмите Создать модель данных.
Если модели данных в системе уже есть, то отобразится список загруженных моделей. С каждой из них можно выполнить действия:
Если зайти в модель данных то отобразится интерфейс с выбором способа загрузки данных:
Для очистки модели нажмите кнопку Очистить данные в левом верхнем углу.
Нажатие на кнопку вызовет меню с настройками очистки. В нем можно выбрать одно или несколько правил для очистки данных внутри модели.
Быстрый старт позволяет загрузить данные с помощью файлов в формате Excel, CSV, JSON и XML. Интерфейс «Быстрого старта» представлен в виде действий по шагам.
На этом шаге происходит загрузка данных в систему. Система попытается автоматически определить кодировку файла. Если это не удается сделать, то кодировку можно выбрать руками.
Также на этом экране можно скачать пример журнала событий.
Интерфейс позволяет догружать данные в систему. Например, если файл большой и его разделили на несколько частей, или когда происходит загрузка данных за новый временной период.
В том случае, если в загруженных данных есть идентификатор события, то при его наличии в догружаемом файле, произойдет обновление старой строки события без дублирования данных. Если в загруженных данных или в догружаемом файле идентификатора события нет, то события будут дублированы.
При загрузке данных автоматически заполняется журнал загрузок, содержащий следующую информацию:
Каждую ошибку загрузки можно просмотреть через меню Детали.
На шаге 2 отображается таблица с загруженными данными.
Система автоматически распознает типы данных в каждой колонке и отобразит их пользователю: можно согласиться и перейти на следующий шаг или поменять их. Важно проверить каждую колонку на правильность типа данных, чтобы, например, в дальнейшем работать в системе с числами как с числом, а не как с текстом.
Формат даты также будет распознан автоматически. Его можно поменять, если он неверный.
Если система совсем неверно распознала типы данных или форматы дат, то нажатием на кнопку Посмотреть сырые данные без автоопределения типов можно увидеть, что подавалось на вход системе, не открывая на компьютере загружаемый файл.
В интерфейсе шага 3 необходимо указать, какие поля из загружаемого файла соответствуют обязательным и необязательным полям журнала событий для process mining.
Обязательные поля:
При помощи зажатой ЛКМ перетщите поля из верхней части на колонки в таблице под ними. Когда все обязательные поля будут перенесены, можно будет перейти на следующий шаг.
Система обработает только те поля, которые вынесены на таблицу, а остальные пропустит и в системе их нельзя будет увидеть.
Последний шаг отображает прогресс загрузки данных. Время обработки зависит от объема данных.
На этом шаге можно отменить загрузку, она произойдет не моментально. Пользователю будет отображено сообщение «Получен запрос на отмену. Пожалуйста, подождите». Если отменить загрузку, то данные будут загружены не в полном объеме и их рекомендуется очистить перед следующей загрузкой. На это будет указывать статус модели.
На этапе «Расчет статистики» отмену выполнить нельзя. Данный этап рассчитывает базовые показатели: цепочки, длительности, количество шагов по экземплярам.
Журнал событий грузится в систему путем подгрузки одновременно двух CSV-файлов:
Примеры файлов: https://cloud.mail.ru/public/YWiv/potPiUN8L
Описание файла event.csv:
Описание файла process.csv:
Общие правила заполнения CSV-файлов:
"
.""
.,
— обратный слэш плюс запятая \,
.:
— обратный слэш плюс двоеточие \:
.\
— два обратных слэша \\
.Пример заполнения attributes:
атрибут “поставщик” со значением ООО “Экспресс: Канцелярские товары, расходные материалы\картриджи”
“поставщик:ООО "”Экспресс: Канцелярские товары, расходные материалы\\картриджи”””
Файлы CSV можно также загрузить с разделителем колонок точка с запятой, сами колонки при этом будут не в кавычках. Все атрибуты процесса и событий в колонке attributes при этом разделены запятой, правила экранирования такие же. Обычно такой формат получается при автоматической конвертации из Excel-документа в CSV.
Страница для подгрузки журнала событий в преднастроенном формате доступна из основного меню в разделе «Преднастроенный формат».
Система автоматически определяет типы загружаемых данных. Если система определяет типы данных неверно, то их можно задать заранее через интерфейс. После загрузки на странице с моделью показываются атрибуты и их типы.
Для получения информации из внешних источников необходимо перейти в раздел «Модели данных», выбрать нужную модель и зайти в раздел «Самостоятельная работа с данными».
Для загрузки данных подходит любая совместимая ODBC база данных. По умолчанию подключены PostgreSQL и MySQL. Для возможности работы с другими базами необходимо обратиться к разработчикам.
Интерфейс «Самостоятельная работа с данными» представлен в виде действий по шагам.
На этом шаге создаются «сырые» таблицы для временного хранения данных из внешних источников, с последующей их обработкой на Шаге 3 и загрузкой в целевую модель.
Доступные действия для таблицы:
Для добавления таблицы необходимо нажать кнопку «Плюс». На выбор доступны два варианта:
Для создания новой таблицы вручную выберите опцию «Ручное добавление». В открывшемся окне заполните форму таблицы.
Названия создаваемых таблиц и полей таблиц должны соответствовать названиям в источнике из которого будут поступать данные. То есть допустимы названия, написанные латиницей.
Для создания новой таблицы напрямую из БД, выберите опцию «Импорт кода». В открывшейся форме заполните поля:
Название таблицы.
Текст CREATE TABLE из базы данных.
Пример текста:
CREATE TABLE IF NOT EXISTS public.orders
(
order_id integer NOT NULL,
user_id integer,
order_type character varying COLLATE pg_catalog."default",
material character varying COLLATE pg_catalog."default",
order_info character varying COLLATE pg_catalog."default",
CONSTRAINT orders_pkey PRIMARY KEY (order_id)
)
Нажмите продолжить.
Созданная таблица выглядит следующим образом:
Для перехода к редактированию таблицы выполните одно из следующих действий:
В открывшейся форме внесите необходимые изменения и нажмите Сохранить изменения.
Источники данных
На этом шаге задаются внешние источники данных, откуда будет происходить загрузка. Для этого в открывшемся окне перейдите на вкладку «Источники данных».
Нажмите на кнопку «Добавить источник» и в открывшемся окне заполните необходимые данные.
Название источника данных для отображения в интерфейсе.
Тип источника данных (пока доступны только Базы данных).
URI источника для подключения к БД. Описание структуры https://docs.sqlalchemy.org/en/14/core/engines.html#database-urls.
Указываем таблицу или запрос для базы данных, по которым будет производиться загрузка. Нельзя указать таблицу и запрос одновременно. Тут также указывается схема, если она есть.
select * from table
.Ключевое поле — указывается название поля в БД, по которому будут загружаться данные. Его нужно указывать, если в таблице очень много строк (! без него будет полный запрос без limit) или если будет настраиваться инкрементальная загрузка. Если указать ключевое поле, то будут показаны дополнительные настройки.
Размер страницы — загрузка данных из БД происходит пачками, если указано Ключевое поле. В данном поле указывается ее размер. Данное значение будет подставлено в запрос к базе. По умолчанию, если ничего не указать, то она будет равна 100000 или тому, что указано в глобальном конфиге системы (редактирование доступно администратору кластера).
Для следующей конфигурации источника, к БД будет сформирован первый запрос:
select *
from hist
where process_id > ''
order by process_id
limit 100000
Для последующих пачек будет сформирован запрос уже по последнему полученному идентификатору. И так пока все данные не будут загружены.
select *
from hist
where process_id > 'test-35706028'
order by process_id
limit 100000
Когда загрузка завершится, в источнике будет отображаться последний загруженный идентификатор. В следующий раз загрузка пойдет от него.
Важные уточнения работы с SQL запросом к источнику и ручным ограничение объема загрузки
Допустим для источника используется SQL-запрос. Если в нем указать лимит на загрузку строк, к примеру,
limit 1000
, и задано ключевое поле, то система будет считать, что задано поле "Размер страницы"=1000. То есть 1000 указанная в запросе будет относиться к размеру страницы, а не к ограничению объема. То есть будут загружены все строки из таблицы пачками по 1000.При этом, если ключевое поле задано и используется запрос, то в этой комбинации система ожидает в тексте запроса параметр
$key
и меняет его на последнее загруженное значение ключа, чтобы для каждой очередной пачки знать, куда подставить значение ключа в запрос, отчего может возникнуть ошибка при загрузке. Также можно указатьlimit $limit
вместо статического значения 1000. В этом случае значение размера страницы будет подтягиваться из настроек источника (поле «Размер страницы») или глобальных настроек системы (по умолчанию, если не задан «Размер страницы»).
$key
и$limit
указываются только для случая, когда задано ключевое поле. Пример запроса:select * from hist where process_id > $key order by process_id limit $limit
Но если убрать ключевое поле — 1000 становится ограничением объема. Таким образом загружается не весь объем источника, т.к. для системы весь объем — это первые 1000 записей и она не знает про остальные.
Расписания
На вкладке Расписания происходит настройка загрузки данных в таблицы, созданных на Шаге 1, из источников, настроенных на Шаге 2 раздела Источники данных. Для того, чтобы это сделать, нажмите на кнопку Добавить расписание. В появившемся окне заполните необходимые данные:
Далее необходимо сохранить расписание, чтобы продолжить с ним работу, нажав на кнопку сохранения в правом верхнем углу интерфейса.
После сохранения появляется интерфейс добавления задач в расписание. С помощью них можно выставить последовательность действий с моделью.
Например, может быть реализован следующий сценарий:
У задачи для заполнения доступны следующие поля:
Тип загрузка
Тип удаление
На этом шаге созданные таблицы связываются между собой скриптом на языке Lua. Скрипт привязывается только к основной таблице — таблице событий. Данный скрипт срабатывает на каждой строке и записывает данные в целевые таблицы process и event.
Если данных много, то рекомендуется сразу добавить скрипт трансформации. Он нужен для того, чтобы данные в сырой таблице событий не копились, а удалялись сразу после обработки и трансформации загруженной пачки. Размер пачки настраивается в источнике в поле «Размер страницы». При этом данные в справочниках (не основные таблицы) удаляться не будут.
Пример скрипта трансформации:
function(row, modelUid)
local process = {
extId = row.process_id
}
local p_attrs = getSpace('attr2', modelUid):get(row.process_id)
if p_attrs ~= nil then
p_attrs = tomap(p_attrs)
p_attrs.close_date_time = p_attrs.close_date_time
process.attrs = p_attrs
end
local event = {
name = row.name,
started = row.started,
ended = row.started,
sorting = row.sorting,
attrs = tomap(row)
}
event.attrs.name = nil
event.attrs.process_id = nil
event.attrs.started = nil
event.attrs.date_out_tz = event.attrs.date_out_tz
process.attrs.process_id = nil
return process, event
end
Календарь позволяет добавить рабочее расписание, праздничные дни и дополнительные рабочие дни, чтобы пересчитать статистику длительностей.
Для каждой модели можно добавить свой календарь, но он будет одним на всю модель.
Виджеты Variant Explorer, Case Explorer, Lead Time (Преднастроенные виджеты)
Чтобы увидеть пересчитанные значения по календарю в преднастроенных виджетах Variant Explorer, Case Explorer и Lead Time необходимо открыть настройки виджета в режиме редактирования и выбрать чекбокс «Отображать время по заданному рабочему календарю».
Все остальные виджеты (Универсальные виджеты)
Чтобы увидеть пересчитанные значения по календарю в универсальных виджетах, например, таблицах или гистограммах, необходимо при написании SQL-запроса использовать колонки:
Например, можно использовать следующий запрос, для сравнения показателей длительностей фактических и по календарю на каждом шаге:
select
name,
sum(durationFact) as "Длительность фактическая",
sum(durationSch) as "Длительность по календарю",
sum(intervalFact) as "Интервал фактический",
sum(intervalSch) as "Интервал по календарю"
from
event
group by
name
order by
name
Также для расчета интервалов между двумя шагами используется функция getdurationSch
— подробное описание и примеры использования приведены в документе с описанием дополнительных SQL-функций.
Если нужно использовать в одной модели разные календари и поля durationSch
/intervalSch
не подходят, то можно использовать функцию workTime
. Подробное описание и примеры использования приведены в документе с описанием дополнительных SQL-функций.
Страница с типами данных позволяет работать с загружаемыми колонками в модель.
На ней можно выполнять следующие действия:
Страница позволяет задавать переменные.
Переменные бывают:
Сферы применения: