Функция 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 |