Функция match
проверяет соответствие экземпляров процессов выражению на основе регулярных выражений. Функция работает только по именам событий. Является более производительной версией функции matchAttr
.
match('выражение')
Паттерны выражений:
Синтаксис |
Описание |
Пример |
"" |
В двойных кавычках записывается имя шага |
"А" |
> или -> |
Указание на следование |
"А" > "В" или "А" -> "В" |
(|) |
Группа событий объединенная по OR |
("А" | "В") |
! |
Отрицание |
!"А" |
* |
0 или более вхождений |
"А"* |
+ |
1 или более вхождений |
"А"+ |
? |
0 или 1 вхождений |
"А"? |
.* |
Любой шаг |
"А" > .* |
Запрос:
select extId
from process
where match('"register request" -> .*')
Данные на входе:
Данные на выходе:
extId |
name |
1 |
register request |
1 |
check ticket |
1 |
decide |
2 |
check ticket |
2 |
decide |
2 |
reinitiate request |
3 |
register request |
3 |
pay compensation |
Запрос:
select extId
from process
where match('"register request" -> .* -> "decide"')
Данные на входе:
Данные на выходе:
extId |
name |
1 |
register request |
1 |
check ticket |
1 |
decide |
2 |
check ticket |
2 |
decide |
2 |
reinitiate request |
3 |
register request |
3 |
pay compensation |
Запрос:
select extId
from process
where match('"register request" -> .* -> ("decide" | "pay compensation")')
Данные на входе:
Данные на выходе:
extId |
name |
1 |
register request |
1 |
check ticket |
1 |
decide |
2 |
check ticket |
2 |
decide |
2 |
reinitiate request |
3 |
register request |
3 |
pay compensation |
Запрос:
select extId
from process
where not match(' .* -> "pay compensation"')
или также может подойти другое условие:
select extId
from process
where match(' .* -> !"pay compensation"')
Данные на входе:
Данные на выходе:
extId |
name |
1 |
register request |
1 |
check ticket |
1 |
decide |
2 |
check ticket |
2 |
decide |
2 |
reinitiate request |
3 |
register request |
3 |
pay compensation |