Функция match проверяет соответствие экземпляров процессов выражению на основе регулярных выражений. Функция работает только по именам событий. Является более производительной версией функции matchAttr.
match('выражение')
Паттерны выражений:
| Синтаксис |
Описание |
Пример |
| "" |
В двойных кавычках записывается имя шага |
"А" |
| > или -> |
Указание на следование |
"А" > "В" или "А" -> "В" |
| (|) |
Группа событий объединенная по OR |
("А" | "В") |
| ! |
Отрицание |
!"А" |
| * |
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 |