Sequence diagrams (диаграммы последовательностей)

Диаграмма последовательностей

  • Представляет собой диаграмму взаимодействия, которая показывает, как работают процессы и в каком порядке они выстроены.



  • Mermaid отображает диаграммы последовательностей следующим образом:
sequenceDiagram
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!
    Alice-)John: See you later!


end может нарушить построение диаграммы из-за того, как написан язык Mermaid. Если же слово end необходимо, то его нужно заключить в круглые скобки, кавычки или квадратные скобки. Например вот так: “end”, (end), [end], {end}.

Синтаксис

Участники

  • Участники могут быть определены неявно, как в предыдущем примере. Участники или действующие лица отображаются в порядке их появления в коде диаграммы. Для того, чтобы изменить порядок отображения участников, нужно выполнить действия, как показано на изображении ниже:



  • Если вы хотите заменить звенья участников в виде прямоугольников на фигурку участника, то используйте синтаксис, как показано ниже:



  • Участник может иметь удобный для вас идентификатор и описательную метку. Для этого необходимо ввести следующий синтаксис: participant A as Alice, где A-это назначение символа для сокращения обозначения имени Alice.



Связи между звеньями

  • Связи могут состоять из отображаемых сплошной или пунктирной линий. В настоящее время поддерживается 6 типов стрелок:
Тип Описание
-> Линия без стрелки
--> Пунктирная линия без стрелки
->> Обычная стрелка
-->> Стрелка, обозначенная пунктиром
-x Линия с крестом на конце
--x Пунктирная линия с крестом на конце
-) Линия с фигурной стрелкой
--) Пунктирная линия с фигурной стрелкой

Активация участников

  • Существует возможность активировать и деактивировать участника. Деактивация осуществляется при помощи добавления синтаксиса activate\deactivite и используется, как показано в примере ниже.



  • Также существует возможность обозначения активации\деактивации участника при помощи добавления ярлыка, путем вставки суффикса к стрелке сообщения + или -



  • Активации могут быть сложены для одного и того же участника:



Примечания

  • Можно добавлять примечания к диаграмме, при помощи обозначения Note [ right of | left of | over ] [Actor]: Текст в содержимом примечания. В синтаксисе диаграммы вводится имя участника, к которому будет прикрепляться текст, затем обозначается расположение текста при помощи данного синтаксиса: right of\left of\over. В последнюю очередь вносится текст, который будет отображаться на диаграмме. Обратите внимание на пример ниже:



  • Также можно создать примечание, захватывающее двух участников. Для этого в код диаграммы вводятся имена участников через запятую.



Циклы

  • Циклы (петли) можно выразить в виде диаграммы. Это выполняется с помощью следующего синтаксиса: вводится loop, далее - название петли, затем, передающееся сообщение от одного участника к другому, заканчивается образование петли словом end.
loop Loop text
... statements ...
end
  • Применяя представленный синтаксис, диаграмма будет выглядеть следующим образом:



Альтернативный вариант использования циклов

  • Альтернативные варианты можно выразить с помощью следующего синтаксиса:
alt Describing text
... statements ...
else
... statements ...
end
  • Если есть последовательность, которая является необязательной (без else), то синтаксис выглядит следующим образом:
opt Describing text
... statements ...
end
  • Обратите внимание на использование альтернативного варианта использования синтаксиса, представленного в примере ниже.



Параллельные действия

  • При помощи данного синтаксиса, можно показывать действия, которые происходят параллельно. Это выполняется при помощи следующего синтаксиса:
par [Action 1]
... statements ...
and [Action 2]
... statements ...
and [Action N]
... statements ...
end
  • Посмотрите, как это применяется в примере ниже:



  • Также можно вложить параллельные блоки:



Критическая область

  • Можно показать действия, которые должны выполняться автоматически при определенных условиях работы и какой ответ на эти условия будет выводиться. Для этого используется синтаксис, представленный ниже:
critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end
  • Пример использования условий, которые должны выполняться автоматически:



  • Также, возможно отсутствие каких-либо вариантов:



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

  • Можно указать остановку последовательности в потоке (часто применяется для моделирования исключений). Используется следующий синтаксис:
break [something happened]
... statements ...
end
  • Посмотрите на пример ниже:



Выделение фона

  • Существует возможность выделить связи, представив цветные фоновые прямоугольники. Это делается с помощью следующего обозначения.
  • Цвета определяются с использованием синтаксиса rgb и rgba.
rect rgb(0, 255, 0)
... content ...
end
rect rgba(0, 0, 255, .1)
... content ...
end
  • Посмотрите пример ниже:



Комментарии

  • Комментарии могут быть введены в диаграмму, которые будут проигнорированы синтаксическим анализатором. Комментарии должны быть прописаны в отдельной строке и начинаться с %% (двойные знаки процента). Любой текст после начала комментария к следующей новой строке будет рассматриваться как комментарий, включая любой синтаксис диаграммы.
sequenceDiagram
    Alice->>John: Hello John, how are you?
    %% this is a comment
    John-->>Alice: Great!

Коды сущностей для экранирования символов

  • Существует возможность экранирования символов, используя синтаксис, приведенный в примере ниже:



Точки с запятой можно использовать вместо разрывов строк для определения разметки. Необходимо использовать #59 для включения точки с запятой в текст сообщения.

Меню участников

  • Участникам можно добавить всплывающее меню, содержащее индивидуальные ссылки на внешние страницы. Например, если субъект представляет веб-службу, полезные ссылки могут включать ссылку на панель мониторинга работоспособности службы, репозиторий, содержащий код для службы, или страницу wiki, описывающую службу.
  • Это можно настроить, добавив одну или несколько строк ссылок с форматом, как показано ниже:
link <actor>: <link-label> @ <link-url>
sequenceDiagram
    participant Alice
    participant John
    link Alice: Dashboard @ https://dashboard.contoso.com/alice
    link Alice: Wiki @ https://wiki.contoso.com/alice
    link John: Dashboard @ https://dashboard.contoso.com/john
    link John: Wiki @ https://wiki.contoso.com/john
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!
    Alice-)John: See you later!