How to make PlantUML state diagrams cleaner?

Viewed 92

Is there a way to make State diagrams more organized and clean in PlantUML easily? My fear was the more stuff I add, the more convoluted it becomes and it did happen.

I tried using skinparam linetype ortho setting which made things a bit better but still not enough. Should be using a different type rather than state diagrams which may fit in well? I'm new to PlantUML and still exploring the options.

scale 350 width


state A               #khaki
state B           #BUSINESS
state C         #bisque
state D       #APPLICATION
state E          #IndianRed
state F   #MediumTurquoise
state G             #Salmon
state E      #HoneyDew
state G          #PaleTurquoise
state H     #Aqua

state JOIN_STATE_UNDEFINED      <<join>>
state JOIN_STATE_FAILED         <<join>>
state JOIN_STATE_STARTUP_REQ    <<join>>
state JOIN_STATE_SHUT_DOWN      <<join>>

[*] --> A
A --> B

B --> C
C -[#Red]-> JOIN_STATE_FAILED
C -[#IndianRed]-> JOIN_STATE_UNDEFINED
C --> D

C --> JOIN_STATE_SHUT_DOWN
D --> JOIN_STATE_SHUT_DOWN
F --> JOIN_STATE_SHUT_DOWN
G --> JOIN_STATE_SHUT_DOWN
H --> JOIN_STATE_SHUT_DOWN


D --> F
D --> D

D -[#Red]-> JOIN_STATE_FAILED
'D --> G : EV_MODULE_STARTUP_REQUEST fails
D -[#IndianRed]-> JOIN_STATE_UNDEFINED
'D --> E : EV_MODULE_STARTUP_REQUEST timeout

F --> G
F -[#Red]-> JOIN_STATE_FAILED
F -[#IndianRed]-> JOIN_STATE_UNDEFINED

G --> H
G -[#Red]-> JOIN_STATE_FAILED
G -[#IndianRed]-> JOIN_STATE_UNDEFINED

E -[#Crimson]-> G
E -[#FireBrick]-> E

E --> A

JOIN_STATE_UNDEFINED -[#IndianRed]-> E
JOIN_STATE_FAILED -[#Red]-> G
JOIN_STATE_SHUT_DOWN --> E

@enduml

enter image description here

0 Answers
Related