Hello,
this is my first message on this forum. I want to describe a software system composed of many processes, thread pools, queues, databases etc distributed over several computers.
So the plan is to have a large, highly-detailed diagram, on which I can remove some inner components depending on the focus (e.g. with "!if" or "remove" tags).
But layout issues appear when I try to make components appear inside other components. My naive definition:
@startuml
component "My system without details" {
component Client{
}
component Server {
}
Client -r- Server
}
component "My system with details" {
component Detailed_Client {
[Application]
}
component Detailed_Server {
[Service]
}
Detailed_Client -r- Detailed_Server
}
@enduml
Leads to:
As you can see, just adding the inner components Client and Server breaks the layout. The link between the client and the server would be [hidden] in my real diagram, here displayed just for explanation.
I already spent a lot of time trying to tweak, including:
- Left to right direction: not a real solution, at the end my diagram will have parts that are better with letf-to-right or top-to-bottom, so I want to keep the default direction where at least "r" really means "right"
- [norank] on the link Client/Server: still unclear to me what it does
- ranksep/nodesep: just the spacing between components in vertical/horizontal directions
- Changing the directions of the arrows, changing the order of components: somehow changing the result, but still unpredictable
Actually, the only thing that worked so far is to:
- remove the client-server link
- re-order, first server then client
Now I'm a bit worried for the rest. I fear that adding more complexity in my diagram will lead to more jumps in the layout, i.e. I need to concentrate more on layout workarounds than on the content.
Any Idea?