2016-06-08 4 views
0

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)

Это то, что данная диаграмма состояний оказана: enter image description here

Как вы можете видеть на графике рисуется немного неаккуратен

  • «Power Off» переход стрелок не является прямым
  • Первоначального/конечное состояние перепутаны
  • стрелки от «Работает» «Начала "похоже, что это как-то связано с„Power Off“перехода
  • „Стартовый“и„Оперативный“состояние не выровнены

Как documentation описывает вас есть Некоторое влияние на направление стрелки написано -left-> или -l-> для краткости, а не только -->.

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

ответ

2

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

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

@startuml 

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

@enduml 

enter image description here

EDIT: Я также изменил свой Powered --> Starting : Fatal Error переход: Powered --> Powered : Fatal Error, который лучше выражает, что из любого состояния в Работает, событие фатальной ошибки перезапустится на стартовом подключении.

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

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

могут быть объединены в:

Powered --> Powered : Reset, Fatal Error 

см OMG UML 2.5 format specification раздел 14.2.4.9 страница 329

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]] 
+0

Может быть, я просто не вижу смысла но мне кажется, что вы просто упрощаете модель, чтобы избежать описанной проблемы. В моем случае мне нужен переход «Powered -> Starting», потому что он говорит мне, что из * любого * состояния, содержащегося в «Powered», я могу снова ввести «Запуск» (например, по ошибке).Итак, +1 для рабочего примера, но я сомневаюсь, что этот подход работает для более сложных моделей. – frans

+0

@frans Я адаптировал свой ответ, чтобы включить лечение «Фатальная ошибка». – PaulH

+1

Вы можете использовать Umple. См. Этот пример: http://cruise.eecs.uottawa.ca/umpleonline/?example=manualexamples/NestedStateMachines2&diagramtype=state – PaulH