In Structurizr you can create a landscape view showing the relation between all your software systems. The documentation states that:
The workspace could be configured so that double-clicking software system A in the system landscape diagram takes you workspace 1, where the details of that software system can be found.
How to enable that for more software systems than just a single one?
Structurizer suggests to have a separate workspace.dsl
file per software system which extends from the overall landscape workspace defintion.
If I do that and create views based on the extending workspace, I end up with a landscape view containing only a single link on the software system I extended with and no other software system is linked.
On the other hand, I can keep all my workspace definitions in a single file, which results in a landscape view with many links, but this is the opposite of what the documentation suggests and the inspect
command keeps complaining about there should only be 1 software system defined per workspace file.
Is there some DSL definition available which I am overlooking, or is there a missmatch between suggested best practices and functionality?
Example DSLs:
system-landscape.dsl
workspace {
configuration {
scope landscape
}
model {
a = softwareSystem A
b = softwareSystem B
a -> b "request API" "https"
}
views {
systemLandscape landscape {
include *
autolayout lr
}
}
}
- software system A
workspace.dsl
:
workspace extends system-landscape.dsl {
configuration {
scope softwareSystem
}
model {
!extend a {
a-server = container "Server"
a-db = container "Database"
a-server -> a-db "read/write"
}
}
views {
systemContext a aSystemContextView {
include *
autolayout lr
}
container a aContainerView {
include *
autolayout lr
}
}
}
- software system B
workspace.dsl
:
workspace extends system-landscape.dsl {
configuration {
scope softwareSystem
}
model {
!extend b {
b-server = container "Server"
b-db = container "Database"
b-server -> b-db "read/write"
}
}
views {
systemContext b bSystemContextView {
include *
autolayout lr
}
container b bContainerView {
include *
autolayout lr
}
}
}