PlantUML: управление формой и направлением стрелки

С PlantUML я создал небольшую диаграмму состояний для моей документации:

@startuml

state Powered {
    [*]      -d->    Starting
    Powered  -r->    Starting : Some error
    Starting -d->    Operational
}
[*]     -d->   Powered  : Power On
Powered -u->   [*]      : Power Off
Powered -d->   Powered  : Reset

@enduml

(кстати: PlantUML - очень хороший инструмент для создания графического вывода из текстовых описаний, встроенных документов разметки, таких как asciidoc или reStructuredText)

Вот к чему относится данная диаграмма состояний:

Как видите, график нарисован немного неряшливо

  • стрелка перехода "Выключение" не является прямой
  • начальное / конечное состояние меняются местами
  • стрелка из "Powered" в "Starting" выглядит так, как-то связана с переходом "Power Off"
  • Состояние "Пуск" и "Рабочий" не выровнены

Как описано в документации, вы можете повлиять на направление стрелки, написав -left-> или же -l-> для краткости, а не просто -->,

Есть ли способ повлиять на то, как и где нарисованы стрелки? Мне бы очень хотелось, чтобы были нарисованы только горизонтальные или вертикальные прямые линии.

1 ответ

Чтобы ответить на исходный вопрос для будущих читателей:

Чтобы рисовать только горизонтальные или вертикальные прямые линии, вы можете использовать skinparam linetype ortho.

Чтобы сделать все линии прямыми (но не обязательно горизонтальными или вертикальными), вы можете использовать skinparam linetype polyline.

(источник)

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

Вот пример с тем же значением, но без проблем с макетом:

@startuml

state Powered {
  [*] --> Starting
  Starting --> Operational
}
[*] --> Powered : Power On
Powered --> [*] : Power Off
Powered --> Powered : Reset
Powered --> Powered : Fatal Error

@enduml

РЕДАКТИРОВАТЬ: я также изменил ваш Powered --> Starting : Fatal Error переход к: Powered --> Powered : Fatal Error, что лучше выражает то, что из любого состояния в Powered событие Fatal Error будет перезапущено в стартовом подсостоянии.

В качестве альтернативы два утверждения:

Powered --> Powered : Reset
Powered --> Powered : Fatal Error

можно объединить в:

Powered --> Powered : Reset, Fatal Error

см. раздел 14.2.4.9 спецификации формата OMG UML 2.5, стр. 329

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
Другие вопросы по тегам