Перейти к содержанию

Plugin BPM

Plugin BPM – расширение (плагин) языка SMaLL для анализа бизнес-процессов и последовательностей.

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

Совокупность цифровых следов одного процесса называется событийным логом процесса. Команды плагина “Plugin BPM” работают с событийными логами процессов и позволяют получать максимум информации о том, как на самом деле протекают процессы, в чем их основные особенности и узкие места.

Так как данный плагин является частью основного плагина SMaLL Core, согласно его идеологии для того, чтобы вызвать любую из команд плагина BPM, нужно использовать следующую конструкцию:

... | apply \<some_command>

Описание файла bpm.config

В данном файле находятся следующие конфигурационные параметры плагина (сам файл должен находиться в той же папке, что и плагин):

processSchemaPath = "/opt/otp/lookups/dataset.csv" - путь к файлу с эталонной схемой процесса (подробнее ниже в описании команды checkconformance)

CHECKCONFORMANCE

Команда реализует поиск временных и топологических отклонений в инстансах процесса от эталонной схемы процесса. Путь к эталонной схеме процесса указывается в конфигурационном файле плагина (bpm.conf) в переменной processSchemaPath. Эталонная схема процесса должна содержать поля node, relation. Ниже представлен пример эталонной схемы:

node relation
start Data Input
Data Input Data Processing
Data Processing Waiting for Approval
Waiting for Approval Contract Signing
Contract Signing Contract Check
Contract Check Loan Provided
Loan Provided finish

Формат входных данных

Во входных данных должны присутствовать следующие поля:

  • caseId \<string> - идентификатор инстанса процесса;

  • trace \<array\<string>>- последовательность событий инстанса процесса;

Синтаксис команды

checkconformance [trace_field=\<string>, schema_file=\<string>]

Опциональные параметры:

  • trace_field - имя колонки, которая содержит последовательности событий инстансов процесса. Значение по умолчанию - _traces.

  • schema_file - путь к файлу с эталонной схемой процесса. Значение по умолчанию берется из конфигурационного файла

Результат работы команды

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

  • Trace - идентификатор инстанса процесса

  • metric - числовая метрика соответствия инстанса процесса эталонной схеме. Метрика находится в диапазоне от 0 до 1. При этом 1 означает полное соответствие инстанса схеме, а 0 - абсолютное несоответствие.

  • recomm_sc - информация о топологических и временных отклонениях инстанса процесса от эталонной схемы.

  • not_in_dict - события, отсутствующие в эталонном процессе, но присутствующие в анализируемом процессе

Пример использования

Исходные данные:

caseId trace
2d1a0711 Data Input,Data Processing,Data Input,Data Processing,Waiting for Approval,Contract Signing,Contract Check,Loan Granted,Loan Provided

Запрос:

... | apply checkconformance trace_field=trace

Результат:

trace metric recomm_sc not_in_dict
2d1a0711 0.66 Отклонение: после статуса [Data Processing] на позиции 1 выполнена лишняя цепочка действий [Data Input, Data Processing] ||| Отклонение: после статуса [Contract Check] на позиции 6 выполнено лишнее действие [Loan Granted]]

CLUSTER

Команда реализует кластеризацию инстансов процесса. В качестве результата возвращает сценарии прохождения процесса с указанием процентного соотношения сценариев.

Формат входных данных

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

  • caseId - идентификатор инстанса процесса (допускается как строковое название, так и числовой идентификатор).

  • timestamp - метка времени исполнения события.

  • eventId - идентификатор события процесса (допускается как строковое название, так и числовой идентификатор).

Синтаксис команды

cluster [aggregate=\<boolean>]

Опциональные параметры:

  • aggregate – при установке значения параметра в true результатом выполнения команды будет список обнаруженных кластеров с дополнительной информацией. При установке значения параметра в false номер кластера будет добавлен к исходным данным в поле cluster. Значение параметра по умолчанию - true.

Результат работы команды

В зависимости от параметра aggregate, в результате использования команды возвращается таблица либо с числом строк равным количеству кластеров (при значении aggregate=True) и следующими полями:

  • _cleanTrace - сценарий, по которому проходит процесс в данном кластере.

  • cluster - номер кластера.

  • _percent - процент инстансов процесса, которые попадают в данный кластер.

  • _count - абсолютное количество инстансов процесса, которые попадают в данный кластер.

Либо, если aggregate=False, возвращается исходная таблица с добавленной колонкой cluster, в которой отображается номер кластера.

Пример использования

Исходные данные:

caseId timestamp eventId
2d1a0711 1561383698 Data Input
2d1a0711 1561385422 Data Processing
2d1a0711 1561385936 Waiting for Approval
2d1a0711 1561386040 Contract Signing
2d1a0711 1561386683 Contract Check
2d1a0711 1561386729 Loan Granted
2d1a0711 1561386746 Loan Provided
4c6ef22a 1559727424 Data Input
4c6ef22a 1559727976 Data Processing
4c6ef22a 1559728066 Data Input
4c6ef22a 1559728213 Data Processing
4c6ef22a 1559728408 Offer Signing
4c6ef22a 1559793293 Contract Check
4c6ef22a 1559812480 Underwriting Started
4c6ef22a 1559812482 Task Created
4c6ef22a 1559812571 Task Assigned
4c6ef22a 1559813567 Task Started
4c6ef22a 1559813725 Task Delayed
4c6ef22a 1559819253 Task Started
4c6ef22a 1559819274 Data Processing
4c6ef22a 1559819310 Underwriting Started
4c6ef22a 1559819312 Task Created
4c6ef22a 1559819530 Task Assigned
4c6ef22a 1559834790 Task Started
4c6ef22a 1559835226 Data Processing
4c6ef22a 1559835262 Loan Granted
4c6ef22a 1559835273 Loan Provided
52b31eb5 1556291469 Data Input
52b31eb5 1556292526 Data Processing
52b31eb5 1556293768 Waiting for Approval
52b31eb5 1556293838 Contract Signing
52b31eb5 1556294389 Contract Check
52b31eb5 1556294463 Loan Granted
52b31eb5 1556294478 Loan Provided

Запрос:

| apply cluster aggregate=true

Результат:

_cleanTrace _count _percent cluster
Data Input,Data Processing,Waiting for Approval,Contract Signing,Contract Check,Loan Granted,Loan Provided 2 66.67 1
Data Input,Data Processing,Offer Signing,Contract Check,Underwriting Started,Task Created,Task Assigned,Task Started,Task Delayed,Task Started,Data Processing,Underwriting Started,Task Created,Task Assigned,Task Started,Data Processing,Loan Granted,Loan Provided 1 33.33 2

COLLECTRACES

Команда преобразует событийный лог процесса к последовательностям событий.

Формат входных данных

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

  • caseId - идентификатор инстанса процесса (допускается как строковое название, так и числовой идентификатор)

  • timestamp - метка времени исполнения события

  • eventId - идентификатор события процесса (допускается как строковое название, так и числовой идентификатор)

Синтаксис команды

collecttraces

Результат работы команды

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

  • caseId - идентификатор инстанса процесса

  • _traces - последовательность действий данного инстанса

  • _timestamp - метка времени старта инстанса процесса

Пример использования

Исходные данные:

caseId timestamp eventId
4da7a83e 1557842640 Data Input
4da7a83e 1557843412 Data Processing
4da7a83e 1557843571 Commitment Input
4da7a83e 1557845413 Data Processing
4da7a83e 1557845468 Waiting for Approval
4da7a83e 1557845831 Contract Signing
4da7a83e 1557846588 Contract Check
4da7a83e 1557846707 Loan Granted
4da7a83e 1557846731 Loan Provided
2d1a0711 1561383698 Data Input
2d1a0711 1561385422 Data Processing
2d1a0711 1561385464 Data Input
2d1a0711 1561385822 Data Processing
2d1a0711 1561385936 Waiting for Approval
2d1a0711 1561386040 Contract Signing
2d1a0711 1561386683 Contract Check
2d1a0711 1561386729 Loan Granted
2d1a0711 1561386746 Loan Provided

Запрос:

... | apply collecttraces

Результат:

caseId _traces _timestamp
4da7a83e Data Input,Data Processing, Commitment Input, Data Processing, Waiting for Approval, Contract Signing, Contract Signing, Contract Check, Loan Granted, Loan Provided 1557842640
2d1a0711 Data Input, Data Processing, Data Input, Data Processing, Waiting for Approval, Contract Signing, Contract Check, Loan Granted, Loan Provided 1561383698

DROPCONSECUTIVE

Команда реализует удаление повторяющихся событий в инстансах процесса.

Формат входных данных

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

  • caseId - идентификатор инстанса процесса (допускается как строковое название, так и числовой идентификатор)

  • timestamp - метка времени исполнения события

  • eventId - идентификатор события процесса (допускается как строковое название, так и числовой идентификатор)

Синтаксис команды

dropconsecutive

Результат работы команды

В результате использования команды dropconsecutive возвращается исходная таблица, но меньшего размера, если в ней были найдены повторы.

Пример использования

Повторы в исходных данных выделены жирным шрифтом.

Исходные данные:

caseId timestamp eventId
2d1a0711 1561383698 Data Input
2d1a0711 1561383698 Data Input
2d1a0711 1561385422 Data Processing
2d1a0711 1561385464 Data Input
2d1a0711 1561385465 Data Input
2d1a0711 1561385822 Data Processing
2d1a0711 1561385936 Waiting for Approval
2d1a0711 1561385938 Waiting for Approval
2d1a0711 1561386040 Contract Signing
2d1a0711 1561386041 Contract Signing
2d1a0711 1561386103 Contract Signing
2d1a0711 1561386683 Contract Check
2d1a0711 1561386684 Contract Check
2d1a0711 1561386729 Loan Granted
2d1a0711 1561386746 Loan Provided

Запрос:

... | apply dropconsecutive

Результат:

caseId timestamp eventId
2d1a0711 1561383698 Data Input
2d1a0711 1561385422 Data Processing
2d1a0711 1561385464 Data Input
2d1a0711 1561385822 Data Processing
2d1a0711 1561385936 Waiting for Approval
2d1a0711 1561386040 Contract Signing
2d1a0711 1561386683 Contract Check
2d1a0711 1561386729 Loan Granted
2d1a0711 1561386746 Loan Provided

FINDCYCLES

Команда производит поиск цикличностей длины от 2 событий и более в инстансах процесса.

Формат входных данных

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

  • caseId - идентификатор инстанса процесса (допускается как строковое название, так и числовой идентификатор)

  • timestamp - метка времени исполнения события

  • eventId - идентификатор события процесса (допускается как строковое название, так и числовой идентификатор)

Синтаксис команды

findcycles [aggregate=\<boolean>]

Опциональные параметры:

  • aggregate – при установке значения параметра в true результатом выполнения команды будет список обнаруженных цикличностей с дополнительной информацией. При установке параметра в значение false обнаруженная цикличность будет указана для каждого инстанса процесса. Значение параметра по умолчанию - true.

Результат работы команды

В результате работы команды при параметре aggregate=True возвращается таблица со следующими полями:

  • cycle - этапы, формирующие цикл

  • count - Количество инстансов процесса, в которых присутствует данная цикличность

  • occurrences - Процент инстансов процесса, в которых присутствует данная цикличность

В результате работы команды при параметре aggregate=False возвращается таблица со следующими полями:

  • caseId - идентификатор инстанса процесса

  • cycle - этапы, формирующие цикл

Пример использования

Исходные данные:

caseId timestamp eventId
2d1a0711 1561383698 Data Input
2d1a0711 1561385422 Data Processing
2d1a0711 1561385464 Data Input
2d1a0711 1561385822 Data Processing
2d1a0711 1561385936 Waiting for Approval
2d1a0711 1561386040 Contract Signing
2d1a0711 1561386683 Contract Check
2d1a0711 1561386729 Loan Granted
2d1a0711 1561386746 Loan Provided

Запрос:

... | apply findcycles aggregate=true

Результат:

cycle count occurrences
Data Input, Data Processing 1 100

Запрос:

... | apply findcycles

Результат:

caseId cycle
2d1a0711 Data Input, Data Processing

GETPROCESS

Команда реализует алгоритм HeuristicMiner для реконструкции бизнес-процессов из логов событий.

Формат входных данных

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

  • caseId - идентификатор инстанса процесса (допускается как строковое название, так и числовой идентификатор)

  • timestamp - метка времени исполнения события

  • eventId - идентификатор события процесса (допускается как строковое название, так и числовой идентификатор)

Синтаксис команды

fit [dependency_threshold=\<float>] [l1_threshold=\<float>] [l2_threshold=\<float>] [and_threshold=\<float>] [all_connected=\<boolean>] [long_distance_dependency=\<boolean>]]

Опциональные параметры:

  • dependency_threshold – числовой порог от 0 до 1, определяющий, при каком минимальном значении метрики следования (causality) пары событий считать их следующими друг за другом в модели процесса. Значение по умолчанию - 0.7.

  • l1_threshold – числовой порог метрики causality для случая циклов единичной длины. Значение по умолчанию - 1.0.

  • l2_threshold – числовой порог метрики causality для случая циклов длины 2. Значение по умолчанию - 1.0.

  • and_threshold – числовой порог для метрики, выявляющей параллельное следование между парой событий. Порог указывается от 0 до 1. Значение по умолчанию 0.5.

  • all_connected – Указание алгоритму использовать адаптивный способ нахождения dependency_threshold. Значение параметра по умолчанию - false.

  • long_distance_dependency – Указание алгоритму рассматривать при подсчете метрики causality цепочки длиной более 2 событий. Значение параметра по умолчанию - true.

Результат работы команды

В результате использования команды getprocess создаются следующие поля:

  • Node - Идентификатор узла процесса, из которого исходит связь (ребро).

  • Relations - Идентификатор узла процесса, в который входит связь (ребро).

  • Node_visits - Количество прохождений через узел процесса

  • Arc_visits - Количество прохождений по связи (ребру)

  • Fitness - Метрика качества реконструкции процесса. Измеряется от 0 до 1. При этом 0 означает полное отсутствие доверия полученной модели процесса, 1 - абсолютно полную и корректную модель процесса.

Пример использования

Исходные данные:

caseId timestamp eventId
4c6ef22a 1559727424 Data Input
4c6ef22a 1559727976 Data Processing
4c6ef22a 1559728066 Data Input
4c6ef22a 1559728213 Data Processing
4c6ef22a 1559728408 Offer Signing
4c6ef22a 1559793293 Contract Check
4c6ef22a 1559812480 Underwriting Started
4c6ef22a 1559812482 Task Created
4c6ef22a 1559812571 Task Assigned
4c6ef22a 1559813567 Task Started
4c6ef22a 1559813725 Task Delayed
4c6ef22a 1559813883 Task Started
4c6ef22a 1559814316 Task Delayed
4c6ef22a 1559814318 Task Started
4c6ef22a 1559814327 Task Delayed
4c6ef22a 1559814328 Task Started
4c6ef22a 1559814364 Task Delayed
4c6ef22a 1559814402 Task Started
4c6ef22a 1559815751 Task Delayed
4c6ef22a 1559815886 Task Started
4c6ef22a 1559815911 Task Delayed
4c6ef22a 1559816106 Task Started
4c6ef22a 1559816257 Task Delayed
4c6ef22a 1559818658 Task Started
4c6ef22a 1559818773 Task Delayed
4c6ef22a 1559819253 Task Started
4c6ef22a 1559819274 Data Processing
4c6ef22a 1559819310 Underwriting Started
4c6ef22a 1559819312 Task Created
4c6ef22a 1559819530 Task Assigned
4c6ef22a 1559834790 Task Started
4c6ef22a 1559835226 Data Processing
4c6ef22a 1559835262 Loan Granted
4c6ef22a 1559835273 Loan Provided
2cfe1c8c 1560652724 Data Receiving
2cfe1c8c 1560652726 Data Processing
2cfe1c8c 1560652825 Data Input
2cfe1c8c 1560835243 Data Processing
2cfe1c8c 1560835301 Waiting for Refusal
2cfe1c8c 1560835365 Bank Refusal
ce8c2dae 1561020640 Data Input
ce8c2dae 1561021162 Data Processing
ce8c2dae 1561021220 Data Input
ce8c2dae 1561021846 Data Processing
ce8c2dae 1561022003 Offer Signing
ce8c2dae 1561022776 Contract Check
ce8c2dae 1561027729 Underwriting Started
ce8c2dae 1561027731 Task Created
ce8c2dae 1561027954 Task Assigned
ce8c2dae 1561027955 Task Started
ce8c2dae 1561028268 Task Delayed
ce8c2dae 1561034757 Task Started
ce8c2dae 1561034984 Data Processing
ce8c2dae 1561034993 Loan Granted
ce8c2dae 1561035008 Loan Provided
4da7a83e 1557842640 Data Input
4da7a83e 1557843412 Data Processing
4da7a83e 1557843571 Commitment Input
4da7a83e 1557845413 Data Processing
4da7a83e 1557845468 Waiting for Approval
4da7a83e 1557845831 Contract Signing
4da7a83e 1557846588 Contract Check
4da7a83e 1557846707 Loan Granted
4da7a83e 1557846731 Loan Provided
52b31eb5 1556291469 Data Input
52b31eb5 1556292526 Data Processing
52b31eb5 1556293768 Waiting for Approval
52b31eb5 1556293838 Contract Signing
52b31eb5 1556294389 Contract Check
52b31eb5 1556294463 Loan Granted
52b31eb5 1556294478 Loan Provided
2d1a0711 1561383698 Data Input
2d1a0711 1561385422 Data Processing
2d1a0711 1561385464 Data Input
2d1a0711 1561385822 Data Processing
2d1a0711 1561385936 Waiting for Approval
2d1a0711 1561386040 Contract Signing
2d1a0711 1561386683 Contract Check
2d1a0711 1561386729 Loan Granted
2d1a0711 1561386746 Loan Provided

Запрос:

... | apply getprocess

Результат:

node relations node_visits arc_visits fitness
Task Created Task Assigned 3 3 0.547
Contract Signing Contract Check 3 3 0.547
Commitment Input Data Processing 1 1 0.547
Contract Check Loan Granted 5 5 0.547
Task Started Task Delayed 15 12 0.547
Task Delayed Task Started 12 12 0.547
Task Started Data Processing 15 3 0.547
Underwriting Started Task Created 3 3 0.547
Loan Granted Loan Provided 5 5 0.547
Data Processing Waiting for Approval 14 3 0.547
start Data Input 0 0 0.547
Data Processing Data Input 14 4 0.547
Data Processing Commitment Input 14 1 0.547
Waiting for Approval Contract Signing 3 3 0.547
Task Assigned Task Started 3 3 0.547
Data Input Data Processing 9 9 0.547

GRAPHVIEW

Команда приводит исходные данные к виду направленного графа с дополнительной информацией для отображения. Для получения интерпретируемого визуального представления процесса после использования этой команды необходимо использовать компонент Граф в системе EVA.

Формат входных данных

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

  • caseId - идентификатор инстанса процесса (допускается как строковое название, так и числовой идентификатор)

  • timestamp - метка времени исполнения события

  • eventId - идентификатор события процесса (допускается как строковое название, так и числовой идентификатор)

Синтаксис команды

graphview [sort_column=\<string>]

Опциональные параметры:

  • sort_column - имя колонки, по которой будет проводиться дополнительная сортировка событий в случае совпадения их временных меток. Значение по умолчанию - sort_column.

Результат работы команды

В результате использования команды graphview возвращается таблица, описывающая ребра графа в каждой строке:

  • node - вершина начала ребра

  • relation - вершина, в которую приходит ребро

  • edge_description, relation_description - сервисные поля, необходимые визуальному компоненту для построения графа

Пример использования

Исходные данные:

В примере будет представлена часть стандартного журнала событий

caseId timestamp eventId
4c6ef22a 1559727424 Data Input
4c6ef22a 1559727976 Data Processing
4c6ef22a 1559728066 Data Input
4c6ef22a 1559728213 Data Processing
4c6ef22a 1559728408 Offer Signing
4c6ef22a 1559793293 Contract Check
4c6ef22a 1559812480 Underwriting Started

Запрос:

... | apply graphview sort_column=timestamp

Результат:

К началу