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>]]