Моя рекомендация: используйте плагины для улучшения производительности. Когда Draw.io запущен через Confluence то при большом количестве схем будут задержки. Используйте плагин для IDE, например, IntelliJ, который позволяет создавать и редактировать диаграммы локально, и затем копируйте их в Confluence. Это снижает зависимость от качества интернет-соединения, что особенно актуально при подключении через VPN.
Костя, бэкенд-разработчик
@startuml
title Диаграмма настроек
skinparam linetype ortho
entity dispensers_settings_pack {
*id : bigint
--
group_id : bigint
total_production : numeric
}
entity dispensers_settings {
* dispensers_settings_pack_id : bigint
* dispenser_id : bigint
--
production : numeric
}
entity dispersers_settings_status_history {
*id : bigint
--
*dispensers_settings_pack_id : bigint
status : text
user_name : text
email : text
created_at : timestamp
}
dispensers_settings_pack }|-- dispensers_settings
dispensers_settings_pack }|-- dispersers_settings_status_history
@enduml
При выборе инструментов для визуализации архитектуры и процессов в бэкенд-разработке важно понимать, какие типы диаграмм действительно полезны, а от каких можно отказаться. Я разбил диаграммы на 3 класса: полезные, сомнительные и ненужные.
@startregex
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
@endregex
@startuml
title Проведение платежа
participant UI as ui
participant Scheduler as scheduler
participant Rabbit as rabbit
participant PaymentService as payServ
participant YandexClient as ya
participant Database as db
== Создание платежа ==
ui -> payServ ++
payServ -> db ++
return paymentId
return paymentId
'это дополнительный промежуток между блоками
|||
== Создание задач на обработку платежей ==
scheduler -> payServ ++
payServ -> db ++
return unprocessed paymentIds
loop batch по 100 платежей на задачу
payServ -> rabbit : создание задач
end
deactivate payServ
== Проведение платежей ==
rabbit -> payServ ++
payServ -> db ++
db -> payServ : необработанные платежи
loop для каждого paymentId в задаче
payServ -> ya
ya -> payServ : yandexPaymentId
payServ -> db : сохранение проведенного платежа
end
deactivate db
deactivate payServ
|||
@enduml
- Определение участников (actors). В PlantUML вместо использования стандартного участника participant можно указать специфичные типы, например, database, что позволит более точно отобразить роль каждого компонента.
- Использование плейсхолдеров. Для упрощения процесса можно использовать плейсхолдеры и переменные, что позволяет избежать повторного указания одних и тех же элементов.
- Добавление заметок (notes). При необходимости добавить пояснения или уточнения, можно использовать команды note right или note left, что позволяет разместить дополнительную информацию рядом с основными элементами диаграммы.
- Использование стандартных блоков: для создания диаграммы активности необходимо использовать стандартные блоки программирования, такие как условия, циклы и различные типы циклов.
- Добавление ветвлений и циклов: для отображения ветвлений и циклов можно комбинировать диаграммы активности с диаграммами последовательностей, что позволяет более гибко управлять логикой алгоритмов.
- Использование заметок: для пояснения отдельных блоков можно добавлять заметки с помощью команды note right или note left, что помогает лучше объяснить происходящие процессы.
- Активирование и деактивирование блоков: команды activate и deactivate позволяют управлять состоянием блоков, что особенно полезно для отображения начала и конца активности.