structurizr / dsl

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

Identifiers hierarchical and deploymentEnvironment #69

Closed pjjv closed 3 years ago

pjjv commented 3 years ago

Hello,

after I started to use identifier hierarchical this does not work:

 workspace {
 !identifiers hierarchical

model {
    user = person "User"
    softwareSys = softwareSystem "Software System" 

    deploymentEnvironment Prod {

        DN1 = deploymentNode DN1 {
            softwareSystemInstance softwareSys 
        }

        DN2 = deploymentNode DN2 {
            softwareSystemInstance softwareSys 
        }

        DN1 -> DN2 "Hot stand by"
    }
}

views {
    theme default
    deployment * Prod {
        include *
    }
}
}

but this works:

workspace {
!identifiers flat

model {
    user = person "User"
    softwareSys = softwareSystem "Software System" 

    deploymentEnvironment Prod {

        DN1 = deploymentNode DN1 {
            softwareSystemInstance softwareSys 
        }

        DN2 = deploymentNode DN2 {
            softwareSystemInstance softwareSys 
        }

        DN1 -> DN2 "Hot stand by"
    }
}

views {
    theme default
    deployment * Prod {
        include *
    }
}
}

How can it be done properly in hierarchical mode?

simonbrowndotje commented 3 years ago

That should work, so I'll take a look, but you can do this as a workaround:

 workspace {
    !identifiers hierarchical

    model {
        user = person "User"
        softwareSys = softwareSystem "Software System" 

        prod = deploymentEnvironment Prod {

            DN1 = deploymentNode DN1 {
                softwareSystemInstance softwareSys 
            }

            DN2 = deploymentNode DN2 {
                softwareSystemInstance softwareSys 
            }

            prod.DN1 -> prod.DN2 "Hot stand by"
        }
    }

    views {
        theme default
        deployment * Prod {
            include *
        }
    }
}
pjjv commented 3 years ago

Thank you, workaround works for me.

Tested also with deeper deploymentNode hierarchies, relative does not work within deploymentEnvironments, absolute path works well. Relative path works only within same deploymentNode, but not if you address different node within same deploymentEnvironment.