Pull to refresh

Comments 36

Любопытно, нужно попробовать.

Могу еще посоветовать Python-библиотеку diagrams для рисования диаграмм кодом. Для меня рисовать в draw.io на трекпаде ноутбука - то еще мучение, а кодом все получается гораздо прощи и - что важнее - можно версионировать в репозитории и потом править.

Спасибо за рекомендацию библиотеки! Для меня и мышью рисовать то еще удовольствие) В статье я тоже кратко упомянул, что к проекту можно подключить Git и поддерживать там версионность.

В draw.io тоже можно писать на PlantUml такие диаграммы

Привык пользоваться draw.io как "рисовалкой".
Может там тоже удобно текстом описывать. Не пробовал.
Возможность выбора - это прекрасно!)

Где там этот редактор спрятан?

Следующий этап http://mermaid.live вместо plantumUML (мермэйд например нативно в github mardown поддерживается) что сильно упрощает хранение документации в одном месте

Спасибо! Почитаю.
В статье я тоже кратко упомянул, что к проекту можно подключить Git 

GitLab поддерживает PlantUML.
Прям в md-файле можно написать

```plantuml Bob -> Alice : hello Alice -> Bob : hi ```


Кроме того ЕМНИП в PlantUML асортимент разных диаграм больше чем в Mermaid. Не знаю Mermaid, поэтому не могу судить как сейчас обстоит ситуация. Когда давно стоял выбор между разными системами, именно количесвто разных диаграмм перевесил чашу весов в сторону PlantUML.

В случае с хранением uml-диаграмм в таком виде в GitLab возникает ещё один плюс от использования PlantUML - версионирование, а точнее - возможность увидеть изменения между версиями.

Ровно эта же проблема прямо сейчас вызывает у нас с коллегой боль) Спасибо за решение, обязательно попробуем!

)) так эта статья и "родилась"!
После очередных правок всплыла в мозге информация, что что-то я слышал про описание диаграмм текстом и пошел гуглить.

Попробуйте.
К инструменту есть понятная документация, приведена в конце статьи.

Постоянно использую https://sequencediagram.org:

  1. Не требует доп софта. Работает в браузере

  2. Тектом описывается диаграмма

  3. Можно шарить диаграммы обычной ссылкой

Спасибо, что поделились своим опытом!
Посмотрю указанный ресурс.

PlantumUML редакторы есть в онлайн версиях.
В статье привожу пример 3х онлайн редакторов известных мне.

Класс! Возьму на заметку. Спасибо!

Отказался от диаграмм последовательностей в пользу BPMN.

BPMN для описания интеграций?
Какие преимущества для себя нашли в таком подходе?

Описываете в формате "Отправка сообщения" -> "Получение сообщения" + отдельные пулы для систем?
В такой схеме скрываете части БП, которые не участвуют в интеграции?

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

Главное преимущество BPMN: хорошая читаемость даже в сложных сценариях. Диаграммы последовательностей становятся нечитаемой после первого же блока с условиями.

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

Части БП обычно не скрываю, но могут отобразить их как подпроцесс.

А что можно было бы использовать для описания кодом диаграмм бизнес-процессов? Где несколько акторов (swim lanes), блоки условий и вот это вот всё?

В PlantumUML помимо диаграмм последовательностей можно и другие UML диаграммы строить. Например, activity diagram

Сколько минут уйдёт чтоб написать код "свою первую схему" ?

В обычном редакторе за 5-15 минут такую же схему можно нарисовать.

Обычный редактор (yEd) тоже сохраняет в текстовом виде например формат .graphml
Изменять можно прям текст, в том числе массово много файлов если надо.

У нас тож есть поклонник Mermaid (PlantumUML), но я так и не понял преимущества.

Дело привычки и вкусов.
Я на момент знакомства с PlantumUML уже работал в VS Code и поставил расширение именно для него.

Я программист и тоже иногда использую plantuml, но есть у него огромный минус (для меня) - нельзя сместить элемент так как мне нужно

Тут да. Можно только задать логику отображения данных.

Graphviz также есть в homebrew, поэтому, если лень возиться с портами можно поставить через `brew install graphviz`
Ну и без sudo

Да, это альтернативный вариант установки Graphviz.
Я пробовал запустить установку через "brew", но что-то у меня без дополнительных настроек не пошла установка, а разбираться в этом подходе к установке не стал. Помогла настройка портов.

puml очень просто генерить. Например, из всяких реестров при помощи vba. И это прекрасно)

Из текста диаграмма это хорошо. А обратная задача? Мне не хватало, и решил сделать: diagramhacker.ru

не понятно как этим инструментом пользоваться

Нужно загрузить в него диаграмму в формате drawio (кнопка "Открыть"), и он выведет: в левой панели саму диаграмму, в средней таблицу объектов (вершины графа диаграммы пока, ребра не выводятся), а в правой - описание в формате markdown.

Для справки сделал тестовую диаграмму, в которой описал идею сервиса в виде диаграммы - она загружается по умолчанию. Редактировать саму диаграмму в сервисе нельзя, только атрибуты объектов.

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

Был такой инструмент - bpwin, в нем можно было делать модели в IDEF0, и по моделям генерировать документацию. Сейчас этого не хватает, особенно если учесть, что нотаций разных много, и часто требуется описание диаграммы в документ вставлять. А поскольку формат drawio - это xml, то я подумал, что в нем можно это делать, тем более что он позволяет дополнять диаграмму пользовательскими атрибутами, которые доступны по Ctrl+M из самого drawio. Можно нарисовать диаграмму в drawio, загрузить в сервис, дополнить ее нужными атрибутами (по кнопке (+) в средней панели можно добавить любые атрибуты ко все объектам диаграммы сразу), настроить вывод, и можно сказать, что документ готов. В таблице на средней панели можно отредактировать значения атрибутов, или сохранить диаграмму и отредактировать их непосредственно в drawio (выделить объект, нажать Ctrl+M и заполнить значения для атрибутов объекта).

Пока не все виды фигур отображаются корректно (убился с рендерингом), но основные фигуры работают.

Спасибо огромное за статью! Открыли глаза на очень крутой инструмент!

Попробовал в деле, почитал мануал.

Заметил такой момент

activate и deactivate используются чтобы обозначить активацию участника.
Линия существования появляется в момент активации участника.
activate и deactivate применяются к предыдущему сообщению.

Т.е. в вашем примере должно быть вот так?

      Client -> UI: Запрос 1
activate Client

      UI -> Back: Запрос от клиента
activate UI

Добрый день! Да в мануале так написано.
Просто в примере из Мануала нет активации пользователя при взаимодействии с системой.

Я активирую пользователя ДО момента отправки запроса, т.е. пользователь для отправки запроса должен быть активирован.
Сервис получающий запрос, должен быть активирован ДО получения направленного ему запроса, соответственно так и формируется логика.

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

Ваш кусок кода в примере может выглядеть так:

activate Client 
' клиент создан, чтобы отправить запрос

Client -> UI: Запрос 1 
activate UI 
' UI создан, чтобы получить запрос

UI -> Back: Запрос от клиента 
activate Back 
' Back создан, чтобы получить запрос

У меня так и построен запрос, просто переносы не как в мануале, мне так удобней.

Если без комментариев по тексту (для наглядности), то запрос такой:

activate Client 

Client -> UI: Запрос 1 
activate UI 

UI -> Back: Запрос от клиента 
activate Back 

Sign up to leave a comment.