Bad arrow routing in sequence diagram with swimlanes

0 votes
asked 4 days ago in Question / help by bomm (250 points)

In this diagram

@startuml
|swimline1|
start
start
repeat
  :foo;
|#AntiqueWhite|swimline2|
  :bar;
repeat while (OK?) is (no)
-> yes;
|swimline3|
repeat
  :baz;
|swimline2|
  :bar;
repeat while (OK?) is (no)
-> yes;
stop
@enduml

the loop arrow of the second repeat crosses the arrow from "baz" to "bar2" and goes to the wrong side of the join diamond. There is even an arrow in the middle of the line that ends just on the crossing line which makes the meaning of the crossing less obvious.

generated diagram

In this case it would be better to have the second repeat arrow on the right of "baz". (May be difficult on more complicated diagrams.) At least an arrow coming from the left should end on the left side of the diamond (or the corresponding entity).

The routing in this example is better if I change the order of "swimlane2" and "swimlane3". This is a simplified example, the real diagram is more complex.

Is it possible to change the routing other than re-ordering the swimlanes?

Bodo

1 Answer

+1 vote
answered 4 days ago by plantuml (203,680 points)
selected 4 days ago by bomm
 
Best answer
Thanks for the report.

We've fixed the wrong side for joining diamond in last beta http://beta.plantuml.net/plantuml.jar

The other issue ("arrow in the middle of the line that ends just on the crossing") is just bad luck and difficult to fix with current design. We'll think about it...
...