7. Связи

Связь отвечает на вопрос «что дальше». У большинства компонентов исходов несколько, и глава — про то, как их задавать и как читать нарисованное.

Протянуть связь

Нажмите Ctrl, зажмите левую кнопку на компоненте-источнике, доведите курсор до цели, отпустите. Пока курсор в пути, за ним тянется пунктирная стрелка, а компонент под курсором обводится рамкой — видно, куда попадёте.

Протягивание связи по CTRL
Figure 1. Связь протягивается

Если связей надо провести много подряд, вместо клавиши удобнее инструмент Протягивание связи в палитре: он делает то же самое, но Ctrl держать не нужно.

Отпустить стрелку в пустоте — значит очистить свойство перехода. Это единственный способ убрать связь: отдельной команды «удалить связь» нет, потому что связь не объект, а значение свойства.

Какую ветку тянет Ctrl

У компонента переходов бывает несколько, а протяжка одна. Ctrl тянет основную ветку — ту, по которой вызов идёт при обычном ходе событий.

Остальные ветки задаются двумя способами:

Цифрой

зажмите цифру от 1 до 9 и протяните — уйдёт та ветка, за которой эта цифра закреплена. У «Сравнения», например, 1 — «Правда», 2 — «Ложь». Если у типа нет ветки с такой цифрой, связь не протянется вовсе: выдумывать ветку за вас редактор не станет.

Из панели

у каждой ветки есть своя строка в свойствах, и цель выбирается в ней списком.

Свойства с переходами
Figure 2. Переходы «Воспроизведения» в панели

Строки перехода узнаются по названию: Переход — основная ветка, Переход, ошибка — что делать, если шаг не удался. У «Меню» и подобных типов ветки живут не строками, а таблицей — это разбирается в главе про меню и переводы.

Как читать нарисованное

Компонент с несколькими исходящими ветками
Figure 3. Ветвление на карте

Рядом с каждой стрелкой подписано, при каком условии она сработает: Правда, Ложь, Ошибка, Время, цифра нажатой кнопки. Подпись — это и есть смысл ветки.

Цвет помогает охватить карту взглядом.

Зелёная
Figure 4. Цвета связей
Цвет Что означает

Серо-синий

Обычный ход событий

Зелёный

Условие выполнилось: «Правда», ветка меню, успешный ответ

Красноватый

Что-то пошло не так: «Ложь», ошибка, истекло время

Красных линий на карте много, и это нормально: у любого шага должен быть предусмотрен неудачный исход.

Пустая ветка: когда это опасно

Незаполненная ветка означает разное у разных типов, и разницу стоит знать.

У части компонентов сервер подставляет основную ветку сам

если у Воспроизведения или Уведомления не заполнен Переход, ошибка, вызов при ошибке уйдёт по обычному Переходу — работа продолжится.

У ветвящих типов каждая стрелка важна сама по себе

у Сравнения и Меню подставлять нечего: не заполнена ветка, по которой пошло управление, — сценарий на этом обрывается.

Отсюда правило: у Сравнения должны вести куда-то обе ветки, у Меню — все пункты таблицы и Переход, прочее. Пустая ветка здесь — это оборванный вызов, а не «пойдёт как обычно».

Цвет — подсказка, а не правило. Что именно считается основным ходом, задано в метаданных для каждого типа, и у ветвящих типов основными считаются обе ветки: и «Правда», и «Ложь» одинаково законны. Смысл всегда написан подписью — на неё и стоит смотреть.

Подписи, которые не поместились

Если между компонентами мало места, подпись у стрелки не рисуется: она налезала бы на соседние и мешала бы читать саму карту. Ветка при этом никуда не делась — её видно в свойствах и в трассировке.

Развести компоненты пошире — не косметика, а способ увидеть сценарий.

Ходить по связям

Мышью связи не только рисуют, но и читают: Ctrl+ переводит выделение на цель исходящей связи, Ctrl+ — на источник входящей, Ctrl+ и Ctrl+ перебирают соседние ветки. Подробнее — в главе про навигацию.

Куда вызов придёт из этой точки целиком, а не на один шаг, показывает трассировка — клавиша T или пункт меню Трассировать ветку.

◀ 6. Создание и удаление

8. Регионы ▶