Expressions
The Structurizr DSL supports a number of expressions for use when including or excluding elements/relationships on views (except dynamic views). Expressions should be surrounded in quotes if they contain whitespace; for example:
include "element.tag==Tag 1"
(correct)include element.tag=="Tag 1"
(incorrect)
Expressions can also be used with the !elements and !relationships keywords to perform bulk operations on a set of items.
Element expressions
-><identifier|expression>
: the specified element(s) plus afferent couplings<identifier|expression>->
: the specified element(s) plus efferent couplings-><identifier|expression>->
: the specified element(s) plus afferent and efferent couplingselement.type==<type>
: elements of the specified type (Person
,SoftwareSystem
,Container
,Component
,DeploymentNode
,InfrastructureNode
,SoftwareSystemInstance
,ContainerInstance
,Custom
)element.parent==<identifier>
: elements with the specified parentelement.tag==<tag>[,tag]
: all elements that have all of the specified tagselement.tag!=<tag>[,tag]
: all elements that do not have all of the specified tagselement.technology==<technology>
: all elements with the specified technologyelement.technology!=<technology>
: all elements without the specified technologyelement.properties[name]==value
: all elements that have the specified property with the specified valueelement==-><identifier>
: the specified element plus afferent couplingselement==<identifier>->
: the specified element plus efferent couplingselement==-><identifier>->
: the specified element plus afferent and efferent couplings
Relationship expressions
*->*
: all relationships<identifier>->*
: all relationships with the specified source element*-><identifier>
: all relationships with the specified destination elementrelationship==*
: all relationshipsrelationship==*->*
: all relationshipsrelationship.tag==<tag>[,tag]
: all relationships that have all of the specified tagsrelationship.tag!=<tag>[,tag]
: all relationships that do not have all of the specified tagsrelationship.properties[name]==value
: all relationships that have the specified property with the specified valuerelationship.source==<identifier>
: all relationships with the specified source elementrelationship.destination==<identifier>
: all relationships with the specified destination elementrelationship==<identifier>->*
: all relationships with the specified source elementrelationship==*-><identifier>
: all relationships with the specified destination elementrelationship==<identifier>-><identifier>
: all relationships between the two specified elements
Combining expressions
Two expressions can be combined with the &&
or ||
operators. For example: "element.type==Container && element.parent==abc"
(where abc
is a software system identifier). DSL scripts or plugins are recommended for more complicated expressions.