Vertical arrangement problem

0 votes
asked Feb 2, 2019 in Question / help by ripanem (180 points)
reshown Feb 2, 2019 by ripanem

Here's use case diagram:

@startuml
skinparam defaultTextAlignment center

left to right direction
skinparam packageStyle rectangle
actor "app" as a1
actor "db1" as a2
actor "db2" as a3
actor "db3" as a4
actor "db4" as a5
actor "db" as a6
actor "app1" as a7
actor "app2" as a8
actor "app3" as a9

rectangle "System"{

(f1) as uc1
(f2) as uc2
(f3) as uc3
(f4) as uc4
(f5) as uc5
(f6) as uc6
(f7) as uc7
(f8) as uc8
(f) as uc9
(f9) as uc10
(f10) as uc11
(f11) as uc12
(f12) as uc13
a1 --> uc1
a1 --> uc2
a1 --> uc3

uc2 -[hidden]> uc1
uc3 -[hidden]> uc2
uc2 <. uc3 : include
uc1 <. uc2 : include


a2 --> uc5
a3 --> uc6
a4 --> uc7
a5 --> uc8

uc6 -[hidden]> uc5
uc7 -[hidden]> uc6
uc6 <. uc7 : include
uc5 <. uc6 : include


a6 <|-- a2
a6 <|-- a3
a6 <|-- a4
a6 <|-- a5


uc1 --|> uc4
uc2 --|> uc4
uc3 --|> uc4

uc5 --|> uc9
uc6 --|> uc9
uc7 --|> uc9
uc8 --|> uc9

uc9 -[hidden]> uc4
uc4 -|> uc9

uc10 -[hidden]> uc9
uc10 -|> uc9


uc12 -[hidden]> uc11
uc13 -[hidden]> uc12
uc10 <|-- uc11
uc10 <|-- uc12

'Problem strings
uc11 <-- a7
uc12 <-- a8


uc13 -[hidden]> uc12
uc13 <-- a9
}
@enduml


So, the problem is:

It is important for use case f1, f2, f3 to be placed in following order (vertical): f1 on top, then f2, then f3.

Everything works fine until i add connection with app1 or app2 (a7 or a8). After connection (one of these two) is added, vertical order of f1 - f3 crashes.

What's the reason for such strange layout?

Thanks in advance.

1 Answer

0 votes
answered Feb 3, 2019 by ripanem (180 points)
Found workaround: hidden line between uc7 and uc8.
commented Apr 4, 2022 by FrankP
I am also trying to figure out how to control the order of items in a use-case diagram. Could you explain your workaround?

This has me completely mystified. I copied your example, and tried to add your workaround. I guess the order of the hidden lines, and even the type of line, is significant. Putting

uc7 -[hidden]> uc8

right after the hidden arrow from uc2 to uc1 didn't fix the order of f1, f2 and f3, whereas

uc7 -[hidden]- uc8

made everything jump! With this, app and db4 are now *under* the rectangle!

Having things move about in mysterious ways really hurts when one of the stakeholders points out one missing arrow, and when it's added they don't recognise the diagram any more.
...