Pepelen
← Системный анализ: API, интеграции и данные

Урок

Sequence-диаграмма: кто кого вызывает и в каком порядке

Прочитать и составить sequence-диаграмму сценария «оформление и оплата заказа»: участники, синхронные и асинхронные сообщения, ответы и альтернативные ветки (alt).

1 / 7

Как читать диаграмму последовательности

Кто кого вызывает и когда

Диаграмма последовательности (sequence, UML 2.5.1) показывает один сценарий во времени. Участники стоят сверху в ряд, от каждого вниз идёт линия жизни — вертикальный пунктир. Время течёт сверху вниз, сообщения — горизонтальные стрелки между линиями. Узкий прямоугольник на линии жизни (активация) значит, что участник сейчас занят. Виды стрелок и фрагменты-рамки — в таблице ниже. Webhook — тоже синхронный HTTP-вызов, только начинает его провайдер: стрелка идёт от провайдера к нам, наш ответ 200 — пунктиром назад. Событие в брокер — асинхронное сообщение: отправили и не ждём, получатели читают брокер сами. Разберём сценарий со схемы ниже. Приложение вызывает POST /orders. Сервис заказов просит провайдера создать платёж и получает ссылку на оплату — только теперь ему есть что вернуть: 201 со ссылкой. Клиент платит по ссылке, и лишь после этого провайдер присылает webhook. Получив его, сервис публикует событие: OrderPaid, а в ветке отказа — OrderCancelled. Каждый шаг ждёт предыдущего, поэтому порядок один. Зачем это аналитику. Каждая стрелка между системами — метод API или событие; её сверяют с реестром интеграций (урок 1.3) и контрактами. Стрелка без строки в реестре — пропуск: его выясняют у команды и дописывают в реестр и контракт. Участники — системы, как на контекстной диаграмме: таблицы базы сюда не выносят. Отказ провайдера — не сбой, а ответ: его не повторяют в loop, а рисуют отдельной веткой alt.
Стрелки и фрагменты
ЭлементСмысл
Сплошная линия, закрашенная стрелкаСинхронный вызов: отправитель ждёт ответа
Сплошная линия, открытая стрелкаАсинхронное сообщение: отправитель не ждёт
Пунктирная линияОтвет на вызов
altВзаимоисключающие ветки, у каждой условие в скобках: [оплата прошла] / [оплата отклонена]
optШаги выполняются, только если условие истинно
loopПовторение шагов
refСсылка на другую диаграмму
Как составить диаграмму
  1. 1
    Участники

    Слева направо — в порядке вступления в сценарий

  2. 2
    Основной сценарий

    Вызовы и события сверху вниз, как идёт время

  3. 3
    Ответы

    Пунктиром к тому, кто вызывал

  4. 4
    Отказы

    Фрагмент alt с условием на каждой ветке

  5. 5
    Сверка

    Каждая стрелка — строка в реестре интеграций и контракт

Конспект урока
Кто кого вызывает и когда
Диаграмма последовательности (sequence, UML 2.5.1) показывает один сценарий во времени. Участники стоят сверху в ряд, от каждого вниз идёт линия жизни — вертикальный пунктир. Время течёт сверху вниз, сообщения — горизонтальные стрелки между линиями. Узкий прямоугольник на линии жизни (активация) значит, что участник сейчас занят. Виды стрелок и фрагменты-рамки — в таблице ниже. Webhook — тоже синхронный HTTP-вызов, только начинает его провайдер: стрелка идёт от провайдера к нам, наш ответ 200 — пунктиром назад. Событие в брокер — асинхронное сообщение: отправили и не ждём, получатели читают брокер сами. Разберём сценарий со схемы ниже. Приложение вызывает POST /orders. Сервис заказов просит провайдера создать платёж и получает ссылку на оплату — только теперь ему есть что вернуть: 201 со ссылкой. Клиент платит по ссылке, и лишь после этого провайдер присылает webhook. Получив его, сервис публикует событие: OrderPaid, а в ветке отказа — OrderCancelled. Каждый шаг ждёт предыдущего, поэтому порядок один. Зачем это аналитику. Каждая стрелка между системами — метод API или событие; её сверяют с реестром интеграций (урок 1.3) и контрактами. Стрелка без строки в реестре — пропуск: его выясняют у команды и дописывают в реестр и контракт. Участники — системы, как на контекстной диаграмме: таблицы базы сюда не выносят. Отказ провайдера — не сбой, а ответ: его не повторяют в loop, а рисуют отдельной веткой alt.