TGViewer
Analyst Boost. Никита Харичкин Analyst Boost. Никита Харичкин @analyst_boost · 5.54K subscribers
Post #40 3.87K
👣 Как в PlantUML выудить номер шага? 👣

В своих докладах я делился прекрасной функцией autonumber, которая сама нумерует шаги, сколько их не добавляй. Однако коллега в сообществе столкнулся с интересной потребностью: динамически высчитывать номер шага под конкретный интересующий его вызов.

🦶 Порассуждаем на примере. Допустим, у меня описана сложная и многокомпонентная интеграция, детали вызовов постоянно уточняются, добавляются новые шаги, какие-то упраздняются. Т.е. порядковый номер для конкретного интересующего нас вызова из A в B будет постоянно "скакать". Как же быть, если мы хотим далее ссылаться на тот самый вызов? Руками прописывать в ссылке номер шага? Тогда придётся постоянно следить, чтобы при обновлении диаграммы он был актуальным. Велика вероятность ошибки. Т.о. осознаём, что нам нужно динамически понимать, какой же номер сам plantUML присваивает важному вызову. Здесь я нашёл 3 способа:

1️⃣ Простой. Сохранять автономер в переменную
!$autonum = "%autonumber%"
И добавлять такую метку в каждый интересующий нас вызов (создаём аналог якоря в Confluence).
Ограничение в том, что тип параметра autonum останется string, и никаким %intval это не сконвертировать в int. Т.е. записывать значение в итератор не получится. Каждая операция i++ будет вызывать конкатенацию строк, а не сложение.

2️⃣ Явный. Создать функцию инкремента, чтобы итератор был целочисленным
!function $step($a)
!return $a + 1
!endfunction
В таком случае придётся вызывать её после каждого вызова, чтобы увеличивать самописный счётчик шагов. Можно делать это и без функции, напрямую:
!$i = $i + 1

3️⃣ Изящный. Создать и вызывать процедуру, которая номер шага и увеличит, и вернёт его значение
Тогда не придётся повторять инкремент в коде после каждого вызова:
!procedure $stepper($a)
$step($a)
!global $i = $i+1
!endprocedure

Полный код и диаграмма в посте ниже. Я был удивлён, что на форуме планта никто явно такие решения не предлагал, хотя вопрос возникал не раз. Если знаете ещё более наглядный или изящный способ — делитесь в комментариях.

#лайфхаки | Analyst Boost
  • 🔥 15
  • 🤩 4
More from @analyst_boost
  1. Sep 13, 2026🥩Мясные прокси в нейрослопном пинг понг шоу🥩 Как архитектор, я вынужден быть на пути сог…
  2. Aug 11, 2026😘 Монополия на накрутку 😘 Устали от выдумывания достижений в процентах, RPS’ах и миллион…
  3. Jul 23, 2026🐑 Бараны в волчьей шкуре 🐑 Я писал о кризисе как для соискателей, так и для курсоводов.…
  4. Jul 14, 2026Post #150
  5. Jul 2, 2026Tech Analyst Meetup. Неизданное Так, мы не закончили. Сложно впихнуть в один митап все сам…
  6. Jul 2, 2026📉 Отрицательное расширение рынка 📉 Статистики не будет, но вброшу пару чисел и прокоммен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →