PlantUML Pleasantness: Align Elements With Line Length
Drawing diagrams with PlantUML is fun and easy. We use text to describe the diagram and the we get a graphical representation. Especially in combination with Asciidoctor with PlantUML integration we have a winning combination to write technical documentation. Because our text is transformed into a graphical format like PNG we don't have much influence on the layout. There are options to indicate positions of elements, but we can also use the length of lines to influence the position of elements.
In the following sample we have a PlantUML diagram description with standard lines.
We use two hyphens (--
) to define a line:
@startuml
actor User
[Third party application] as ThirdPartyApp
[PostgreSQL database] <<Database>> as PostgresDB
[Mail server] <<Mail server>> as Mail
package "Spring Boot Application" {
[Controllers] <<Spring REST controllers>>
[DataStoreService] <<Spring service>>
[Repository] <<Spring repository>>
}
User --> Controllers
ThirdPartyApp --> Controllers
Controllers --> DataStoreService
DataStoreService --> Repository
DataStoreService --> Mail
Repository --> PostgresDB
@enduml
We create a diagram and we get the following graphical diagram:
The diagram looks fine, but we want to have our mail server at the same level as the PostgreSQL database element.
We simply add an extra hyphen (-
) to the connection line between DataStoreService
and Mail
:
@startuml
actor User
[Third party application] as ThirdPartyApp
[PostgreSQL database] <<Database>> as PostgresDB
[Mail server] <<Mail server>> as Mail
package "Spring Boot Application" {
[Controllers] <<Spring REST controllers>>
[DataStoreService] <<Spring service>>
[Repository] <<Spring repository>>
}
User --> Controllers
ThirdPartyApp --> Controllers
Controllers --> DataStoreService
DataStoreService --> Repository
/'Add extra hyphen (-) to put Mail
add the same level as PostgresDB '/
DataStoreService ---> Mail
Repository --> PostgresDB
@enduml
We regenerate our diagram and we get the following result:
Written with PlantUML 8048.