I created this diagram using the following code. But as you can see, the lines going from (Cancel Order) and (Place Order) to (Publisher) decide to take a terribly rounded path to get their, instead of going straight to the right and then down to publisher. I tried using manual direction commands like "-down" but none of them seemed to help. Does anybody know how to fix this?
And here is my code. I appreciate any help. Thank you.
@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
together {
Actor "Book Database" as bookLog
(Retrieve Information) as getBook
customer -- getBook
getBook -- ebook
getBook -- bookLog
(Update Catalogue) as updateCatalogue
ebook -- updateCatalogue
updateCatalogue -- bookLog
}
together {
(Place Order) as order
customer -- order
order -- ebook
order--publisher
(Cancel Order) as cancelOrder
customer -- cancelOrder
cancelOrder -- ebook
cancelOrder--publisher
}
}
(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook
(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher
@endUML
There are some tricks that you can try, listed below. The layouting itself is performed by GraphViz (dot layouting iirc), and GraphViz simply does this sometimes. Graph layouting is a NP-complete problem, so algorithms usually take harsh shortcuts.
Typical workarounds that I've seen or used include:
a -[hidden]- b
a --- b
(more dashes, longer line)a -left- b
)a -- b
→ b -- a
)So if you really want to have a nice layout, you'll need to put some elbow grease in, but keep in mind that the layout will be still brittle -- if you add/remove items, you might need to redo it again.
Try the options suggested by @Peter Uhnak along with linetype :
skinparam linetype polyline
skinparam linetype ortho
Give better options for lines. Using ortho - ( Here )
you will get -
If anyone wants to know a more specific, put probably much more useless answer, here is what I did in the end.
order -down- publisher
publisher -[hidden]up- order
so for some reason adding the duplicated command both ways solves it.
要使布局中的连接不那么重要,请使用[norank]
,例如a -[norank]-> b
All these good answers are compiled and referenced in the semi-official Hitchhiker's Guide to PlantUML . See the Layout section .
Not sure how it was 3 years ago, but it's probably now a better starting point for PlantUML tweaks than SO.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.