Процессы редко живут поодиночке: большой процесс разбивают на части, общий фрагмент выносят в отдельную модель, а новую версию процесса рисуют рядом со старой. В статье рассказано, как связать модели в Stormbpmn: AS-IS и TO-BE, вызываемый процесс (Call Activity), свёрнутый пул и события сообщений.

## Какой способ выбрать

- **AS-IS и TO-BE** — две модели одного процесса: как есть сейчас и как будет. Связь позволяет переключаться между ними одним кликом, например на презентации.
- **Вызываемый процесс (Call Activity)** — фрагмент, который повторяется в разных процессах. Его рисуют отдельной моделью и вызывают оттуда, где он нужен: правки вносят в одном месте.
- **Свёрнутый пул** — участник, процесс которого описан в другой модели, например клиент или подрядчик.
- **События сообщений** — процессы идут параллельно и обмениваются сообщениями: «Заказ передан на склад» в одной модели → «Заказ получен складом» в другой.

Если детали нужны только внутри текущей модели, удобнее свёрнутый подпроцесс — подробнее в статье [Подпроцесс, декомпозиция](https://helpdesk.stormbpmn.com/hc/docs/articles/1749578790-).

## Связь AS-IS и TO-BE

Тип модели задаётся в окне сохранения. Связать можно только BPMN-модели, и только тому, кто может редактировать модель.

1. Открыть модель в редакторе и нажать значок дискеты на верхней панели инструментов — подсказка «Сохранить как версию».
2. В окне **«Сохранение модели»** в поле **«Тип модели»** выбрать **AS-IS** или **TO-BE**.
3. В появившемся поле **«Связанный процесс»** выбрать вторую модель. Список можно искать по названию.
4. Нажать **«Сохранить как версию»**.

![Окно «Сохранение модели»: тип модели и связанный процесс](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZ3d3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--49d6bbc8910d7735e1cb1c6e710c8905063508a6/r30_01_save_dialog_v2.png)

Второй модели тип проставится сам: если текущая отмечена как AS-IS, связанная станет TO-BE, и наоборот. Открывать и сохранять её отдельно не нужно.

После сохранения в верхней панели рядом с названием модели появится метка AS-IS или TO-BE. Клик по метке открывает связанную модель.

![Метка AS-IS в верхней панели редактора](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZzB3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--93437aeeb5118639f3e51d5df34af1fb499b6896/r30_02_header_badge_v2.png)

TO-BE удобно делать из копии AS-IS: в меню модели выбрать **«Дублировать»**, доработать копию и связать её с исходной моделью.

### Как разорвать связь

Открыть окно **«Сохранение модели»**, снять выбор в поле **«Тип модели»** (повторно нажать на выбранный тип) и сохранить. Связь пропадёт у обеих моделей, тип у второй модели тоже снимется.

Если тип выбран, а связанная модель — нет, сохранить не получится: появится подсказка «Выберите связанную диаграмму или снимите тип модели».

## Связь через вызываемый процесс (Call Activity)

Сначала на схеме нужен сам элемент: заменить задачу на вызываемый процесс (Call Activity) через меню замены элемента. Затем связать его с моделью одним из двух способов.

### Способ 1. В окне «Описание элемента»

1. Выделить Call Activity и нажать значок карандаша **«Дополнительные настройки»** рядом с элементом. Окно также открывается правым кликом по элементу.
2. В поле **«Ссылка на процесс»** выбрать модель из списка. Работает поиск по названию.
3. Нажать **«Сохранить»**.

Если модели ещё нет, нажать **«+»** рядом с полем (подсказка «Связать с новой диаграммой»), ввести название и нажать **«Создать и привязать»**. Новая пустая модель создастся и сразу свяжется с элементом.

![Поле «Ссылка на процесс» в окне «Описание элемента»](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZzR3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9a1c1df9aa81397cd81ae8dbac59f6446affad3a/r30_03_ca_settings_v2.png)

После связывания элемент на схеме получает название выбранной модели.

### Способ 2. Через значок связи на схеме

1. Выделить Call Activity. Справа над элементом появится полупрозрачный значок со стрелкой — подсказка «Создать событие».
2. Нажать на значок — откроется окошко **«Создание связи»** с тем же полем **«Ссылка на процесс»**.
3. Выбрать модель или создать новую кнопкой **«+»**.

В этом окошке связь сохраняется сразу, отдельно нажимать «Сохранить» не нужно.

Когда связь создана, рядом с полем появляется кнопка со стрелкой — она открывает связанную модель в новой вкладке. Чтобы отвязать модель, очистить поле **«Ссылка на процесс»**.

**Видео с примером:** <https://youtu.be/s-k0pTISXzo>

Если видеоролик недоступен, открыть его в ВК-видео: <https://vkvideo.ru/video-227313390_456239213>

## Связь для свёрнутого пула

Свёрнутый (пустой) пул связывается с моделью так же, как Call Activity: через окно «Описание элемента» или значок связи на схеме, поле **«Ссылка на процесс»**. Так, например, пул «Клиент» связывают со схемой процесса клиента.

Выделить пул — справа над ним появится значок связи.

![Значок связи у выделенного свёрнутого пула](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZzh3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--a7cfe35ccc6e7a209b674a90d8becb69112a2ffc/r30_04_pool_ghost_v2.png)

Нажать на значок и в окошке **«Создание связи»** выбрать модель или создать новую.

![Окошко «Создание связи» для свёрнутого пула](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaEF3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--643db6b6bf3c0c90532a2fe16a4ea792ad189eec/r30_05_pool_create_link_v2.png)

**Видео с примером:** <https://youtu.be/T8L6Lh8TyOM>

Если видеоролик недоступен, открыть его в ВК-видео: <https://vkvideo.ru/video-227313390_456239212>

Видео записаны в прежнем интерфейсе: кнопки выглядят иначе, но порядок действий тот же.

## Связь через события сообщений

Связать можно отправку сообщения в одной модели с его получением в другой. Подходят:

- **отправка** — промежуточное или конечное событие-сообщение, задача отправки (Send Task);
- **получение** — промежуточное или стартовое событие-сообщение, задача получения (Receive Task).

Отправку можно показать событием, а получение — задачей, и наоборот.

Сначала нужно опубликовать первое событие. Начать можно с любой стороны — с отправки или с получения. Например, с отправки:

1. Выделить событие отправки и открыть окно **«Описание элемента»** (значок карандаша или правый клик) либо нажать значок связи на схеме.
2. В поле **«Название события»** ввести название, например «Заказ передан на склад».
3. Нажать **«+»** рядом с полем — подсказка «Создать событие отправки». В окне «Описание элемента» затем нажать **«Сохранить»**.

![Название события и кнопка «Создать событие отправки»](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaEV3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b96caaa24c94fdc181803c83f75b8999ff703198/r30_06_throw_publish_v2.png)

Событие появится в списке, из которого его можно выбрать в других моделях команды. Убрать событие из списка — кнопка с крестиком на том же месте.

Затем связать с ним парное событие:

1. В другой модели выделить событие получения и открыть окно «Описание элемента» или значок связи на схеме.
2. В поле **«Ссылка на событие отправки»** выбрать нужное событие. В списке указаны модель и название события, работает поиск.
3. Сохранить.

![Выбор события отправки в модели склада](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaEl3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3416717507feeea44ee695dd501cdf6aa2498f76/r30_07_catch_link_v2.png)

Если начинали с получения, то при связывании у события отправки будет поле **«Ссылка на событие получения»**.

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

## Как увидеть связи на схеме

Включить в меню оверлеев **«Связи (исходящие)»** и **«Связи (входящие)»** — подробнее в статье [Меню оверлеев](https://helpdesk.stormbpmn.com/hc/docs/articles/1748343794-). На связанных элементах появятся значки-стрелки:

- у Call Activity, свёрнутого пула и отправки сообщения — исходящая стрелка справа над элементом;
- у получения сообщения — входящая стрелка слева над элементом.

![Стрелки связей у свёрнутого пула, Call Activity и события отправки](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaE13IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--a5698f48da16a1f262f89564d71f7cf71402f30e/r30_08_link_overlays_v2.png)

Клик по стрелке открывает связанную модель. Если пара находится в этой же модели, схема прокрутится к нужному элементу.

В связанной модели слева сверху появляется блок **«Входящие связи»** — какие модели и элементы ссылаются на неё. Каждая строка открывает нужную модель. Если перешли по стрелке, рядом виден путь навигации: по нему можно вернуться к исходной модели.

![Блок «Входящие связи» и путь навигации](https://helpdesk.stormbpmn.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaFF3IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--562016714a1dbf13c5fa57a48054825790b823a9/r30_09_incoming_links_v2.png)

## Частые вопросы

**В: Не вижу поля «Тип модели» в окне сохранения. Почему?**

О: Поле есть только у BPMN-моделей и только у тех, кто может редактировать модель. Если модель открыта на просмотр, нужно попросить у автора доступ на редактирование.

**В: Можно ли связать с одной моделью AS-IS несколько моделей TO-BE?**

О: Нет, связь всегда парная: у модели одна связанная модель. Если выбрать для модели новую пару, связь со старой разорвётся. Связать с процессом в реестре несколько моделей (AS-IS, TO-BE, модель для руководителей и т. д.) можно в карточке процесса реестра.

**В: Сравнивает ли Stormbpmn модели AS-IS и TO-BE автоматически?**

О: Нет. Сравнение работает между версиями одной модели: «Версии процесса» → «Сравнить версии». Поэтому TO-BE удобно делать копией AS-IS — так видно, что изменилось относительно исходной схемы.

**В: Поле «Ссылка на процесс» неактивно. Что делать?**

О: Связи создают авторизованные пользователи с правом редактировать модель. Если модель открыта только на просмотр, поле будет недоступно — нужно попросить у автора доступ на редактирование.

**В: Чем вызываемый процесс отличается от свёрнутого подпроцесса?**

О: Свёрнутый подпроцесс — часть текущей модели, его нельзя использовать в другой схеме. Вызываемый процесс — отдельная модель: её можно вызывать из любого числа процессов, и правка в ней видна везде.

## Частые формулировки

связь между диаграммами, связать модели, связать процессы, AS-IS TO-BE, как связать AS-IS и TO-BE, тип модели, связанный процесс, разорвать связь AS-IS, call activity, вызываемый процесс, ссылка на процесс, переиспользуемый подпроцесс, связь свёрнутого пула, пустой пул, связь сообщений между процессами, событие отправки, событие получения, message event, send task, receive task, создание связи, входящие связи
