Функция rework
возвращает, номер появления события в рамках экземпляра процесса в зависимости от указанных параметров.
Работает на уровне событий: это значит, что при использовании функции в фильтре, будут исключены только отдельные события попадающие под правило.
У функции есть аналог - case_rework, который работает на уровне экземпляров процесса: это значит, что при использовании функции в фильтре, будут исключены все события экземпляра процесса, в котором есть совпадающее правило.
Значения NULL
учитываются при работе функции. Это надо помнить при использовании флага IN_A_ROW
.
rework(таблица.колонка,'имя_шага' [,'параметры_подсчета'])
- таблица.колонка — обязательный параметр функции, для указания по какой колонке идет подсчет.
- имя_шага — указывается имя шага, для которого будет выполнен отдельный подсчет повторов, для всех остальных шагов по экземпляру процесса будет возвращено 0. Если указать
null
, то расчет будет производиться одновременно для всех шагов экземпляра процесса
- параметры_подсчета — указывают функции, как вести подсчет номера появления. Значения можно комбинировать между собой. Возможные варианты:
- REVERSE — подсчет в обратную сторону.
- IN_A_ROW — подсчет появления подряд. Если не указано, то по умолчанию производится подсчет всех появления в рамках экземпляра.
- MAX — подсчет максимального значения для экземпляра процесса и вывод его для каждого события.
Запрос:
select
case_id,
activity,
rework(event_log.activity, null) as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
С |
1 |
В |
2 |
А |
2 |
В |
2 |
В |
2 |
В |
case_id |
activity |
rework |
1 |
А |
1 |
1 |
В |
1 |
1 |
В |
2 |
1 |
С |
1 |
1 |
В |
3 |
2 |
А |
1 |
2 |
В |
1 |
2 |
В |
2 |
2 |
В |
3 |
Запрос:
select
case_id,
activity,
rework(event_log.activity, 'B') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
С |
1 |
В |
2 |
А |
2 |
В |
2 |
В |
2 |
В |
case_id |
activity |
rework |
1 |
А |
0 |
1 |
В |
1 |
1 |
В |
2 |
1 |
С |
0 |
1 |
В |
3 |
2 |
А |
0 |
2 |
В |
1 |
2 |
В |
2 |
2 |
В |
3 |
Запрос:
select
case_id,
activity,
rework(event_log.activity, 'B', 'REVERSE') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
С |
1 |
В |
2 |
А |
2 |
В |
2 |
В |
2 |
В |
case_id |
activity |
rework |
1 |
А |
0 |
1 |
В |
3 |
1 |
В |
2 |
1 |
С |
0 |
1 |
В |
1 |
2 |
А |
0 |
2 |
В |
3 |
2 |
В |
2 |
2 |
В |
1 |
Запрос:
select
case_id,
activity,
rework(event_log.activity, null, 'REVERSE | IN_A_ROW') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
С |
1 |
В |
2 |
А |
2 |
В |
2 |
В |
2 |
В |
case_id |
activity |
rework |
1 |
А |
1 |
1 |
В |
2 |
1 |
В |
1 |
1 |
С |
1 |
1 |
В |
1 |
2 |
А |
1 |
2 |
В |
3 |
2 |
В |
2 |
2 |
В |
1 |
Запрос:
select
case_id,
activity,
rework(event_log.activity, 'B', 'IN_A_ROW | MAX') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
B |
1 |
A |
1 |
B |
1 |
В |
2 |
A |
2 |
В |
2 |
В |
2 |
В |
case_id |
activity |
rework |
1 |
А |
0 |
1 |
В |
3 |
1 |
В |
3 |
1 |
B |
3 |
1 |
A |
0 |
1 |
B |
3 |
1 |
B |
3 |
2 |
A |
0 |
2 |
В |
3 |
2 |
В |
3 |
2 |
В |
3 |
Запрос:
select
case_id,
activity,
rework(event_log.activity, null, 'MAX') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
B |
1 |
A |
1 |
B |
1 |
В |
2 |
A |
2 |
В |
2 |
В |
2 |
В |
case_id |
activity |
rework |
1 |
А |
2 |
1 |
В |
5 |
1 |
В |
5 |
1 |
B |
5 |
1 |
A |
2 |
1 |
B |
5 |
1 |
B |
5 |
2 |
A |
1 |
2 |
В |
3 |
2 |
В |
3 |
2 |
В |
3 |
Запрос:
select
case_id,
activity,
team,
rework(event_log.team, 'Прочее', 'REVERSE') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
team |
1 |
А |
Система |
1 |
В |
Администраторы |
1 |
C |
Прочее |
1 |
C |
Прочее |
1 |
C |
Прочее |
1 |
C |
Закупки |
1 |
C |
Система |
1 |
C |
Прочее |
1 |
D |
Финансы/согласующие |
1 |
E |
Финансы |
case_id |
activity |
team |
rework |
1 |
А |
Система |
0 |
1 |
В |
Администраторы |
0 |
1 |
C |
Прочее |
4 |
1 |
C |
Прочее |
3 |
1 |
C |
Прочее |
2 |
1 |
C |
Закупки |
0 |
1 |
C |
Система |
0 |
1 |
C |
Прочее |
1 |
1 |
D |
Финансы/согласующие |
0 |
1 |
E |
Финансы |
0 |
Запрос:
select
case_id,
id,
activity,
team,
rework(event_log.team, 'Прочее', 'REVERSE') as rework
from event_log
where rework(event_log.team, 'Прочее', 'REVERSE')=4;
Данные на входе:
Данные на выходе:
case_id |
ID |
activity |
team |
1 |
1 |
А |
Система |
1 |
2 |
В |
Администраторы |
1 |
3 |
C |
Прочее |
1 |
4 |
C |
Прочее |
1 |
5 |
C |
Прочее |
1 |
6 |
C |
Закупки |
1 |
7 |
C |
Система |
1 |
8 |
C |
Прочее |
1 |
9 |
D |
Финансы/согласующие |
1 |
10 |
E |
Финансы |
case_id |
ID |
activity |
team |
rework |
1 |
3 |
C |
Прочее |
4 |
Запрос:
select
case_id,
activity,
team,
rework(event_log.team, null, 'IN_A_ROW') as rework
from event_log;
Данные на входе:
Данные на выходе:
case_id |
activity |
team |
1 |
А |
Система |
1 |
В |
|
1 |
C |
Система |
1 |
C |
|
1 |
C |
|
1 |
C |
Система |
1 |
C |
Закупки |
1 |
C |
Закупки |
1 |
D |
Финансы/согласующие |
1 |
E |
Финансы |
case_id |
activity |
team |
rework |
1 |
А |
Система |
1 |
1 |
В |
|
1 |
1 |
С |
Система |
1 |
1 |
С |
|
1 |
1 |
С |
|
2 |
1 |
С |
Система |
1 |
1 |
С |
Закупки |
1 |
1 |
C |
Закупки |
2 |
1 |
D |
Финансы/согласующие |
1 |
1 |
E |
Финансы |
1 |