structurizr / dsl

Structurizr DSL
https://docs.structurizr.com/dsl
Apache License 2.0
1.41k stars 265 forks source link

Subsystems #56

Closed renegourleyIS closed 3 years ago

renegourleyIS commented 3 years ago

It would be really useful to have another level between SoftwareSystem and Container. For example, a set of Containers could work in concert to provide a service to the Software System. Within a SoftwareSystem, Groups almost work like this, but you can't seem to address them to, say, exclude them from a View.

simonbrowndotje commented 3 years ago

Addressing groups by identifier is actually supported in the most recent DSL/CLI version; for example:

workspace {

    model {
        softwareSystem = softwareSystem "Software System" {
            service1 = group "Service 1" {
                service1Db = container "Service 1 DB"
                container "Service 1 API" {
                    -> service1Db
                }
            }
            service2 = group "Service 2" {
                service2Db = container "Service 2 DB"
                container "Service 2 API" {
                    -> service2Db
                }
            }
        }
    }

    views {
        container softwareSystem {
            include *
            exclude service2
            autoLayout
        }
    }

}
renegourleyIS commented 3 years ago

My apologies! I thought I was on a pretty recent version. The next thing, of course, is to be able to collapse a group in a view. :-)