From e373dcbf1c2c9917198e9ef38f06fa6fbf2ee054 Mon Sep 17 00:00:00 2001 From: Simon Brown Date: Mon, 3 Jun 2024 15:17:25 +0100 Subject: [PATCH] Adds a basic DSL tutorial. --- dsl/adrs.md | 2 +- dsl/basics.md | 2 +- dsl/cookbook/index.md | 2 +- dsl/defaults.md | 2 +- dsl/docs.md | 2 +- dsl/example.md | 8 +- dsl/expressions.md | 2 +- dsl/identifiers.md | 2 +- dsl/includes.md | 2 +- dsl/language.md | 2 +- dsl/plugins.md | 2 +- dsl/scripts.md | 2 +- dsl/tutorial.md | 307 +++++++++++++++++++++++++++++++++++++ dsl/tutorial/1.dsl | 2 +- dsl/tutorial/2-1.png | Bin 0 -> 52290 bytes dsl/tutorial/2-2.png | Bin 0 -> 82578 bytes dsl/tutorial/2.dsl | 27 ++++ dsl/tutorial/3-1.png | Bin 0 -> 52290 bytes dsl/tutorial/3.dsl | 26 ++++ dsl/tutorial/5-1.png | Bin 0 -> 62399 bytes dsl/tutorial/5-2.png | Bin 0 -> 100935 bytes dsl/tutorial/5-3.png | Bin 0 -> 57506 bytes dsl/tutorial/5.dsl | 47 ++++++ dsl/workspace-extension.md | 2 +- 24 files changed, 424 insertions(+), 17 deletions(-) create mode 100644 dsl/tutorial.md create mode 100644 dsl/tutorial/2-1.png create mode 100644 dsl/tutorial/2-2.png create mode 100644 dsl/tutorial/2.dsl create mode 100644 dsl/tutorial/3-1.png create mode 100644 dsl/tutorial/3.dsl create mode 100644 dsl/tutorial/5-1.png create mode 100644 dsl/tutorial/5-2.png create mode 100644 dsl/tutorial/5-3.png create mode 100644 dsl/tutorial/5.dsl diff --git a/dsl/adrs.md b/dsl/adrs.md index be554ed..dc1ff83 100644 --- a/dsl/adrs.md +++ b/dsl/adrs.md @@ -2,7 +2,7 @@ layout: default title: Architecture Decision Records (ADRs) parent: Structurizr DSL -nav_order: 9 +nav_order: 10 permalink: /dsl/adrs --- diff --git a/dsl/basics.md b/dsl/basics.md index 3c73153..ab7d8cf 100644 --- a/dsl/basics.md +++ b/dsl/basics.md @@ -2,7 +2,7 @@ layout: default title: Basics parent: Structurizr DSL -nav_order: 2 +nav_order: 3 permalink: /dsl/basics --- diff --git a/dsl/cookbook/index.md b/dsl/cookbook/index.md index 95cd3f4..f48e2a4 100644 --- a/dsl/cookbook/index.md +++ b/dsl/cookbook/index.md @@ -1,7 +1,7 @@ --- layout: default title: Cookbook -nav_order: 13 +nav_order: 21 parent: Structurizr DSL has_children: true permalink: /dsl/cookbook/ diff --git a/dsl/defaults.md b/dsl/defaults.md index 03f97dc..089b775 100644 --- a/dsl/defaults.md +++ b/dsl/defaults.md @@ -2,7 +2,7 @@ layout: default title: Defaults parent: Structurizr DSL -nav_order: 3 +nav_order: 4 permalink: /dsl/defaults --- diff --git a/dsl/docs.md b/dsl/docs.md index 1e4e4b0..53ae042 100644 --- a/dsl/docs.md +++ b/dsl/docs.md @@ -2,7 +2,7 @@ layout: default title: Markdown/Asciidoc documentation parent: Structurizr DSL -nav_order: 8 +nav_order: 9 permalink: /dsl/docs --- diff --git a/dsl/example.md b/dsl/example.md index 01e1352..3c02983 100644 --- a/dsl/example.md +++ b/dsl/example.md @@ -15,14 +15,14 @@ an associated __view__ that describes a user using a software system. workspace { model { - user = person "User" - softwareSystem = softwareSystem "Software System" + u = person "User" + ss = softwareSystem "Software System" - user -> softwareSystem "Uses" + u -> ss "Uses" } views { - systemContext softwareSystem { + systemContext ss { include * autolayout lr } diff --git a/dsl/expressions.md b/dsl/expressions.md index 9a92a8b..5c73f93 100644 --- a/dsl/expressions.md +++ b/dsl/expressions.md @@ -2,7 +2,7 @@ layout: default title: Expressions parent: Structurizr DSL -nav_order: 6 +nav_order: 7 permalink: /dsl/expressions --- diff --git a/dsl/identifiers.md b/dsl/identifiers.md index bbed004..1dd175f 100644 --- a/dsl/identifiers.md +++ b/dsl/identifiers.md @@ -2,7 +2,7 @@ layout: default title: Identifiers parent: Structurizr DSL -nav_order: 5 +nav_order: 6 permalink: /dsl/identifiers --- diff --git a/dsl/includes.md b/dsl/includes.md index ada94d9..2116da1 100644 --- a/dsl/includes.md +++ b/dsl/includes.md @@ -2,7 +2,7 @@ layout: default title: Includes parent: Structurizr DSL -nav_order: 6 +nav_order: 7 permalink: /dsl/includes --- diff --git a/dsl/language.md b/dsl/language.md index 98d0b4f..2d9a1d0 100644 --- a/dsl/language.md +++ b/dsl/language.md @@ -2,7 +2,7 @@ layout: default title: Language reference parent: Structurizr DSL -nav_order: 12 +nav_order: 13 permalink: /dsl/language --- diff --git a/dsl/plugins.md b/dsl/plugins.md index 1781a59..e870972 100644 --- a/dsl/plugins.md +++ b/dsl/plugins.md @@ -2,7 +2,7 @@ layout: default title: Plugins parent: Structurizr DSL -nav_order: 11 +nav_order: 12 permalink: /dsl/plugins --- diff --git a/dsl/scripts.md b/dsl/scripts.md index 215c44b..707edf0 100644 --- a/dsl/scripts.md +++ b/dsl/scripts.md @@ -2,7 +2,7 @@ layout: default title: Scripts parent: Structurizr DSL -nav_order: 10 +nav_order: 11 permalink: /dsl/scripts --- diff --git a/dsl/tutorial.md b/dsl/tutorial.md new file mode 100644 index 0000000..092ad99 --- /dev/null +++ b/dsl/tutorial.md @@ -0,0 +1,307 @@ +--- +layout: default +title: Tutorial +parent: Structurizr DSL +nav_order: 2 +permalink: /dsl/tutorial +--- + +# Tutorial + +This tutorial provides a good starting point for learning how to use the Structurizr DSL. It will use the [Structurizr DSL demo page](https://structurizr.com/dsl) and doesn't require any special tooling to be installed. + +## 1. System context + +Let's start the tutorial with a basic example of how to use the DSL. The starting point is to define a Structurizr +`workspace`, which itself is a wrapper for a model (where we define elements and relationships) +and a set of views (where we define the views that will ultimately be rendered as diagrams). + +``` +workspace { +} +``` + +The `model` keyword can be used to define our software architecture model, which in this example comprises +a `person` named "User" (assigned to an identifier `u`) and a `softwareSystem` named "Software System" (assigned to an identifier `ss`). +A relationship is then defined between the user and the software system using the `->` symbol, with a description of "Uses". + +``` +workspace { + + model { + u = person "User" + ss = softwareSystem "Software System" + + u -> ss "Uses" + } + +} +``` + +We can then define a single [system context view](/dsl/language#systemcontext-view), with the software system `ss` +being the scope of this view. + +``` +workspace { + + model { + u = person "User" + ss = softwareSystem "Software System" + + u -> ss "Uses" + } + + views { + systemContext ss "Diagram1" { + include * + autolayout lr + } + } + +} +``` + +The `include *` statement says, +"include the software system that is the scope of this view, along with any people and software systems that have a +direct relationship to/from it". +Finally, the `autolayout lr` statement says that automatic layout should be used, with a left to right direction. +`Diagram1` is a unique diagram identifier/key that can be used to reference the diagram, for example, via the +[Structurizr on-premises diagram embed feature](/onpremises/embed). + +Running this example via the Structurizr DSL demo page (click the image below) results in the following diagram. + +[![](/dsl/tutorial/1.png)](http://structurizr.com/dsl?src=https://docs.structurizr.com/dsl/tutorial/1.dsl) + +## 2. Containers + +Next we can define the containers (applications and data stores) that make up our software system, by adding a couple of +`container` definitions nested inside the software system (inside the curly braces). +We can also define a relationship from the user to the web application, and from the web application to the database. + +``` +workspace { + + model { + u = person "User" + ss = softwareSystem "Software System" { + wa = container "Web Application" + db = container "Database Schema" + } + + u -> ss "Uses" + u -> wa "Uses" + wa -> db "Reads from" + } + + views { + systemContext ss "Diagram1" { + include * + autolayout lr + } + } + +} +``` + +The model is non-visual, so we need to define a [container view](/dsl/language#container-view), again with the software system `ss` +being the scope of this view. + +``` +workspace { + + model { + u = person "User" + ss = softwareSystem "Software System" { + wa = container "Web Application" + db = container "Database Schema" + } + + u -> ss "Uses" + u -> wa "Uses" + wa -> db "Reads from" + } + + views { + systemContext ss "Diagram1" { + include * + autolayout lr + } + + container ss "Diagram2" { + include * + autolayout lr + } + } + +} +``` + +The `include *` statement now says, "include the containers inside the software system that is the scope of this view, along with any people and software systems that have a +direct relationship to/from them". The `autolayout lr` statement is the same as before. + +The example DSL creates two diagrams. First we have the system context diagram as before. + +[![](/dsl/tutorial/2-1.png)](http://structurizr.com/dsl?src=https://docs.structurizr.com/dsl/tutorial/2.dsl&view=Diagram1) + +And if you double-click on the software system, you'll navigate to the container diagram. + +[![](/dsl/tutorial/2-2.png)](http://structurizr.com/dsl?src=https://docs.structurizr.com/dsl/tutorial/2.dsl&view=Diagram2) + +## 3. Implied relationships + +"Don't repeat yourself" (DRY) is something that we always tell ourselves as software developers, yet that's essentially +what we've done with the relationship from the user to the software system, and from the user to the web application. + +``` + u -> ss "Uses" + u -> wa "Uses" + wa -> db "Reads from" +``` + +The Structurizr DSL has a feature named [implied relationships](/dsl/cookbook/implied-relationships/), which provides a +way to reduce the number of relationships that you need to explicitly define in your DSL files. In this example, we +can remove the first relationship definition, leaving only the latter two. + +``` + u -> wa "Uses" + wa -> db "Reads from" +``` + +The resulting diagrams are the same. There is an explicit relationship from the user to the web application, +and because the web application is a container inside the software system, +there is an implicit (or implied) relationship between the user and the software system itself. + +[![](/dsl/tutorial/3-1.png)](http://structurizr.com/dsl?src=https://docs.structurizr.com/dsl/tutorial/3.dsl&view=Diagram1) + +## 4. View expressions + +Both of the view definitions use the `include *` statement, which provides a convenient way to include a default +set of elements that readers may want to see. But the DSL includes a number of other [expressions](/dsl/expressions) that can be used to +`include` or `exclude` elements and relationships. + +In this example, all the following are equivalent and will produce the same diagram: + +Include the default set of elements. + +``` + container ss "Diagram2" { + include * + autolayout lr + } +``` + +Include the user, web application, and database explicitly. + +``` + container ss "Diagram2" { + include u wa db + autolayout lr + } +``` + +Include the user, web application, and database explicitly (separate lines). + +``` + container ss "Diagram2" { + include u + include wa db + autolayout lr + } +``` + +Include the web application, plus the inbound and outbound dependencies. + +``` + container ss "Diagram2" { + include "->wa->" + autolayout lr + } +``` + +Include elements of type `container`, plus the inbound and outbound dependencies. + +``` + container ss "Diagram2" { + include "->element.type==container->" + autolayout lr + } +``` + +Include children of the software system, plus the inbound and outbound dependencies. + +``` + container ss "Diagram2" { + include "->element.parent==ss->" + autolayout lr + } +``` + +## 5. Styling elements + +Let's add some colours and shapes to our diagrams. Every element and relationship has a set of text-based tags +associated with it - much in the same way that HTML elements can have one or more CSS classes. +All elements have an `Element` tag, while people additionally have a `Person` tag, +software systems have a `Software System` tag, and containers have a `Container` tag. +Styling elements can be achieved by creating an [element style](/dsl/cookbook/element-styles/) for a given tag. + +``` + views { + ... + + styles { + element "Element" { + color white + } + element "Software System" { + background #2D882D + } + element "Person" { + background #116611 + shape person + } + } + } +``` + +This code: + +- sets the foreground colour of all elements to white +- sets the background colour of all software systems to green +- sets the background colour of all people to a darker green +- sets the shape of all people to a person shape + +[![](/dsl/tutorial/5-1.png)](http://structurizr.com/dsl?src=https://docs.structurizr.com/dsl/tutorial/5.dsl&view=Diagram1) + +Changing the shape of the database schema element is a two-step process. +First we need to add a custom tag (in this case `Database` to the element). + +``` + ss = softwareSystem "Software System" { + wa = container "Web Application" + db = container "Database Schema" { + tags "Database" + } + } +``` + +And then we can define an element style for that `Database` tag. + +``` + styles { + ... + element "Container" { + background #55aa55 + } + element "Database" { + shape cylinder + } + } +``` + +We have additionally added an element style for the `Container` tag, to set the colour of all containers to a lighter green. + +[![](/dsl/tutorial/5-2.png)](http://structurizr.com/dsl?src=https://docs.structurizr.com/dsl/tutorial/5.dsl&view=Diagram2) + +Clicking the "i" button inside the diagram editor will reveal the automatically generated diagram key for that particular diagram. + +![](/dsl/tutorial/5-3.png) diff --git a/dsl/tutorial/1.dsl b/dsl/tutorial/1.dsl index 8535dbd..281409e 100644 --- a/dsl/tutorial/1.dsl +++ b/dsl/tutorial/1.dsl @@ -8,7 +8,7 @@ workspace { } views { - systemContext ss { + systemContext ss "Diagram1" { include * autolayout lr } diff --git a/dsl/tutorial/2-1.png b/dsl/tutorial/2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c23e0f13f9b4f49c12a458093876b3ffa34f282 GIT binary patch literal 52290 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 literal 0 HcmV?d00001 diff --git a/dsl/tutorial/2-2.png b/dsl/tutorial/2-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f893e625ea01f60f450740f8cf949d39e40649b GIT binary patch literal 82578 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 literal 0 HcmV?d00001 diff --git a/dsl/tutorial/2.dsl b/dsl/tutorial/2.dsl new file mode 100644 index 0000000..079bc0c --- /dev/null +++ b/dsl/tutorial/2.dsl @@ -0,0 +1,27 @@ +workspace { + + model { + u = person "User" + ss = softwareSystem "Software System" { + wa = container "Web Application" + db = container "Database Schema" + } + + u -> ss "Uses" + u -> wa "Uses" + wa -> db "Reads from" + } + + views { + systemContext ss "Diagram1" { + include * + autolayout lr + } + + container ss "Diagram2" { + include * + autolayout lr + } + } + +} \ No newline at end of file diff --git a/dsl/tutorial/3-1.png b/dsl/tutorial/3-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c23e0f13f9b4f49c12a458093876b3ffa34f282 GIT binary patch literal 52290 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 literal 0 HcmV?d00001 diff --git a/dsl/tutorial/3.dsl b/dsl/tutorial/3.dsl new file mode 100644 index 0000000..e5779d5 --- /dev/null +++ b/dsl/tutorial/3.dsl @@ -0,0 +1,26 @@ +workspace { + + model { + u = person "User" + ss = softwareSystem "Software System" { + wa = container "Web Application" + db = container "Database Schema" + } + + u -> wa "Uses" + wa -> db "Reads from" + } + + views { + systemContext ss "Diagram1" { + include * + autolayout lr + } + + container ss "Diagram2" { + include * + autolayout lr + } + } + +} \ No newline at end of file diff --git a/dsl/tutorial/5-1.png b/dsl/tutorial/5-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff39ab752eb4b4c091d2de28f0eaf49b0d03109 GIT binary patch literal 62399 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