Ссылки и всплывающие подсказки в PlantUML

Всем привет!
Продолжаем тему PlantUML. Сегодня за 5 минут и без воды поговорим о Сылках и всплывающих подсказках в PLantUML
1️⃣ Для добавления ссылки и текста ссылки, используйте конструкцию: [[<URL-ссылки> <Текст ссылки>]]
Пример: [[http://plantuml.com Ссылка (без всплывающей подсказки) на plantUML]]
2️⃣Для добавления: всплывающей подсказки к тексту (с ссылкой), используйте конструкцию: [[<URL-ссылки>{<всплывающая подсказка>} <Текст ссылки>]]
Пример: [[http://plantuml.com Ссылка (без всплывающей подсказки) на plantUML]]
3️⃣Для добавления: всплывающей подсказки к тексту (без ссылки), используйте конструкцию: [[{<всплывающая подсказка>} <текст к которому относится всплывающая подсказка>]]
Пример: [[{всплывающая подсказка} Всплывающая подсказка (без ссылки)]]
🔥 Внимание!!! Чтобы всплывающие подсказки работали у заказчика, выгружайте диаграммы в формат SVG
Пример кода ниже (а ссылка тут), а файл с примером в формате SVG тут:
@startuml
Title **Ссылки и всплывающие подсказки в PlantUML**
' Для добавления: ссылки и текста ссылки, используйте конструкцию: `[[<URL-ссылки> <Текст ссылки>]]`
Alice -> Bob: [[http://plantuml.com Ссылка (без всплывающей подсказки) на plantUML]]
'Для добавления: всплывающей подсказки к тексту (с ссылкой), используйте конструкцию: `[[<URL-ссылки>{<всплывающая подсказка>} <Текст ссылки>]]`
Alice -> Bob: [[http://plantuml.com{всплывающая подсказка (с ссылкой)} Ссылка (со всплывающей подсказкой) на plantUML]]
' Для добавления: всплывающей подсказки к тексту (без ссылки), используйте конструкцию: `[[{<всплывающая подсказка>} <текст к которому относится всплывающая подсказка>]]``
Alice -> Bob: [[{всплывающая подсказка} Всплывающая подсказка (без ссылки)]]
@endumlЧтобы работали всплывающие подсказки на русском в плагине предпросмотра (в VS Code) добавьте в настройки (settings.json)
{
"plantuml.diagramsRoot": "docs/diagrams",
"plantuml.exportOutDir": "docs/diagrams/out",
"plantuml.exportFormat": "png",
"plantuml.exportSubFolder": false,
"plantuml.render": "PlantUMLServer",
"plantuml.server": "http://www.plantuml.com/plantuml",
"plantuml.commandArgs": [
"-charset",
"UTF-8"
]
}
Многоуровневая группировка участников на sequence-диаграмме (в plantUML)

Последнее время часто замечаю, что многие системные аналитики не выделяют на sequence диаграмме (в plantUML) границы Систем и сервисов, а также не выделяют внешние сервисы. В результате, открывая чужие Sequence, приходится тратить много времени чтобы понять, что-же к чему относится.
Поэтому сейчас расскажу как это сделать быстро и без воды
Чтобы создать вложенные группы — группы внутри групп, используйте Архитектуру teoz, путем ее подключения в коде: c помощью строки !pragma teoz true, добавляемой сразу после @startuml после чего box и end box можно вкладывать друг в друга генерируя несколько уровней вложенности:
Код диаграммы:
@startuml
!pragma teoz true
box "Группы" #LightBlue
box "Первая подгруппа"
participant Bob
end box
box "Вторая подгруппа"
participant Alice
participant John
end box
end box
box "Внешняя группа" #lightgreen
participant Lector
box "Слушатели первой подгруппы"
participant Marina
end box
end box
Bob -> Alice : hello
Alice -> John : hello
John -> Marina: Hello
Lector -> Marina: Hello
@endumlЕсли Вам было полезно и интересно, поддержите кармой или комментарием
----
Также я веду TG-канал: @sa_chulan
PlantUML | Шаблон для описания таблиц БД
Делюсь с Вами разработанным мною шаблоном, для описания таблицы БД в PlantUML, c элементами автоматизации, описание которых указанно в комментариях.

Всем привет!
Делюсь с Вами разработанным мною шаблоном, для описания таблицы БД в PlantUML, c элементами автоматизации, описание которых указанно в комментариях.
Протестировать можете тут, а сам код шаблона указан ниже:
' Шаблон описания таблицы БД (в PlantUML)
@startuml
skinparam {
' Параметры для управления нижним колонтитулом
FooterFontColor #blue
FooterFontSize 12
' Параметры для управления легендой
LegendBackgroundColor #lightblue
LegendBorderThickness 0
}
' Переменные для ускорения описания таблицы
' - PRIMARY KEY можно указывать как: "$PK"
!$PK=" <size:11><#DarkKhaki:key:></size> (PK) "
' - FOREIGN KEY можно указывать как: "$FK"
!$FK=" <size:11><#DeepPink:key:></size> (FK) "
' - NOT NULL (N-N) можно указывать как: "$NN"
!$NN=" <#LightGreen> **N-N** "
' - NULL можно указывать как: "$N"
!$N = " <#LightCoral> **NULL** "
' Переменные для ускорения добавления информации о таблице
' - Наименование таблицы БД (латинское)
!$table_name="Наимнование_таблицы_БД"
' - Краткое описание таблицы (на русском)
!$description="Краткое описание таблицы (на русском)"
' - Ссылка на описание таблицы (на русском)
!$doc_url="Ссылка"
' Контакты, отображаемые в нижнем колонтитуле
!$autor ="Зимин Антон"
!$email ="antzim_in@ya.ru"
!$telegram="antzim_in"
' Заголовок документа, формируется автоматически из заполненных выше параметров (при необходимости можно удалить)
title $table_name | $description
' Легенда (может быть заполнена любыми необходимыми данными)
' - "right" говорит о том, что легенда будет расположена справа
legend right
**Легенда:**
| Версия документа: | 1.0.0 |
end legend
' Описание таблицы
' - заголовок таблицы, с кликабельной ссылкой (если выгружать в SVG) формируется автоматически
class "[[$doc_url $table_name]] ($description)" as $table_name << (T,#FF5722) >>{
|= PK,FK |= Поле |= Тип |= Обязательность |= Значение\n по умолчанию |= Описание |
| $PK | id | serial | $NN | | Идентификатор записи в таблице |
| $FK | subscriber_id | integer | $NN | | Идентификатор записи в таблице subscriber |
| | electronic_address | varchar(255) | $N | | Электронный адрес \n клиента |
| | created_at | timestampz | $NN | now() | Дата и время создания записи в БД |
| | updated_at | timestampz | $NN | now() | Дата и время обновления записи в БД |
}
' Нижний колонтитул (формируется автоматически из введенных параметров)
footer © $autor | tg: [[https://t.me/$telegram @$telegram]] | email: $email
@enduml
Буду рад Вашим комментариям, отзывам, а если еще и поднимите карму то буду крайне благодарен.
Всем спасибо.
----
Пообщаться со мной можно в telegram: @antzim_in
P.S. Также, если Вам интересно, я веду telegram канал @sa_chulan и буду очень рад Вашей подписке.

💠 PlantUML: полезные материалы
Подборка для тех, кто давно хотел начать применять PlantUML, но никак не доходили руки. К счастью, это не займёт много времени.
PlantUML (https://plantuml.com/ru/) — это крайне полезный инструмент для аналитика, который превращает псевдокод в диаграммы. Это значительно быстрее и удобнее, чем вечно тыкаться со стрелочками и ручным выравниванием в draw.io или Visio.
Синтаксис очень простой, пугаться кода не нужно. По примерам становится всё понятно.
✏️ Редакторы и расширения
Для начала выберете место, где вам будет удобнее писать диаграмму: это может быть
💻 Онлайн:
1️⃣ https://plantuml-editor.kkeisuke.com/
2️⃣ https://www.planttext.com/
3️⃣ https://plantuml.com/ru/running
👣 Расширения, для:
1️⃣ Notepad++ (https://github.com/Fruchtzwerg94/PlantUmlViewer)
2️⃣IDEA (https://plugins.jetbrains.com/plugin/7017-plantuml-integration/),
3️⃣ PyCharm (https://plugins.jetbrains.com/plugin/7017-plantuml-integration),
4️⃣ VScode (https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml)
😎 Все расширения можно посмотреть по ссылке: https://plantuml.com/ru/running
📝 Документация
1️⃣ Официальная документация (https://plantuml.com/ru/) (почти всё на русском)
2️⃣ Гайд на русском в pdf (https://plantuml.com/ru/guide)
🖥 Полезные репозитории:
1️⃣ Unofficial PlantUML Standard Library Repositories (https://github.com/plantuml-stdlib)
🎓 Бесплатный курс, по PlantUML
1️⃣ https://stepik.org/course/Plantuml-Основы-212663/
📹 Видео
1️⃣PlantUML с нуля до гуру: учимся «кодить» sequence-диаграммы (https://www.youtube.com/watch?v=ScbZL5RX84E) — доклад Никиты Харичкина с Flow 2022 (скачать презентацию (https://t.me/Analyst_Boost/37))
2️⃣PlantUML на всю катушку: Автоматизация и лайфхаки для диаграмм последовательности (https://www.youtube.com/watch?v=RYEJEIF7htE) — доклад всё того же Никиты, но с Analyst Days #14 (скачать презентацию (https://t.me/plant_uml/108))
3️⃣ Бери и делай PlantUML, VS Code и Git 2 (https://www.youtube.com/watch?v=mdzRsewZtnY)
☺️ Канал про PlantUML
1️⃣https://t.me/plant_uml
📰 Статьи
1️⃣ Диаграммы без боли и страданий: PlantUML (https://habr.com/ru/companies/alfa/articles/740518/) — хороший гайд с примерами
2️⃣Пишу диаграммы последовательностей текстом (кодом). Вы тоже можете (https://habr.com/ru/companies/rostelecom/articles/701970/) — тут только про sequence
3️⃣PlantUML — все, что нужно бизнес-аналитику для создания диаграмм в программной документации (https://habr.com/ru/articles/416077/)
4️⃣Как рисовать Sequence без боли и страданий в PlantUML (https://habr.com/ru/companies/X5Tech/articles/821687/)
----
Подписывайтесь на @sa_chulan
Полезные расширения для vsCode | просмотр JSON в виде дерева | Json Tree editor
Всем привет, этим постом начинаю серию постов с полезными плагинами для vsCode

🚀 Наименование: Json Tree editor
✍️Описание: расширение VSCode для визуализации данных JSON в виде дерева, с возможность выбора, перемещения и сортировки.
🔗 Ссылка на плагин: https://marketplace.visualstudio.com/items?itemName=GregChamblin.vscode-json-editor
Extension id: GregChamblin.vscode-json-editor
➕Плюсы:
Можно работать с большими файлами json
Есть отдельная кнопка на панели задач
При перетаскивании в дереве элементов, сам json также изменяется онлайн
➖Минусы:
Не выявлено
🚀Делитесь своими плагинами в комментариях.
#vsCode #JSON
Подписывайтесь на меня в телеграмм, там ещё много интересных плагинов @sa_chulan
PostgreSQL | SQL-скрипт | Для получения подробного описания таблиц (в виде таблицы) | для системных аналитиков

Многие системные аналитики, приходя на проект, сталкиваются с проблемой что PostgreSQL БД уже создана ранее, а описания таблиц нет, да и доступ к ней дадут не скоро.
В итоге когда дают доступ, начинается анализ каждой из таблиц, чтобы перенести в документацию ее описание.
Я задался вопросом: "Можно ли сразу выгрузить все описания таблиц разом?" Оказывается можно, держите готовый скрипт для postgreSQL:
-- Скрипт получения информации о таблицах БД
SELECT
-- Наименование БД
current_database() as "Наименование БД",
-- Схема данных
current_schema as "Схема данных",
-- Наименование таблицы
relname as "Наименование таблицы",
-- Описание таблицы
obj_description(oid) as "Описание таблицы",
-- Наименование поля/столбца
column_name as "Наименование поля/столбца",
-- Тип данных
CASE
when character_maximum_length is not null
and udt_name = 'varchar' then concat(
udt_name :: varchar(255),
'(',
character_maximum_length :: varchar(255),
')'
)
else udt_name
end as "Тип данных",
-- Описание поля/столбца
col_description(oid, ordinal_position) as "Описание поля/столбца"
FROM
pg_class as a
right join information_schema.columns as b ON b.table_name = a.relname
-- WHERE
-- relname='<наименование таблицы>'На выходе получим классное описание, которое сможем включить в документацию (например):
| Наименование БД | Схема данных | Наименование таблицы | Описание таблицы | Наименование поля/столбца | Тип данных | Описание поля/столбца |
| --------------- | ------------ | -------------------- | ------------------------------------------- | ------------------------- | ------------- | -------------------------------------- |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | table_id | uuid | Идентификатор записи в таблице shops |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | partner_short_name | varchar(1000) | Краткое наименование компании партнера |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | offers_sales_notes | varchar(50) | Условия продажи товара |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | url | varchar(2048) | URL главной страницы |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | company | varchar(1000) | Полное наименование компании |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | name | varchar(1000) | Короткое наименование компании |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | created_at | timestamp | Дата создания записи (в БД) |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | is_actual | bool | Признак актуальности записи (в БД) |----
P.s.Плюсы приветствуются, а если уж минусите, то хоть коммент напишите, что не так!
----
Связь со мной: https://t.me/antzim_in
Почитать мой телеграмм: https://t.me/sa_chulan
Топ 5 инструментов системного аналитика, для ускорения решения практических задач (на собеседованиях по системному анализу)

"Кто выиграл время, тот выиграл все.“
© Мольер
Каждый системный аналитик, при прохождении практической части собеседования, начинает судорожно вспоминать инструменты, в которых можно это быстро сделать, т.к. ему на это отводится всего-лишь 5-10 минут, чтобы:
1️⃣ Нарисовать BPMN, в этом вам поможет:
🔗 https://demo.bpmn.io/s/start (бесплатно, не нужно регистрироваться)
🔗 https://stormbpmn.com/app/home (бесплатно, но нужно зарегистрироваться заранее)
2️⃣ Нарисовать sequence, в этом вам поможет:
🔗 https://sequencediagram.org/ (бесплатный, но нужно ознакомиться заранее)
🔗 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa700003 (бесплатный, но нужно ознакомиться заранее и лучше подготовить шаблон)
3️⃣Нарисовать ERD, в этом вам поможет:
🔗 https://erd-editor.io/ (бесплатно и не нужно регистрироваться (гайд тут: https://docs.erd-editor.io/docs/category/guides))
4️⃣Спроектировать структуру json, в этом вам поможет:
🔗 https://jsoncrack.com/editor (условно бесплатно и не нужно регистрироваться)
5️⃣Просто "порисовать", в этом вам поможет:
🔗 https://unidraw.io/ (нужна регистрация)
🔗 https://app.diagrams.net/ (без регистрации)
P.s. Это мой первый пост. Заранее спасибо за критику.
----
Связь со мной: https://t.me/antzim_in
Почитать мой телеграмм: https://t.me/sa_chulan
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Зарегистрирован
- Активность
