From 33ed52bfaf50541fbb127ce0375a486aa2f5d6c9 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Wed, 12 Jun 2019 15:44:02 +0300 Subject: [PATCH 001/250] compatibility with plantuml.1.2019.6 --- C4.puml | 161 +++++++++++++----- C4_Component.puml | 46 ++--- C4_Container.puml | 50 +++--- C4_Context.puml | 136 +++++++++------ LayoutOptions.md | 33 ++-- README.md | 21 ++- samples/C4CoreDiagrams.md | 3 +- ...Component Diagram Sample - bigbankplc.puml | 4 +- ...Container Diagram Sample - bigbankplc.puml | 8 +- ...ontainer Diagram Sample - message bus.puml | 8 +- ...ntainer Diagram Sample - techtribesjs.puml | 8 +- ...Diagram Sample - bigbankplc-landscape.puml | 8 +- ...4_Context Diagram Sample - bigbankplc.puml | 4 +- ...4_Context Diagram Sample - enterprise.puml | 8 +- 14 files changed, 308 insertions(+), 190 deletions(-) diff --git a/C4.puml b/C4.puml index d28711a3..2fc0634c 100644 --- a/C4.puml +++ b/C4.puml @@ -4,12 +4,12 @@ ' Colors ' ################################## -!define ELEMENT_FONT_COLOR #FFFFFF +!global $ELEMENT_FONT_COLOR = "#FFFFFF" ' Styling ' ################################## -!define TECHN_FONT_SIZE 12 +!global $TECHN_FONT_SIZE = 12 skinparam defaultTextAlignment center @@ -43,64 +43,133 @@ skinparam rectangle<> { ' Layout ' ################################## -!definelong LAYOUT_AS_SKETCH +!function LAYOUT_AS_SKETCH() skinparam backgroundColor #EEEBDC skinparam handwritten true skinparam defaultFontName "Comic Sans MS" center footer Warning: Created for discussion, needs to be validated -!enddefinelong +!endfunction -!define LAYOUT_TOP_DOWN top to bottom direction -!define LAYOUT_LEFT_RIGHT left to right direction +!function LAYOUT_TOP_DOWN() +top to bottom direction +!endfunction + +!function LAYOUT_LEFT_RIGHT() +left to right direction +!endfunction ' Boundaries ' ################################## -!define Boundary(e_alias, e_label) rectangle "==e_label" <> as e_alias -!define Boundary(e_alias, e_label, e_type) rectangle "==e_label\n[e_type]" <> as e_alias +!unquoted function Boundary($alias, $label) +!return 'rectangle "=='+$label+'" <> as '+$alias +!endfunction +!unquoted function Boundary($alias, $label, $type) +!return 'rectangle "=='+$label+'\n['+$type+']" <> as '+$alias +!endfunction ' Relationship ' ################################## -!define Rel_(e_alias1, e_alias2, e_label, e_direction="") e_alias1 e_direction e_alias2 : "===e_label" -!define Rel_(e_alias1, e_alias2, e_label, e_techn, e_direction="") e_alias1 e_direction e_alias2 : "===e_label\n//[e_techn]//" - -!define Rel(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-->") -!define Rel(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-->") - -!define Rel_Back(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<--") -!define Rel_Back(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<--") - -!define Rel_Neighbor(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "->") -!define Rel_Neighbor(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "->") - -!define Rel_Back_Neighbor(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<-") -!define Rel_Back_Neighbor(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<-") - -!define Rel_D(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-DOWN->") -!define Rel_D(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-DOWN->") -!define Rel_Down(e_from,e_to, e_label) Rel_D(e_from,e_to, e_label) -!define Rel_Down(e_from,e_to, e_label, e_techn) Rel_D(e_from,e_to, e_label, e_techn) - -!define Rel_U(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-UP->") -!define Rel_U(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-UP->") -!define Rel_Up(e_from,e_to, e_label) Rel_U(e_from,e_to, e_label) -!define Rel_Up(e_from,e_to, e_label, e_techn) Rel_U(e_from,e_to, e_label, e_techn) - -!define Rel_L(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-LEFT->") -!define Rel_L(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-LEFT->") -!define Rel_Left(e_from,e_to, e_label) Rel_L(e_from,e_to, e_label) -!define Rel_Left(e_from,e_to, e_label, e_techn) Rel_L(e_from,e_to, e_label, e_techn) - -!define Rel_R(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-RIGHT->") -!define Rel_R(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-RIGHT->") -!define Rel_Right(e_from,e_to, e_label) Rel_R(e_from,e_to, e_label) -!define Rel_Right(e_from,e_to, e_label, e_techn) Rel_R(e_from,e_to, e_label, e_techn) +!unquoted function Rel_($alias1, $alias2, $label, $direction="") +$alias1 $direction $alias2 : **$label** +!endfunction +!unquoted function Rel_($alias1, $alias2, $label, $techn, $direction="") +$alias1 $direction $alias2 : **$label**\n//[$techn]// +!endfunction + +!unquoted function Rel($from, $to, $label) +Rel_($from, $to, $label, "-->") +!endfunction +!unquoted function Rel($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-->") +!endfunction + +!unquoted function Rel_Back($from, $to, $label) +Rel_($from, $to, $label, "<--") +!endfunction +!unquoted function Rel_Back($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "<--") +!endfunction + +!unquoted function Rel_Neighbor($from, $to, $label) +Rel_($from, $to, $label, "->") +!endfunction +!unquoted function Rel_Neighbor($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "->") +!endfunction + +!unquoted function Rel_Back_Neighbor($from, $to, $label) +Rel_($from, $to, $label, "<-") +!endfunction +!unquoted function Rel_Back_Neighbor($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "<-") +!endfunction + +!unquoted function Rel_D($from, $to, $label) +Rel_($from, $to, $label, "-DOWN->") +!endfunction +!unquoted function Rel_D($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-DOWN->") +!endfunction +!unquoted function Rel_Down($from, $to, $label) +Rel_($from, $to, $label, "-DOWN->") +!endfunction +!unquoted function Rel_Down($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-DOWN->") +!endfunction + +!unquoted function Rel_U($from, $to, $label) +Rel_($from, $to, $label, "-UP->") +!endfunction +!unquoted function Rel_U($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-UP->") +!endfunction +!unquoted function Rel_Up($from, $to, $label) +Rel_($from, $to, $label, "-UP->") +!endfunction +!unquoted function Rel_Up($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-UP->") +!endfunction + +!unquoted function Rel_L($from, $to, $label) +Rel_($from, $to, $label, "-LEFT->") +!endfunction +!unquoted function Rel_L($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-LEFT->") +!endfunction +!unquoted function Rel_Left($from, $to, $label) +Rel_($from, $to, $label, "-LEFT->") +!endfunction +!unquoted function Rel_Left($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-LEFT->") +!endfunction + +!unquoted function Rel_R($from, $to, $label) +Rel_($from, $to, $label, "-RIGHT->") +!endfunction +!unquoted function Rel_R($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-RIGHT->") +!endfunction +!unquoted function Rel_Right($from, $to, $label) +Rel_($from, $to, $label, "-RIGHT->") +!endfunction +!unquoted function Rel_Right($from, $to, $label, $techn) +Rel_($from, $to, $label, $techn, "-RIGHT->") +!endfunction ' Layout Helpers ' ################################## -!define Lay_D(e_from, e_to) e_from -[hidden]D- e_to -!define Lay_U(e_from, e_to) e_from -[hidden]U- e_to -!define Lay_R(e_from, e_to) e_from -[hidden]R- e_to -!define Lay_L(e_from, e_to) e_from -[hidden]L- e_to \ No newline at end of file +!unquoted function Lay_D($from, $to) +$from -[hidden]D- $to +!endfunction +!unquoted function Lay_U($from, $to) +$from -[hidden]U- $to +!endfunction +!unquoted function Lay_R($from, $to) +$from -[hidden]R- $to +!endfunction +!unquoted function Lay_L($from, $to) +$from -[hidden]L- $to +!endfunction \ No newline at end of file diff --git a/C4_Component.puml b/C4_Component.puml index 40a8a24e..d645f95f 100644 --- a/C4_Component.puml +++ b/C4_Component.puml @@ -1,4 +1,4 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml @@ -10,46 +10,54 @@ ' Colors ' ################################## -!define COMPONENT_BG_COLOR #85BBF0 +!global $COMPONENT_BG_COLOR = "#85BBF0" ' Styling ' ################################## skinparam rectangle<> { - StereotypeFontColor ELEMENT_FONT_COLOR + StereotypeFontColor $ELEMENT_FONT_COLOR FontColor #000000 - BackgroundColor COMPONENT_BG_COLOR + BackgroundColor $COMPONENT_BG_COLOR BorderColor #78A8D8 } skinparam database<> { - StereotypeFontColor ELEMENT_FONT_COLOR + StereotypeFontColor $ELEMENT_FONT_COLOR FontColor #000000 - BackgroundColor COMPONENT_BG_COLOR + BackgroundColor $COMPONENT_BG_COLOR BorderColor #78A8D8 } ' Layout ' ################################## -!definelong LAYOUT_WITH_LEGEND +!function LAYOUT_WITH_LEGEND() hide stereotype legend right |= |= Type | -| | person | -| | external person | -| | system | -| | external system | -| | container | -| | component | +|<$PERSON_BG_COLOR> | person | +|<$EXTERNAL_PERSON_BG_COLOR> | external person | +|<$SYSTEM_BG_COLOR> | system | +|<$EXTERNAL_SYSTEM_BG_COLOR> | external system | +|<$CONTAINER_BG_COLOR> | container | +|<$COMPONENT_BG_COLOR> | component | endlegend -!enddefinelong +!endfunction ' Elements ' ################################## -!define Component(e_alias, e_label, e_techn) rectangle "==e_label\n//[e_techn]//" <> as e_alias -!define Component(e_alias, e_label, e_techn, e_descr) rectangle "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias - -!define ComponentDb(e_alias, e_label, e_techn) database "==e_label\n//[e_techn]//" <> as e_alias -!define ComponentDb(e_alias, e_label, e_techn, e_descr) database "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias +!unquoted function Component($alias, $label, $techn) +rectangle "==$label\n//[$techn]//" <> as $alias +!endfunction +!unquoted function Component($alias, $label, $techn, $descr) +rectangle "==$label\n//[$techn]//\n\n $descr" <> as $alias +!endfunction + +!unquoted function ComponentDb($alias, $label, $techn) +database "==$label\n//[$techn]//" <> as $alias +!endfunction +!unquoted function ComponentDb($alias, $label, $techn, $descr) +database "==$label\n//[$techn]//\n\n $descr" <> as $alias +!endfunction \ No newline at end of file diff --git a/C4_Container.puml b/C4_Container.puml index 2bc697cb..680c23ef 100644 --- a/C4_Container.puml +++ b/C4_Container.puml @@ -1,4 +1,4 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml @@ -10,50 +10,60 @@ ' Colors ' ################################## -!define CONTAINER_BG_COLOR #438DD5 +!global $CONTAINER_BG_COLOR = "#438DD5" ' Styling ' ################################## skinparam rectangle<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor CONTAINER_BG_COLOR + StereotypeFontColor $ELEMENT_FONT_COLOR + FontColor $ELEMENT_FONT_COLOR + BackgroundColor $CONTAINER_BG_COLOR BorderColor #3C7FC0 } skinparam database<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor CONTAINER_BG_COLOR + StereotypeFontColor $ELEMENT_FONT_COLOR + FontColor $ELEMENT_FONT_COLOR + BackgroundColor $CONTAINER_BG_COLOR BorderColor #3C7FC0 } ' Layout ' ################################## -!definelong LAYOUT_WITH_LEGEND +!function LAYOUT_WITH_LEGEND() hide stereotype legend right |= |= Type | -| | person | -| | external person | -| | system | -| | external system | -| | container | +|<$PERSON_BG_COLOR> | person | +|<$EXTERNAL_PERSON_BG_COLOR> | external person | +|<$SYSTEM_BG_COLOR> | system | +|<$EXTERNAL_SYSTEM_BG_COLOR> | external system | +|<$CONTAINER_BG_COLOR> | container | endlegend -!enddefinelong +!endfunction ' Elements ' ################################## -!define Container(e_alias, e_label, e_techn) rectangle "==e_label\n//[e_techn]//" <> as e_alias -!define Container(e_alias, e_label, e_techn, e_descr) rectangle "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias +!unquoted function Container($alias, $label, $techn) +rectangle "==$label\n//[$techn]//" <> as $alias +!endfunction +!unquoted function Container($alias, $label, $techn, $descr) +rectangle "==$label\n//[$techn]//\n\n $descr" <> as $alias +!endfunction -!define ContainerDb(e_alias, e_label, e_techn) database "==e_label\n//[e_techn]//" <> as e_alias -!define ContainerDb(e_alias, e_label, e_techn, e_descr) database "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias +!unquoted function ContainerDb($alias, $label, $techn) +database "==$label\n//[$techn]//" <> as $alias +!endfunction +!unquoted function ContainerDb($alias, $label, $techn, $descr) +database "==$label\n//[$techn]//\n\n $descr" <> as $alias +!endfunction ' Boundaries ' ################################## -!define Container_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Container") \ No newline at end of file +!unquoted function Container_Boundary($alias, $label) +!return Boundary($alias, $label, "Container") +!endfunction diff --git a/C4_Context.puml b/C4_Context.puml index a28a9cbc..13777983 100644 --- a/C4_Context.puml +++ b/C4_Context.puml @@ -1,4 +1,4 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4.puml ' uncomment the following line and comment the first to use locally ' !include C4.puml @@ -10,93 +10,121 @@ ' Colors ' ################################## -!define PERSON_BG_COLOR #08427B -!define EXTERNAL_PERSON_BG_COLOR #686868 -!define SYSTEM_BG_COLOR #1168BD -!define EXTERNAL_SYSTEM_BG_COLOR #999999 +!global $PERSON_BG_COLOR = "#08427B" +!global $EXTERNAL_PERSON_BG_COLOR = "#686868" +!global $SYSTEM_BG_COLOR = "#1168BD" +!global $EXTERNAL_SYSTEM_BG_COLOR = "#999999" ' Styling ' ################################## skinparam rectangle<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor PERSON_BG_COLOR - BorderColor #073B6F +StereotypeFontColor $ELEMENT_FONT_COLOR +FontColor $ELEMENT_FONT_COLOR +BackgroundColor $PERSON_BG_COLOR +BorderColor #073B6F } skinparam rectangle<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor EXTERNAL_PERSON_BG_COLOR - BorderColor #8A8A8A +StereotypeFontColor $ELEMENT_FONT_COLOR +FontColor $ELEMENT_FONT_COLOR +BackgroundColor $EXTERNAL_PERSON_BG_COLOR +BorderColor #8A8A8A } skinparam rectangle<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor SYSTEM_BG_COLOR - BorderColor #3C7FC0 +StereotypeFontColor $ELEMENT_FONT_COLOR +FontColor $ELEMENT_FONT_COLOR +BackgroundColor $SYSTEM_BG_COLOR +BorderColor #3C7FC0 } skinparam rectangle<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor EXTERNAL_SYSTEM_BG_COLOR - BorderColor #8A8A8A +StereotypeFontColor $ELEMENT_FONT_COLOR +FontColor $ELEMENT_FONT_COLOR +BackgroundColor $EXTERNAL_SYSTEM_BG_COLOR +BorderColor #8A8A8A } skinparam database<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor SYSTEM_BG_COLOR - BorderColor #3C7FC0 +StereotypeFontColor $ELEMENT_FONT_COLOR +FontColor $ELEMENT_FONT_COLOR +BackgroundColor $SYSTEM_BG_COLOR +BorderColor #3C7FC0 } skinparam database<> { - StereotypeFontColor ELEMENT_FONT_COLOR - FontColor ELEMENT_FONT_COLOR - BackgroundColor EXTERNAL_SYSTEM_BG_COLOR - BorderColor #8A8A8A +StereotypeFontColor $ELEMENT_FONT_COLOR +FontColor $ELEMENT_FONT_COLOR +BackgroundColor $EXTERNAL_SYSTEM_BG_COLOR +BorderColor #8A8A8A } ' Layout ' ################################## -!definelong LAYOUT_WITH_LEGEND +!function LAYOUT_WITH_LEGEND() hide stereotype legend right |= |= Type | -| | person | -| | external person | -| | system | -| | external system | +|<$PERSON_BG_COLOR> | person | +|<$EXTERNAL_PERSON_BG_COLOR> | external person | +|<$SYSTEM_BG_COLOR> | system | +|<$EXTERNAL_SYSTEM_BG_COLOR> | external system | endlegend -!enddefinelong +!endfunction ' Elements ' ################################## -!define Person(e_alias, e_label) rectangle "==e_label" <> as e_alias -!define Person(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias - -!define Person_Ext(e_alias, e_label) rectangle "==e_label" <> as e_alias -!define Person_Ext(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias - -!define System(e_alias, e_label) rectangle "==e_label" <> as e_alias -!define System(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias - -!define System_Ext(e_alias, e_label) rectangle "==e_label" <> as e_alias -!define System_Ext(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias - -!define SystemDb(e_alias, e_label) database "==e_label" <> as e_alias -!define SystemDb(e_alias, e_label, e_descr) database "==e_label\n\n e_descr" <> as e_alias - -!define SystemDb_Ext(e_alias, e_label) database "==e_label" <> as e_alias -!define SystemDb_Ext(e_alias, e_label, e_descr) database "==e_label\n\n e_descr" <> as e_alias +!unquoted function Person($alias, $label) +rectangle "==$label" <> as $alias +!endfunction +!unquoted function Person($alias, $label, $descr) +rectangle "==$label\n\n $descr" <> as $alias +!endfunction + +!unquoted function Person_Ext($alias, $label) +rectangle "==$label" <> as $alias +!endfunction +!unquoted function Person_Ext($alias, $label, $descr) +rectangle "==$label\n\n $descr" <> as $alias +!endfunction + +!unquoted function System($alias, $label) +rectangle "==$label" <> as $alias +!endfunction +!unquoted function System($alias, $label, $descr) +rectangle "==$label\n\n $descr" <> as $alias +!endfunction + +!unquoted function System_Ext($alias, $label) +rectangle "==$label" <> as $alias +!endfunction +!unquoted function System_Ext($alias, $label, $descr) +rectangle "==$label\n\n $descr" <> as $alias +!endfunction + +!unquoted function SystemDb($alias, $label) +database "==$label" <> as $alias +!endfunction +!unquoted function SystemDb($alias, $label, $descr) +database "==$label\n\n $descr" <> as $alias +!endfunction + +!unquoted function SystemDb_Ext($alias, $label) +database "==$label" <> as $alias +!endfunction +!unquoted function SystemDb_ext($alias, $label, $descr) +database "==$label\n\n $descr" <> as $alias +!endfunction ' Boundaries ' ################################## -!define Enterprise_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Enterprise") -!define System_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "System") \ No newline at end of file +!unquoted function Enterprise_Boundary($alias, $label) +!return Boundary($alias, $label, "Enterprise") +!endfunction +!unquoted function System_Boundary($alias, $label) +!return Boundary($alias, $label, "System") +!endfunction diff --git a/LayoutOptions.md b/LayoutOptions.md index c5b64b4e..bb9cbc38 100644 --- a/LayoutOptions.md +++ b/LayoutOptions.md @@ -6,16 +6,16 @@ PlantUML uses [Graphviz](https://www.graphviz.org/) for his graph visualization. For this reason, C4-PlantUML also comes with some layout options. -## LAYOUT_TOP_DOWN or LAYOUT_LEFT_RIGHT +## LAYOUT_TOP_DOWN() or LAYOUT_LEFT_RIGHT() -With the two macros `LAYOUT_TOP_DOWN` and `LAYOUT_LEFT_RIGHT` it is possible to easily change the flow visualization of the diagram. `LAYOUT_TOP_DOWN` is the default. +With the two macros `LAYOUT_TOP_DOWN()` and `LAYOUT_LEFT_RIGHT()` it is possible to easily change the flow visualization of the diagram. `LAYOUT_TOP_DOWN()` is the default. ```csharp @startuml LAYOUT_TOP_DOWN Sample -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml /' Not needed because this is the default '/ -LAYOUT_TOP_DOWN +LAYOUT_TOP_DOWN() Person(admin, "Administrator") System_Boundary(c1, 'Sample') { @@ -34,9 +34,9 @@ Using `LAYOUT_LEFT_RIGHT` ```csharp @startuml LAYOUT_LEFT_RIGHT Sample -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml -LAYOUT_LEFT_RIGHT +LAYOUT_LEFT_RIGHT() Person(admin, "Administrator") System_Boundary(c1, 'Sample') { @@ -51,19 +51,19 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") ![LAYOUT_LEFT_RIGHT Sample](http://www.plantuml.com/plantuml/png/xLfjRziu4lwkNy5rFgG1dCP9NvhD9SRwHMc2Svp0KYwtrnO6ROrZOMLI8Ecwlcl_-mrbcP7D28BaDfzM1c9Pd7dccI7ry0NvGoegr7mMEVkamoCk9Dxi5LwEyri0av01SNlkZTltXvUt-ATpsxiTaBtBv78GoLFBA6IF9J5zjtFLNo5wr_znoV69uyY_GXPJGMS4ZUWyKZvyKwqeV6GpO8gCyG-8hDb2qFWX3DIKd3GQcUSp-kq6fAIFu8N_1NByhf7r4Z1Mb3r6GFxd4BmyH0MkbZ5SSgPM7YT9YvpIW2ymEJAXaGJdHnQc9GHVf119MSdU--HAdcWe-sasm8zdEPsVZ_YS1LGicyqrloqMEPmRLeGj7c-JAtdQvY80aVTSzoYGWCef19hcFkdH9P-hSbqSSMJSQ_rvU-yFMzxG-wVhTwuoAO_e-Az7ePDDURYks-vsCXPJoeA529K2HfIOWpr0T7PzEWDIw_1PE2OUPPBSU3LdDLR8X7FzTJxXUlpeC1S2WkO35GphUNP-f1kQf2E0AWZGN90WbEEvb25dTS800aaK9oCWNsaK1jhA-GrOy9IYoNUTgtzxD-pUFlJHBqvykL8S6OUwZn5ssxxdNlh3mVN7Avz4C57QHOIFKvNnmCAtLwCYXB8lR-guV0L3p83AEe5XH4SG7MHUXDh5HVgqHZP689KazIi6r3TwH3uFJ3wjMh_aHy3C1X1HdRASXd79HD5rkEPqN5-3dcpGCoMzgDKEoDeuss3yo9acRyfIAeo2yPJj5EypEpewb_WUdsq9PVDJ2l_b_4YtDu-EQXirG6uJmMTrDEEPlavfsqrrKZiyRDOE2Z5COZQORMDGD-hMnbV-LUgGUDi4xJRDyFpmK3CiXh9v5XWPy0tqFk0REEAYIZ4nwsAioaLzjgOcHiNY8cOnvAv5tYRUhL9SBQnMXRkxbpOVcozOFj6Sq3P48SFYDBRATr-bVFTtLeBtknSl3pdEevXFtmOev7PVgcozAcNJKxILNc_tmkLZmqJb4yq9NG2Hmx1Ngdo3AkNJYnixny7FgLyEE8fNVWLpyx0nYaaMP_AqWYPN4CLGUWE6paOT4bX-a6ejEVmq3OC0s9VkOTAmuNDVu7F_ZC-Wm6VmZ4-lmAUN-YJRnJ6FuOoqY0oJ5QBa4xMW0c-MKi7iDPhSYN16nP9017hZ9y-8FxKCISY8r5ZQmvl7CHSA4JDETy1Z341PiEqhqxLrj2HZpXZUGK0K9weWp3LJm0AqfVCW13R6FDol89OZ7YphUg4_9KcFXsCQ9N4PPuTFJ-A4K1qXPHYiYF6vIkxvP3Du05yXuh7E124fbgNgvltE7NYt_M7xuthdtZXzU_AXRThTV_lkeD_g3It3zwVwOmozFptVlScq7n-_FsrtRI3ByFVaAdjMaBCzrgyFPysclNatErtxl28nBJHeR-r8jofYxvmR7zwqtr_cxkJX6v9ZD1g-86VJ2uNaJrlwaqj-DVnVXBCPC7bKttG-N7OQnNL-GSxsQ2-ky-xdA0_N_jMmvtvq-rrdgdL3cXIT21w11Qkp0-Vx1TcuyBUFHkIxy_ryQsGqKmko6gM9YSakptPTygpJLYMQsZ1LqKrGOvW7QfmmeIGj-z1bdxYfq9VLmuHmYTEGLOQR9nK5OFec03aMpwD-Pf_PsY8dmZRVeVjDbU1iAuzDtaQkb41XE1FFItgrH1OoSR39ss1LYTiHBBvLArzCVjVA5uQhVcneA9OyFIIVLdxvXtpLru0TpXH5QaAIHQYc8IFgvLQ5OnCyPnteRwtogYpo_e5EumWXaR0nec8y3HMIaVMr0x98SFNTwhJqIAvI9LBHoQJwOh63arxhkkyECgktjszEkzrtFsdrPkhu8fEqIQTuRL5-UlvxUaOdgy8fhkddNpE96osmzTFikcs1AdkkJhBZDIjYPNZOWbwPqBRuM-IgoxwLK7dbDwubnTzaaIVxivWpVP-LVUDKAFZPUUDLySG11oIEvfB4rQO9GpPdcl1iMTSnCig-YtZVtDtsKHOpudtwhjs-RFmayJRPxIRUUutaob5iaqEkOd_0_LJtz9Sfzj-AZLPMFnYhT0ZyAbrFuN-rhfiyB5stUBoyhkUGSwn_672ST0DAWrc8Z6ej_HrA9QZY0e_4jrVnu-CwsVVeB8vW_s3r3cVci0MCXZIE4US1HgGLnr4uJjQNDNpKsQkJbdVtkk_ww2A0dBm-9ZV_wkYsLXJnXIHpYMoq5Ee4jCZDvf4AjOpwABmA157X32AC9P7RZvJTAxLgH9pK31kT0KJhh9vetKkGEjwLxzzvQAMDJEiJp4TG4d-2_j87qLcNFu05yrdqVm00 "LAYOUT_LEFT_RIGHT Sample") -## LAYOUT_WITH_LEGEND +## LAYOUT_WITH_LEGEND() Colors can help to add additional information or simply to make the diagram more aesthetically pleasing. It can also help to save some space. All of that is the reason, C4-PlantUML uses colors and prefer also to enable a layout without `<>` and with a legend. -This can be enabled with `LAYOUT_WITH_LEGEND`. +This can be enabled with `LAYOUT_WITH_LEGEND()`. ```csharp @startuml LAYOUT_WITH_LEGEND Sample -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml -LAYOUT_WITH_LEGEND +LAYOUT_WITH_LEGEND() Person(admin, "Administrator") System_Boundary(c1, 'Sample') { @@ -75,10 +75,9 @@ Rel(admin, web_app, "Uses", "HTTPS") Rel(web_app, twitter, "Gets tweets from", "HTTPS") @enduml ``` +![LAYOUT_WITH_LEGEND Sample](https://www.plantuml.com/plantuml/png/0/xLfjS-8u4lwUglm7BPagCZS9aCmRboBKyk9CKaU0mkHoUpDRbC02N6jRFaaU9hix__tKVW5iRB1ZoCrLhLCLm6frFq-tBBLR-faBp8HZ6aWGBewFYgZrxhnlO4iyt7VEq5V2k4ujT56gb2hGEXV2vbVbyamNSsTScb2pFD0dc6cqgnER6EMrxiT7hZvgKCRXsydE2thyD3Fe61lebT9HxfNkS7JJa_zQlKvlWAvHuUJ6lGgUSbKy6RerUuRseTAwxNgwrRj_ArBrnIK8yDzqoyOCcqWZK-mOOaY-YOQXpooJM09Dv3_2me8BXkr7NHDpT5cfh3UO-DizuHpFYAh_Jj35-qgu8oCJWQsPGT0VnqT8NghKJQXuiiaDjOJNwT9hudEiqONaYgROuEJuw7i4BHPuZFa-L3KOeuj0Zni-TFB1lRnRe33XzjBEzmIcjTgOEfQ6sLEzleGQnPE0lx9X_frxURURb6c49JR0I27IItnED1zU4NNm4tL4Xj4pTQo9W0UYq_Ybzp0SDTIH-WzbsBezVRrETumdlyqO4FNnA8hIRBVMHUROqXPC5u9OI327n8my8Dh59a655ZNr2LAnnT6zAeU-DmhHb5Bug4qfZ4omTCs8Ld_4p9BUlAgLeQ6EMenWGJGfpf2cyud3uPa-GnOX6aU2eZ51Nx6XQo0bIH9B2tZ6aXxs-gDsxx4Bd0MrNGrK22g1wn1ejzzEBHtbPZWQt7sw7O8UWqm5A6BwR2wswIdAUBe3I2TP9XN7-ez3NIS4C7mrJwUl97NCpz0h0u-98R7yn8Xmc8MAg-UpS7rTVEC9l2aMK6WKOuvacwia2ZUzMVa9Ops5zIzMZSkduKhUYSnXRuhrp_8kw7bJ_BLM1h5wUh3WpG4nCFpYSztEvLsfQEHJl93St2-NQsIN4Ruk52HfNtBjVj07NVcTKlXsbr519dChe_62r_kBLIvxVezwlVxPqniul5mkn8p-MB2dhwQCcW2ChWq_ZyL6onagd9_N0MyQFyGgy81kCn6uADvKejERShxBIgPsVfwMJ9B-J8nYxILQx18v4OqfonoYr17QPY9RgB96wjdaQjaYjZU6jIoHQsSE6Qnb6UBMpXsmh0RfmZeugNWR--6LQFKXCws7VWPI3xaPPJDd7vYEVI0-YHOxcGb1LfU1KYStewm6PPvvS5BnDlR3Az7g83CjD_dEm6kGcrHcY_0sS7XU2LRsn6treebkYM4Jbk-zHQeABK6GmC8FTFvvhciQiNvjdyFz5EH1rSDMLGzPL0ssgXfaKTNPggeJgwg8_lQSArGLwYi3jTSTDJ-j5PmgrNUN7vk5zShKluRAeDleZEB4FrJXRrrS_KKTAlTXgOkB3zLcErPfdFZVtUkvHQ_OEWmCH6fvLPXmiSMhMSJKtuwFTZGt8tMFg3-bn7gLflBnRVF3pRPY4VacaLdO6Bq8sgIuHc1N6_2t3JP_ueAO1qOR6ISHa6zR7szQbLI-VH6qISCxdM-3wkQFxDeLnX_VitieVJxU3Mz77UMJqcr30KzEpGJn9KUewCtazEmLz8wF_hn6eKl-7aenzATigaMdYRelWxodtXTAUZgNqe7RmzqYNgcxebvWeefZHCEALzqaDOzWt6gl60Gs2_AjytsNn6PrCbGMzEv2ZMyvGMAEKXSZOsr0WOpm2OktzSNwOla2wSnkCJnIledK13UNWknCOmncOfi1GomArHq_gIalfuyiJ6DjP6Avs-mMmy-BQGwcUujfBjhjyIRfvPRSleAwOMIDwAQnVKQrFOwFQpp5VOHLMYJR0hkJRwQuxcrNIO6DEPlfd8nsRp0bxWKLLcfIlSNwJq8UYvwA-BVN_EzLBPd0DEwwoY3yMlFkRRNTVh_Nrvg9p9wmRX6sjh-SDlCAxoudYcnaO9liOhQaTsQD_n_8_yeSSsQEijkcrptTon7mCXbcAp0NinVjrxrYbyyCEw4eFAopB0ExqErQvDEZZ2mSgG1lXnotK0SkZLkuNjYZYV1shA-7TkdULk4bqrnBub9BR1LUjoQ68sUku4GSmukITohEuOG1O_c0RZyWLpOnp7lorcXfgsGxfW7afIrgkcVEn9oWAJKCxuoKN2C9md9-33NhZBldPwHjPD09DemdKB946MF2NNCdr2PNg86uxZu_oq2LeBNFT5Dw1X5_jhcIZZLjQi5tj91STSkrlfgtv0qEAjtkgcFRb0a0lQx1b-NeT4q5frEnm8m44sMWw3Mo3OVBUPdQXaSx8idzmqB64y2mv3Sv4AGZF5m1MXVF7OH4aytOqNHYJIHnDL26sMIkoq4iYO4HZNmb1eNLe9Jp56EhTz_lTM4n3cK-rVVDvarbpvcFppPt_d1ISQ_4d27AA2Pd-5XjLDlLhTdEZuhshmpdXJ8SLouQdK3E7nqlbGdvvWwS2Qs6VBPrUpkw0sP2AG1lXtpeJ2YdH_y7cL0gb-PuvuwVWewF_5elramTzgiRyAbpmR2WRe8JhI5CBivGKSMcN7UBhrUdmOEaV4768spRKjCZ6QE6RHioom7u1SYSJivGG-sNkifGTf7BwsNf0jt_imLj3KXaE2Ggp3ry31w15TXq3A738ZzSmAbeXeHk4aXsEA3x7W0y5LwprEGB5bnwSERHvxQ2zi1bR_bvEnpsrOAtZxz2ljBqYSXrNom8VC1MSwZFyT7FCZeoPVel "LAYOUT_WITH_LEGEND() Sample") -![LAYOUT_WITH_LEGEND Sample](http://www.plantuml.com/plantuml/png/xLXhRziw4lskNy7hV4W3E8sJFfhD9aRzK9fW7IUmbCtURGk3jiQnS2LI8Ecwtct_-mvbcP7D28BitW0BN1cmPN7cp9aHUVZuA1KLQXP7pZxfy8WBYJTxfPVZ_1R096H0t9vxu_RzuUKjVdLkUxS3idUPNWuYUMeHXUon8gRlTgxwIqJl-jykEJvn7Fb7o18gQ4pGYCuYvSDtrOh2HnO3KsICNo3oPdD1auSmK5DoqcZadiVq-mr8IH_12_y3vFXT8-ybOAmeUuo0_DSXU7c82bmj4hZaJ2qzJj8MEQK1dsDoP48Z2SxFF4nB23xF8DAoahttwPK-qL3sqto0dyzoEZyVyHaBg5Wqcoj-6omAE3Ui21iytgPN-hJDHG2YwBb-eq02AgSGQ9hxf4SNVAQglUA88-DUw_VRUt_OyeRUFro_SvLBUKJ7VpmAdMp6mtNTThUJivXI5in5g1GmeiGCx0wYi-lJ64Yjm-DmJ3pA9BdnQiwohv09v_hdVC9r_z5XBWG4pGSg6DRpxFn8DpH9Hm1L4A2v844enpCfGyxgX044aYXEHa2-qIWCj9Np6x3WAKMJxofN__PksBrzwADValfofNYCkFeT8-ocVS-zz8U3wqzNFebWehIB21-dAkU1XMylUqK8LGTlvhXu1KFCWCewWM54Hn0Tv0P2xU8YUreZQpsGIfBvbGFg6zqZdmScdvUjNuiZO6O3YAXEMKx3f6AYw3fSSJgkhq1FrkYPabxKQWTaPPnlC7xaJ9CtPQaKHi5uodQAzuKT7PrB7CTd6qBP_9p1Vpq_qktDewFQMWsGsqJmk8vcFFUkCzfsKvtK3W-RjODI39EO3MRR6DIrkhLnoBzQEMXlcw3TfXcU7nvgXkLGDiyI8mE-Xju7784ZBhOf9cPTZBLhKP-lgOcnPN4Hinnono9RDUvkKrmjh5Q5kxkNjXYRpranqOBGvH0smz8qDiftlqtvxk-i1EztBruHSb94iPX-EO35xRvIsNhRb4rFqLPwlTqBLumD4rLCj21q2KG1mrwbyWssAPzUtDWv3dv1_Oh1KRoAArYOHpc6JR8yawSLDBc2A87A6p1qDkgGmlA3J6l9uUTf60J0ldOFquOrd_iId_jdV0ObFeDdV7ebFhtC9zqkZda2PwH5P9Yk42MVg3aLUBEG2kBNQ78dmfYA1O48zCPFdX5_QXcIa16fiRI7DqiIBXGYvfpkW2SOWB9WqrTcQ-jeGSQSCRo3W2XEL4cOQwQ01MXBPq48R8nvkDz0B4OyMDJrGdzAqZSUZccKncMS7JuzIL92TOIKOR0ancSglUUJzU01V8E89peJXAHObcqtxtVkmBlj3zkVLZltnkdRamzjq-x-otS7_LPlQ1c-FzKVO-ZzxldkJQxz-FZzQRjh0rc6VqklgcS51TjZFNmuQpRjpRlPwThd5QbfgK5xOqUwKH5xvzpuyARz_h9m9m_VaHoZqV05EPktK4h-jAK_XUINtVybE9kULKZrJUV3PQTHNkSNv6ptzl8wxtwEyd3jNmrxxYUtttMcMZUaIT69u15Oi3mxS7vSaBKB__jeH7uuFyutUaOpio3BNfgQcEoAR5SbppjjLAAf3JCLNGSrXaMWnWaJIjEo3rtsYPi9VLKzJ0bNE0rPPhXsKb46fcy2a6FnFEeNzeMjB0eYRF8TkjzL1SuvvR6XRUJT4YW9P-9vwLkja8KPpXPv0xORSJk2pNVRofUJtxdo9U5sE3Oq52kU7fBFIx_YGxxjru0TpXH5QaAIUQYc8IFgvLQ5OnEyO1teRwpojbda_HsTnX528c5ZHCLu6Yea8-ih1sIHukgxvMdfaLocIgIYaydsYyKEJdgjwxuxoAtUthuvxNRV_QBLcwdZYqpI9ftojKNrwVclwHcTh0fdkEOz_pcJkD42eqlMhjiIgEhdwYJVN_CYLeM74VJT2UN5toAtc-nR2LLNVkDQKVnD5aMo7oUSwVkyx1kdSi7FpHkloYSEE219D9CasMwQC6GBfWdFbdKT8wVikuZtpTrj7sKn9zwdxzhjoyOl4c-JtMxYlTT8hmB5DZaKAlO7t4zrJ_-l5FilnJR3-CzNx2nGaM9dpI-lsCNad6TwevFjBMaGXqYfrjA_eLI2AYxmj7jpWJu-hfDzZyP91Fi7o-6PcvxcC1hI946S1nYHLf94uJXTEjRmKMUlJbhUtUk-wwEB07Bo-fZS_BEZsrfHnEUIp2IoqIgdCz3w5SyY5Mg5z55J5GYYmXWYZ2MHsy-CtIkrR4ISp0mRdG54gwoUQDrBa3hUbU_VUMYbZKph4ymdK1B_WlxHPynvbu_0WbaS_Gy0 "LAYOUT_WITH_LEGEND Sample") - -## LAYOUT_AS_SKETCH +## LAYOUT_AS_SKETCH() C4-PlantUML can be especially helpful during up-front design sessions. One thing which is often ignored is the fact, that these software architecture sketches are just sketches. @@ -90,13 +89,13 @@ Without any proof * if they keep what they promise More often these sketches are used by many people as facts and are manifested into their documentations. -With `LAYOUT_AS_SKETCH` you can make a difference. +With `LAYOUT_AS_SKETCH()` you can make a difference. ```csharp @startuml LAYOUT_AS_SKETCH Sample -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml -LAYOUT_AS_SKETCH +LAYOUT_AS_SKETCH() Person(admin, "Administrator") System_Boundary(c1, 'Sample') { @@ -109,4 +108,4 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") @enduml ``` -![LAYOUT_AS_SKETCH Sample](http://www.plantuml.com/plantuml/png/xLfhRziw4lskNy7hV4W3E8sJFfhDEaRzK9fW7IUmbCtURGk3iSQnS6LI8Ecwtct_-mvbcP7D28BatW0BN1g8PN7cp9aHTVX0Faf5XPhF8cUVT7d4XSIBlSBcEBy5C0aP4BVlNhi3VtHnWt-wD_sR8TcxI9g3I9vQHY5xB8dfkztBmGhHk_gtIuvF74V-4RAO2ZeZQ4JdaVBXksf7uIER0LDaZ7z0PCqMWiRtOQ2cvAJHoDoVqU_N82Lz12_y3v3ZTusibu2nekmn0l9VXs3p41MuMiPmmPbQUPmaFN9A0xx0vCY4HXASdrcOjX1yaK8aPILxxvEMtD5GzjriW9_FSces7_YS1LGiMwqrloqMEPmRLeGj7c-JbjpjS160oBkldoYGWCef19hcFkdJ9P-hSeyuuiYut_xzviuVjRsHzm_NxrvcKdwWupyUXKusvU6wRgVNpLXCAGiM8bGA655Y3lO0qTaDw0n8hSjduPXub4boxTMSrLWX4yxrLtF2zVZHOSu51ArxAXZMywnvf3jQf2k0AWZGN90WbEEvb25dTS800aaK9mz0lj4e3BILynkmu2b5a-ywL__cTjIxkH-WNvpuSgKuCWxrCqRORVk-U-6FXbUVBdqImKHf5n4-JbN60mlVMOsA4Cg-lAdZyXMCC0CgwmH64Ns0w23p8jJEpzExDR8n0gaagLyneBxG8_9vOF9vrVirFm9cDeI8wfJbD8nB9egkepMdu_eQz6I3dYdfUQrsGDR6sGxZHyuqULEMKc4KZATiftXVsD5HK-9xVBObbAtFAVpNvf7kRnqTrJPgWDmcWi_gQCOpppgbRNVLIUtmi5KxACGmYTbWjer1tQXR1r_vLwb3ucqJjFiqm-RXeMPO36NpB30ou1le0y0ty86BAiN4h8kmgXVr-PgQ61MBYvX5aBiNUPjuhqfnjR1Q5UxjNjfyRBvW-KHpGXT3M0oBqzWgtrsLyjtTMWdUxLwyFEGuds8U_M80YzjTgRBrgvHDJz5MUltT2vUF3HELJpGdT0543iD-gV8DgvHFBsxi78U_fduvu2XU-HNCpQCOmoPPdCdJ2ffSGXH3wGqOEXjrI63vGQgrvF3pD0m2O5zxXqd7XizTWS_TCpx30f_XCpxz0fz-wfDi5ySyXZFI9Z9CLeYIJzI22hnOIWMprsXoAy8P5Ki24UYDdpmZ_jGo924ZKcDf3syUnrmeHCmutGAFCG1bmRQlJDVMqPACEMDu1G5HdAY2C5TC0GlGbiw34DWOyt2_WLW-y61PrmlzAKcUU3YcKHANSNRuT2TE2DKHKeR1YXYVg-IQJpQ31_0D8XxhJ12IObcgRjvltQ5tCnXrFgrtxetJjoSVEgRV_PVl3WVj_iWoV7-gFyRG-ztptUjC__7n-zDEpmQo3F-MjB9d1JdRO_twSDPgsPjtizErpoiIqqA3pjQETAiYziwvyU5Dv_r5xauUlYCvHgFH2t8sJw6G_6bRVtB9huR_It0s8okNwflkXujkexZEByZP7kt5TTxz7EN-ohySzTrFxg3dJBLkI9EY4y4Zi61rTk3yE2SR3N_xQ4H-E3-QMoEZbLgGrIXDJ4nsURRhacUTjYhHqeQfYcw26iCyKEE42ILfsOSk-yHDXRwi7YQ4Ivo6h3BSEAae0jCN0SYnU1xr2_l2rXOv4RRvZjplgWHdMtbiyZPonGGAmfbuNl9KIsGX4mUBl0LMdRWLmUPRjVB5v7UlV46uwiU6XcB9qqFoUUMNVyXNVGtOvKnHf2OaMOHg6ZAYNcvLE3R1SzQ1_jOghyeYx-_eD8uG4WaR8oh6qr0X6LbVEo2B15TVhKvBZ-GgLI8LdKogBnQxEEcrhmRkCBDwU_lcjDTxzujMRwQEBp99ctIArnRbf-U_fcTqiYgSufhd_ETCuaOBZ2xPksvReCgUgvFiUCsAM1aUbg1N9xGj_ZQvoh9l9LHU-OrhIV4tMUJ9_Ypc3AytPDyu5Gj-PjvuLJnnm069exaaSRLfmf3DcIOyMzPrZ8ooxoBUrxSt0vJ5Z7YVlkjqBXg_IBnDThk9zruZQJcARNB8LUmFk9_gdVwVAVPVYfsEdJzViTD0bc9RF5vOiVF9ETQ_IJZfpf86in09rThwEvHAKCK5ddLlBy_7ntMoxz5P7C7-GVfoFarE2tWOqJX6d7ju8EquZi9nid2iuQtkNfsqlTlN0zT75m7avFKnkVvdL_UreuWl99bBPACrJlFNwZMRHohK-kYZeYeGH8KpY32MH6u_KtQlrAeJSL8px7I64AspUg9r9q7gU9U-V-kXbJOolKymdq19_0dwIvymPrq-0Wlci-X_ "LAYOUT_AS_SKETCH Sample") +![LAYOUT_AS_SKETCH Sample](https://www.plantuml.com/plantuml/png/0/xLfjS-8u4lwUglm7BPagCZS9aCmRboBKyk9CKaU0mkHoUpDRbC02N6jRFaaU9hix__tKVW5iRB1ZoCrLhLCLm6frFq-tBBLR-faBp8HZ6aWGBewFYgZrxhnlO4iyt7VEq5V2k4ujT56gb2hGEXV2vbVbyamNSsTScb2pFD0dc6cqgnER6EMrxiT7hZvgKCRXsydE2thyD3Fe61lebT9HxfNkS7JJa_zQlKvlWAvHuUJ6lGgUSbKy6RerUuRseTAwxNgwrRj_ArBrnIK8yDzqoyOCcqWZK-mOOaY-YOQXpooJM09Dv3_2me8BXkr7NHDpT5cfh3UO-DizuHpFYAh_Jj35-qgu8oCJWQsPGT0VnqT8NghKJQXuiiaDjOJNwT9hudEiqONaYgROuEJuw7i4BHPuZFa-L3KOeuj0Zni-TFB1lRnRe33XzjBEzmIcjTgOEfQ6sLEzleGQnPE0lx9X_frxURURb6c49JR0I27IItnED1zU4NNm4tL4Xj4pTQo9W0UYq_Ybzp0SDTIH-WzbsBezVRrETumdlyqO4FNnA8hIRBVMHUROqXPC5u9OI327n8my8Dh59a655ZNr2LAnnT6zAeU-DmhHb5Bug4qfZ4omTCs8Ld_4p9BUlAgLeQ6EMenWGJGfpf2cyud3uPa-GnOX6aU2eZ51Nx6XQo0bIH9B2tZ6aXxs-gDsxx4Bd0MrNGrK22g1wn1ejzzEBHtbPZWQt7sw7O8UWqm5A6BwR2wswIdAUBe3I2TP9XN7-ez3NIS4C7mrJwUl97NCpz0h0u-98R7yn8Xmc8MAg-UpS7rTVEC9l2aMK6WKOuvacwia2ZUzMVa9Ops5zIzMZSkduKhUYSnXRuhrp_8kw7bJ_BLM1h5wUh3WpG4nCFpYSztEvLsfQEHJl93St2-NQsIN4Ruk52HfNtBjVj07NVcTKlXsbr519dChe_62r_kBLIvxVezwlVxPqniul5mkn8p-MB2dhwQCcW2ChWq_ZyL6onagd9_N0MyQFyGgy81kCn6uADvKejERShxBIgPsVfwMJ9B-J8nYxILQx18v4OqfonoYr17QPY9RgB96wjdaQjaYjZU6jIoHQsSE6Qnb6UBMpXsmh0RfmZeugNWR--6LQFKXCws7VWPI3xaPPJDd7vYEVI0-YHOxcGb1LfU1KYStewm6PPvvS5BnDlR3Az7g83CjD_dEm6kGcrHcY_0sS7XU2LRsn6treebkYM4Jbk-zHQeABK6GmC8FTFvvhciQiNvjdyFz5EH1rSDMLGzPL0ssgXfaKTNPggeJgwg8_lQSArGLwYi3jTSTDJ-j5PmgrNUN7vk5zShKluRAeDleZEB4FrJXRrrS_KKTAlTXgOkB3zLcErPfdFZVtUkvHQ_OEWmCH6fvLPXmiSMhMSJKtuwFTZGt8tMFg3-bn7gLflBnRVF3pRPY4VacaLdO6Bq8sgIuHc1N6_2t3JP_ueAO1qOR6ISHa6zR7szQbLI-VH6qISCxdM-3wkQFxDeLnX_VitieVJxU3Mz77UMJqcr30KzEpGJn9KUewCtazEmLz8wF_hn6eKl-7aenzATigaMdYRelWxodtXTAUZgNqe7RmzqYNgcxebvWeefZHCEALzqaDOzWt6gl60Gs2_AjytsNn6PrCbGMzEv2ZMyvGMAEKXSZOsr0WOpm2OktzSNwOla2wSnkCJnIledK13UNWknCOmncOfi1GomArHq_gIalfuyiJ6DjP6Avs-mMmy-BQGwcUujfBjhjyIRfvPRSleAwOMIDwAQnVKQrFOwFQpp5VOHLMYJR0hkJRwQuxcrNIO6DEPlfd8nsRp0bxWKLLcfIlSNwJq8UYvwA-BVN_EzLBPd0DEwwoY3yMlFkRRNTVh_Nrvg9p9wmRX6sjh-SDlCAxoudYcnaO9liOhQaTsQD_n_8_yeSSsQEijkcrptTon7mCXbcAp0NinVjrxrYbyyCEw4eFAopB0ExqErQvDEZZ2mSgG1lXnotK0SkZLkuNjYZYV1shA-7TkdULk4bqrnBub9BR1LUjoQ68sUku4GSmukITohEuOG1O_c0RZyWLpOnp7lorcXfgsGxfW7afIrgkcVEn9oWAJKCxuoKN2C9md9-33NhZBldPwHjPD09DemdKB946MF2NNCdr2PNg86uxZu_oq2LeBNFT5Dw1X5_jhcIZZLjQi5tj91STSkrlfgtv0qEAjtkgcFRb0a0lQx1b-NeT4q5frEnm8m44sMWw3Mo3OVBUPdQXaSx8idzmqB64y2mv3Sv4AGZF5m1MXVF7OH4aytOqNHYJIHnDL26sMIkoq4iYO4HZNmb1eNLe9Jp56EhTz_lTM4n3cK-rVVDvarbpvcFppPt_d1ISQ_4d27AA2Pd-5XjLDlLhTdEZuhshmpdXJ8SLouQdK3E7nqlbGdvvWwS2Qs6VBPrUpkw0sP2AG1lXtpeJ2YdH_y7cL0gb-PuvuuxcNnyv5TwiMRgi5lTW4-T2uO5TTERQ0LXSd66YYesvQfRVBqw2nwav0io7c7RbfeUoHWrRDkGEGw0Bq3UT7A66cg_r5M6iejSN2zB5-Z-doreQq0Qmo5DOUxHO_07hB-cOmWTblZX0iv4CoHqaq2gmm7Tzm3WgV2QfIPViE3IWnEFFhSLj0SkUylFs-6mhnQyNVmLyfMcJqIk-c91u0CscaDzVfQHaUdIVm40 "LAYOUT_AS_SKETCH() Sample") diff --git a/README.md b/README.md index 198b334e..fa437c2f 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ C4-PlantUML includes macros, stereotypes, and other goodies (like VSCode Snippet * [Background](#background) * [License](#license) +>### Update notice +>Supports PlantUML version 1.2019.6 + ## Getting Started At the top of your C4 PlantUML `.puml` file, you need to include the `C4_Context.puml`, `C4_Container.puml` or `C4_Component.puml` file found in the `root` of this repo. @@ -29,7 +32,7 @@ Just remember to change the `!include` statements inside the top of the files. If you want to use the always up-to-date version in this repo, use the following: ```c# -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml ``` Now let's create a C4 Container diagram: @@ -38,7 +41,7 @@ After you have included `C4_Container.puml` you can use the defined macro defini ```csharp @startuml C4_Elements -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml Person(personAlias, "Label", "Optional Description") Container(containerAlias, "Label", "Technology", "Optional Description") @@ -56,7 +59,7 @@ Take a look a look at the following sample of a C4 Container Diagram: ```csharp @startuml Basic Sample -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml Person(admin, "Administrator") System_Boundary(c1, "Sample System") { @@ -74,13 +77,13 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") ## Supported Diagram Types * System Context & System Landscape diagrams - * Import: `!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Context.puml` + * Import: `!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Context.puml` * Macros: `Person`, `Person_Ext`, `System`, `System_Ext`, `SystemDb`, `SystemDb_Ext`, `Boundary`, `System_Boundary`, `Enterprise_Boundary` * Container diagram - * Import: `!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml` + * Import: `!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml` * Additional Macros: `Container`, `ContainerDb`, `Container_Boundary` * Component diagram - * Import: `!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Component.puml` + * Import: `!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Component.puml` * Additional Macros: `Component`, `ComponentDb` Take a look at each of the [C4 Model Diagram Samples](samples/C4CoreDiagrams.md). @@ -100,9 +103,9 @@ It is possible to save them directly inside VS Code: [Creating your own snippets C4-PlantUML also comes with some layout options to make it easy and reuseable to create nice and useful diagrams: -* [LAYOUT_TOP_DOWN or LAYOUT_LEFT_RIGHT](LayoutOptions.md#layout_top_down-or-layout_left_right) -* [LAYOUT_WITH_LEGEND](LayoutOptions.md#layout_with_legend) -* [LAYOUT_AS_SKETCH](LayoutOptions.md#layout_as_sketch) +* [LAYOUT_TOP_DOWN() or LAYOUT_LEFT_RIGHT()](LayoutOptions.md#layout_top_down-or-layout_left_right) +* [LAYOUT_WITH_LEGEND()](LayoutOptions.md#layout_with_legend) +* [LAYOUT_AS_SKETCH()](LayoutOptions.md#layout_as_sketch) ## Advanced Samples diff --git a/samples/C4CoreDiagrams.md b/samples/C4CoreDiagrams.md index 69ac13f0..a317fa84 100644 --- a/samples/C4CoreDiagrams.md +++ b/samples/C4CoreDiagrams.md @@ -8,7 +8,8 @@ The following samples are reproductions with C4-PlantUML from [C4 model core dia Source: [C4_Context Diagram Sample - bigbankplc.puml](C4_Context%20Diagram%20Sample%20-%20bigbankplc.puml) -![System Context diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/VLF1Zjem4BqZyGzJBgKI2vUUUjfT6hKh0KKBgEefcZX3i71iP4yA_7t78Q51qDxiyPitxxsHdmEZvweq_Tu7RPMfSggyWHtp8NoPJ3mUnuNcNPLLWRnobidoMBboyguL-jmjD1t8JAQVdvO6BM_ciqc9WSbBAPr6_8d7Xvh_8rHMEajX0DuHR9qnxgXj0KPR0hGvt3nh7-JaG2Q3SGgDEKUILYRS3UZtPY-_VcpMwS-tzVTqbdnB5bzZbJKRWjLPP9NGj42kiV1OYWeFRrBobXXUqUwZe0iszYx91sU7gWhiIl8Z65mgQAxWQVCsaCSNQ97WjhMDJ50ZE4g6S6WxOmrGALTP3kF1ftxlCd2ONIZJK5-5xn_Awb4nlN2T5s9KlpKTGLlnL29hPm4pLzLnQdyxTLJdNUAUu83d6Ff5I2ibJKuyB56RlrgIftY7S5Mm5dkw5YYUvbfv5zoM8Jcf7Tg2WBeD7PijjztA0aY8vktvWSqLEqy1PFjjeaeAq2JrmEmra577B7kq0LM4oOrODMRVoNHsUnV_9b28G86bhwZs7UnjDYkoUMWCnqsqJGlInIvp_cwp_sclNS_NouRZKUirkLRWin387_W3 "System Context diagram for Internet Banking System") +![System Context diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/0/xLfxRo8v4ly_Khw3bnc9sPiaaCmh5n6qF3gJQ7b4G3ItDxD2fjj0QngxrpP3sDlzxbTsT_DqGtU0xAoq7Ic0NQwgNvNjgYxx9o4nb-EHTtoKHPMtf_SUflAXNZj1tmWNBgFe_2n_bbUzGobzSPNB3Lmv7FVER3RAjLmRSuSrNE8JBxSm_FX8ysCUuq9zUx7rKID-67YiXptqqgfPTQlHwTuquL-bMMksq3NAlBZHJoPWtfPJpwM39t3lM9NRHi2xVVTV2rYVNoW2yTMbFkPuX1pInsDFTiYZB7dkW8u8bSY6VuGl4quuzZ-vZXoYYtn-iME47-j423mWRVTtWixVvPS7Sc9BJ0SUGVyxFaBmj84tONBganj6PJ3e8kWIG-om2M15VUm9SdpqvugsME8U5ljWLUASJI8-sdtenNlz14sAOKppJCwVCKWBXHuRKmVpQR4uKtLLdnZzyslYt-edQ2upxX0Usw5c2W4hYI5nGlMog8QdR2nJp9x-cDfIBOXQwPVcGwTRQdVRFrkToksh7nVXzh3zTS0Lq50VoxBArSeYoH1JPy9TAGb5ae-9OUOfe0qy8YXJOIFNHcrC1QgtOUe7in3r6LCVXJvJCrD9kkR4ANx2d88rhmevrL545Kwm90wGS-IumXuBjQPF42N44KWor2Fe6_PSHr41I4AT2ASHTATvtwqsFpKKPibypO59oK1nLpbQZzlAfMRTTBgjku-t7SN78tsf675tC9IR-6J1dte2kIJDfZAclusPDaAaHiXc-kebGCVY1BtqS8zueCiFdCWnfoWxNv-Pw-liwu3WTJQ3bcOn5WZwD9DLTPEBXKyrrnD8_q8B0bR35RIix66liyNFqAhulCx-MiWfic9oPPKrMyJ3wfSOklvErWL6tH3YEM3JNouMmCuyV9t90EYGSg4z6eEkma49RBjDg2JsaAOKdWb6Vw6vN63tLQiNFmTy8uFdSXd3x3Sg--fbdxEHKemjJBy0nLhF2SgSdXQLladiO6GGABf9H6GYiwXOevTXlqiBfd1wcXHC7FzKY8poOYKs26n4FSPJkoYnXpQ9IEUgj9vwChX2Ee_j3M4XZUUggLscObaAlrLtTbXQWMn23mxAB6C_k6AbFgI6zN2V0jJ3peZIYVCF3CS_49vOYRNKW5HMbm9IRMT4QGL2ddbmK6OP-y4LAxML6fPElbFWQkqCAhL4zJPmU5mnKlQ4RVwYYMw9vnE-stiBi5eAGIg1LJ_GwUUXwpY4_bezLUq9m2jM3njPFQHXrTh8gfM6LMqZgvgHLHRzwodFKbNetcgrcurk-UD2mIb_-VRYGpcpM9dwJyTgDKgrhedy_QNwMoHl_zBkMFLbglFpzvVbgf6fYVpV-dbgqSjOXr4JaT6W2hDSR0bg5eRws_7HbkxoIjrZrPv0iLYboNzuKtv_iwbOH1v1CugzxhDe6-VN5RKlI-flazfYAYGP7LZRbNcoekIRoeURIZwHRPz5sxZfdSosKNNpUpRjNCVltx9xA7r-kklSTclMHwjHLGKys9e94ZECgg8tWEqvAEWT7_rnZPOU-Dq1ClG7T1LMjubYI8E2LHyInQtE6NLazkLXArOfQjB0CQkC3QJBZEV305e0q1JjBO-emuBTuloz1h5UdLmg2mQjgiOtso2nG8cBaKOPga16XCtDihxGBpGaI2PsW-2kzIWJ0rmF1UcH6WIcGfj21wCMRJr_4aEURHzfa1fbf4AvNUm6mK_pwGv8z-RJdM1NU-kWPqTo-tBgcf05eEl2zkdLQi_iLpF4VRWL999DZjsADvLVztQgPAc3EP-xWdIt7p35dWLbvcmIlSM6As4NYG4ByzlhxkzL5KXWIdSDgxNyMlFspMMr-cwlhpKsP4_OfOGld2ydpRoMJvTZITOoi7LqXYFfhLdZtqFpVpB77JD76BPkzO3tR0OyJuPPYSGPpgB3kfSnVAOu2KNBqpfD6DYctROWdrpBbS2HIE7DAfi2TMHIK-1wPel6ghSblXxQf7kBmZEaEuN46HTZ5TwbjZU6dIkw4SVnv2ou5JSMX2l4i40tNv3BZR3Qzw2fEvDrveVty40M6-axPt98K9zvNd172c8aGHZsnwLkbmjzVmPa8u_PsFEcYibCIuC87NDjvfChL4B2rUjdvgWprNlFtH5O1f5mjxa2muvyHjLtD06iBjNIv_iMD0Z5KWzlZtsVSQcKNkGGqWhqQe65O7qvmPn46sN4w4VaUsC1-pBplG3s2gK8BmjvKwK6XMym4S0GWLwHjbgVE-KI1xhns749jG5uEsA6kJrqOH83C2N48T-8nrGqEDln5cEbMRzlDbGmNifyBj-LopVvFMS-8TgTyuSNUVt4vWohY0mvmuVBqcNrScEsyxrg-q-6yqmPZgPRzKv45ywEvyg4Gd47peJcKpvTtDwitG4peGGARrRvq9dGZXRz2pAXH2OzFZBl9CT7qfNWtU1jNGTJM80G0l50RQ_gXg-ASfmI2LiX_QfYRq2hneRbNdii91iH3YbEq0AhDoAkX7qPw2oXY1AnlWweFQ0wqP4_t4TWf6f3sBPXpuKugrAbi0BP2rY6zHVW5wEP5gMo6p6JfsybVtF91F80m3JITr8HxgapTD33vSjIJtJC7k6l1FbughS3hKYaYgvTZR3hpNMnJjNlSDDI6dG0dal3lQpksfofH0DPZ_OG5XH1P7700io8D-s30mWmgaVV3J3Rad426ORdHHQreG65bZA0dHdaP06iv9WAhESA_2BI3i6gQvzptwwP_q4GaGdlCkWBbNFQPTkqOJAA4B3oH3HeTfrlbVM6uHfrlNCVyZ0DdLakKl0dO00Pwly1 "System Context diagram for Internet Banking System") + ### Container Diagram diff --git a/samples/C4_Component Diagram Sample - bigbankplc.puml b/samples/C4_Component Diagram Sample - bigbankplc.puml index 491a725a..27f08507 100644 --- a/samples/C4_Component Diagram Sample - bigbankplc.puml +++ b/samples/C4_Component Diagram Sample - bigbankplc.puml @@ -1,9 +1,9 @@ @startuml -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Component.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Component.puml ' uncomment the following line and comment the first to use locally ' !include C4_Component.puml -LAYOUT_WITH_LEGEND +LAYOUT_WITH_LEGEND() title Component diagram for Internet Banking System - API Application diff --git a/samples/C4_Container Diagram Sample - bigbankplc.puml b/samples/C4_Container Diagram Sample - bigbankplc.puml index 56dccd9c..5b68eea1 100644 --- a/samples/C4_Container Diagram Sample - bigbankplc.puml +++ b/samples/C4_Container Diagram Sample - bigbankplc.puml @@ -1,11 +1,11 @@ @startuml -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml -LAYOUT_TOP_DOWN -'LAYOUT_AS_SKETCH -LAYOUT_WITH_LEGEND +' LAYOUT_TOP_DOWN() +' LAYOUT_AS_SKETCH() +LAYOUT_WITH_LEGEND() title Container diagram for Internet Banking System diff --git a/samples/C4_Container Diagram Sample - message bus.puml b/samples/C4_Container Diagram Sample - message bus.puml index d8485ff7..5b4100ca 100644 --- a/samples/C4_Container Diagram Sample - message bus.puml +++ b/samples/C4_Container Diagram Sample - message bus.puml @@ -1,14 +1,14 @@ @startuml "bigbankplc" -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml skinparam wrapWidth 200 skinparam maxMessageSize 200 -LAYOUT_TOP_DOWN -'LAYOUT_AS_SKETCH -LAYOUT_WITH_LEGEND +LAYOUT_TOP_DOWN() +'LAYOUT_AS_SKETCH() +LAYOUT_WITH_LEGEND() Person(customer, Customer, "A customer") diff --git a/samples/C4_Container Diagram Sample - techtribesjs.puml b/samples/C4_Container Diagram Sample - techtribesjs.puml index dbd05697..a2a8c801 100644 --- a/samples/C4_Container Diagram Sample - techtribesjs.puml +++ b/samples/C4_Container Diagram Sample - techtribesjs.puml @@ -1,11 +1,11 @@ @startuml "techtribesjs" -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml -LAYOUT_TOP_DOWN -'LAYOUT_AS_SKETCH -LAYOUT_WITH_LEGEND +LAYOUT_TOP_DOWN() +'LAYOUT_AS_SKETCH() +LAYOUT_WITH_LEGEND() Person_Ext(anonymous_user, "Anonymous User") diff --git a/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml b/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml index a4b3f4b7..e29f8f52 100644 --- a/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml +++ b/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml @@ -1,11 +1,11 @@ @startuml -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml -'LAYOUT_TOP_DOWN -'LAYOUT_AS_SKETCH -LAYOUT_WITH_LEGEND +'LAYOUT_TOP_DOWN() +'LAYOUT_AS_SKETCH() +LAYOUT_WITH_LEGEND() title System Landscape diagram for Big Bank plc diff --git a/samples/C4_Context Diagram Sample - bigbankplc.puml b/samples/C4_Context Diagram Sample - bigbankplc.puml index 70778cd2..c7550ddd 100644 --- a/samples/C4_Context Diagram Sample - bigbankplc.puml +++ b/samples/C4_Context Diagram Sample - bigbankplc.puml @@ -1,9 +1,9 @@ @startuml -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml -LAYOUT_WITH_LEGEND +LAYOUT_WITH_LEGEND() title System Context diagram for Internet Banking System diff --git a/samples/C4_Context Diagram Sample - enterprise.puml b/samples/C4_Context Diagram Sample - enterprise.puml index c58f636d..c11da10a 100644 --- a/samples/C4_Context Diagram Sample - enterprise.puml +++ b/samples/C4_Context Diagram Sample - enterprise.puml @@ -1,11 +1,11 @@ @startuml "enterprise" -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml -LAYOUT_TOP_DOWN -'LAYOUT_AS_SKETCH -LAYOUT_WITH_LEGEND +LAYOUT_TOP_DOWN() +'LAYOUT_AS_SKETCH() +LAYOUT_WITH_LEGEND() Person(customer, "Customer", "A customer of Widgets Limited.") From 10c4c954c2496c00b39d3bcb65f5e2543975bebe Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Wed, 12 Jun 2019 18:32:54 +0300 Subject: [PATCH 002/250] all links point to adrianvlupu/C4-Builder --- C4_Component.puml | 2 +- C4_Container.puml | 2 +- C4_Context.puml | 2 +- LayoutOptions.md | 8 ++++---- README.md | 12 ++++++------ .../C4_Component Diagram Sample - bigbankplc.puml | 2 +- .../C4_Container Diagram Sample - bigbankplc.puml | 2 +- .../C4_Container Diagram Sample - message bus.puml | 2 +- .../C4_Container Diagram Sample - techtribesjs.puml | 2 +- ...ontext Diagram Sample - bigbankplc-landscape.puml | 2 +- samples/C4_Context Diagram Sample - bigbankplc.puml | 2 +- samples/C4_Context Diagram Sample - enterprise.puml | 2 +- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/C4_Component.puml b/C4_Component.puml index d645f95f..3e6c15fc 100644 --- a/C4_Component.puml +++ b/C4_Component.puml @@ -1,4 +1,4 @@ -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml diff --git a/C4_Container.puml b/C4_Container.puml index 680c23ef..0c6a195e 100644 --- a/C4_Container.puml +++ b/C4_Container.puml @@ -1,4 +1,4 @@ -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml diff --git a/C4_Context.puml b/C4_Context.puml index 13777983..143def23 100644 --- a/C4_Context.puml +++ b/C4_Context.puml @@ -1,4 +1,4 @@ -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4.puml ' uncomment the following line and comment the first to use locally ' !include C4.puml diff --git a/LayoutOptions.md b/LayoutOptions.md index bb9cbc38..3a10c499 100644 --- a/LayoutOptions.md +++ b/LayoutOptions.md @@ -12,7 +12,7 @@ With the two macros `LAYOUT_TOP_DOWN()` and `LAYOUT_LEFT_RIGHT()` it is possible ```csharp @startuml LAYOUT_TOP_DOWN Sample -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml /' Not needed because this is the default '/ LAYOUT_TOP_DOWN() @@ -34,7 +34,7 @@ Using `LAYOUT_LEFT_RIGHT` ```csharp @startuml LAYOUT_LEFT_RIGHT Sample -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml LAYOUT_LEFT_RIGHT() @@ -61,7 +61,7 @@ This can be enabled with `LAYOUT_WITH_LEGEND()`. ```csharp @startuml LAYOUT_WITH_LEGEND Sample -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml LAYOUT_WITH_LEGEND() @@ -93,7 +93,7 @@ With `LAYOUT_AS_SKETCH()` you can make a difference. ```csharp @startuml LAYOUT_AS_SKETCH Sample -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml LAYOUT_AS_SKETCH() diff --git a/README.md b/README.md index fa437c2f..cd00c8de 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Just remember to change the `!include` statements inside the top of the files. If you want to use the always up-to-date version in this repo, use the following: ```c# -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml ``` Now let's create a C4 Container diagram: @@ -41,7 +41,7 @@ After you have included `C4_Container.puml` you can use the defined macro defini ```csharp @startuml C4_Elements -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml Person(personAlias, "Label", "Optional Description") Container(containerAlias, "Label", "Technology", "Optional Description") @@ -59,7 +59,7 @@ Take a look a look at the following sample of a C4 Container Diagram: ```csharp @startuml Basic Sample -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml Person(admin, "Administrator") System_Boundary(c1, "Sample System") { @@ -77,13 +77,13 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") ## Supported Diagram Types * System Context & System Landscape diagrams - * Import: `!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Context.puml` + * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Context.puml` * Macros: `Person`, `Person_Ext`, `System`, `System_Ext`, `SystemDb`, `SystemDb_Ext`, `Boundary`, `System_Boundary`, `Enterprise_Boundary` * Container diagram - * Import: `!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Container.puml` + * Import: `!include https://raw.githubusercontent.com/adrianvlupu/latest/C4_Container.puml` * Additional Macros: `Container`, `ContainerDb`, `Container_Boundary` * Component diagram - * Import: `!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-1/C4_Component.puml` + * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Component.puml` * Additional Macros: `Component`, `ComponentDb` Take a look at each of the [C4 Model Diagram Samples](samples/C4CoreDiagrams.md). diff --git a/samples/C4_Component Diagram Sample - bigbankplc.puml b/samples/C4_Component Diagram Sample - bigbankplc.puml index 27f08507..df55e42c 100644 --- a/samples/C4_Component Diagram Sample - bigbankplc.puml +++ b/samples/C4_Component Diagram Sample - bigbankplc.puml @@ -1,5 +1,5 @@ @startuml -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Component.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Component.puml ' uncomment the following line and comment the first to use locally ' !include C4_Component.puml diff --git a/samples/C4_Container Diagram Sample - bigbankplc.puml b/samples/C4_Container Diagram Sample - bigbankplc.puml index 5b68eea1..81e6d86e 100644 --- a/samples/C4_Container Diagram Sample - bigbankplc.puml +++ b/samples/C4_Container Diagram Sample - bigbankplc.puml @@ -1,5 +1,5 @@ @startuml -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml diff --git a/samples/C4_Container Diagram Sample - message bus.puml b/samples/C4_Container Diagram Sample - message bus.puml index 5b4100ca..c3f9c3ef 100644 --- a/samples/C4_Container Diagram Sample - message bus.puml +++ b/samples/C4_Container Diagram Sample - message bus.puml @@ -1,5 +1,5 @@ @startuml "bigbankplc" -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml diff --git a/samples/C4_Container Diagram Sample - techtribesjs.puml b/samples/C4_Container Diagram Sample - techtribesjs.puml index a2a8c801..c567e560 100644 --- a/samples/C4_Container Diagram Sample - techtribesjs.puml +++ b/samples/C4_Container Diagram Sample - techtribesjs.puml @@ -1,5 +1,5 @@ @startuml "techtribesjs" -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml diff --git a/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml b/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml index e29f8f52..111e3094 100644 --- a/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml +++ b/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml @@ -1,5 +1,5 @@ @startuml -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml diff --git a/samples/C4_Context Diagram Sample - bigbankplc.puml b/samples/C4_Context Diagram Sample - bigbankplc.puml index c7550ddd..5c298dec 100644 --- a/samples/C4_Context Diagram Sample - bigbankplc.puml +++ b/samples/C4_Context Diagram Sample - bigbankplc.puml @@ -1,5 +1,5 @@ @startuml -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml diff --git a/samples/C4_Context Diagram Sample - enterprise.puml b/samples/C4_Context Diagram Sample - enterprise.puml index c11da10a..68426c51 100644 --- a/samples/C4_Context Diagram Sample - enterprise.puml +++ b/samples/C4_Context Diagram Sample - enterprise.puml @@ -1,5 +1,5 @@ @startuml "enterprise" -!include https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Context.puml ' uncomment the following line and comment the first to use locally ' !include C4_Context.puml From ae8d20e2c2d4f16b1edd3f1733172c59a51bd88a Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Wed, 12 Jun 2019 18:36:16 +0300 Subject: [PATCH 003/250] component diagram without legend used white font --- C4_Component.puml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/C4_Component.puml b/C4_Component.puml index d645f95f..c52336c2 100644 --- a/C4_Component.puml +++ b/C4_Component.puml @@ -16,14 +16,14 @@ ' ################################## skinparam rectangle<> { - StereotypeFontColor $ELEMENT_FONT_COLOR + StereotypeFontColor #000000 FontColor #000000 BackgroundColor $COMPONENT_BG_COLOR BorderColor #78A8D8 } skinparam database<> { - StereotypeFontColor $ELEMENT_FONT_COLOR + StereotypeFontColor #000000 FontColor #000000 BackgroundColor $COMPONENT_BG_COLOR BorderColor #78A8D8 From 3cec2b1cea8a4184e974dffecccb166ecdf5ee19 Mon Sep 17 00:00:00 2001 From: Michael Grolinger Date: Mon, 10 Dec 2018 16:56:03 +0100 Subject: [PATCH 004/250] using dashed arrows and full arrowheads, which are more similar to the original appearance Signed-off-by: Michael Grolinger --- C4.puml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/C4.puml b/C4.puml index d28711a3..868f9363 100644 --- a/C4.puml +++ b/C4.puml @@ -65,35 +65,35 @@ center footer Warning: Created for discussion, needs to b !define Rel_(e_alias1, e_alias2, e_label, e_direction="") e_alias1 e_direction e_alias2 : "===e_label" !define Rel_(e_alias1, e_alias2, e_label, e_techn, e_direction="") e_alias1 e_direction e_alias2 : "===e_label\n//[e_techn]//" -!define Rel(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-->") -!define Rel(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-->") +!define Rel(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]->>") +!define Rel(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]->>") -!define Rel_Back(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<--") -!define Rel_Back(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<--") +!define Rel_Back(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<<-[dashed]-") +!define Rel_Back(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<<-[dashed]-") -!define Rel_Neighbor(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "->") -!define Rel_Neighbor(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "->") +!define Rel_Neighbor(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]>>") +!define Rel_Neighbor(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]>>") -!define Rel_Back_Neighbor(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<-") -!define Rel_Back_Neighbor(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<-") +!define Rel_Back_Neighbor(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<<[dashed]-") +!define Rel_Back_Neighbor(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<<[dashed]-") -!define Rel_D(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-DOWN->") -!define Rel_D(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-DOWN->") +!define Rel_D(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]DOWN->>") +!define Rel_D(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]DOWN->>") !define Rel_Down(e_from,e_to, e_label) Rel_D(e_from,e_to, e_label) !define Rel_Down(e_from,e_to, e_label, e_techn) Rel_D(e_from,e_to, e_label, e_techn) -!define Rel_U(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-UP->") -!define Rel_U(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-UP->") +!define Rel_U(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]UP->>") +!define Rel_U(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]UP->>") !define Rel_Up(e_from,e_to, e_label) Rel_U(e_from,e_to, e_label) !define Rel_Up(e_from,e_to, e_label, e_techn) Rel_U(e_from,e_to, e_label, e_techn) -!define Rel_L(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-LEFT->") -!define Rel_L(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-LEFT->") +!define Rel_L(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]LEFT->>") +!define Rel_L(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]LEFT->>") !define Rel_Left(e_from,e_to, e_label) Rel_L(e_from,e_to, e_label) !define Rel_Left(e_from,e_to, e_label, e_techn) Rel_L(e_from,e_to, e_label, e_techn) -!define Rel_R(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-RIGHT->") -!define Rel_R(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-RIGHT->") +!define Rel_R(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]RIGHT->>") +!define Rel_R(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]RIGHT->>") !define Rel_Right(e_from,e_to, e_label) Rel_R(e_from,e_to, e_label) !define Rel_Right(e_from,e_to, e_label, e_techn) Rel_R(e_from,e_to, e_label, e_techn) From 41777af46c2e2616e22a827ee19abcc8d53c70e8 Mon Sep 17 00:00:00 2001 From: Michael Grolinger Date: Wed, 31 Jul 2019 17:44:56 +0200 Subject: [PATCH 005/250] using full arrow heads to be more aligned to the original graphics --- C4.puml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/C4.puml b/C4.puml index 868f9363..6edb5686 100644 --- a/C4.puml +++ b/C4.puml @@ -65,35 +65,35 @@ center footer Warning: Created for discussion, needs to b !define Rel_(e_alias1, e_alias2, e_label, e_direction="") e_alias1 e_direction e_alias2 : "===e_label" !define Rel_(e_alias1, e_alias2, e_label, e_techn, e_direction="") e_alias1 e_direction e_alias2 : "===e_label\n//[e_techn]//" -!define Rel(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]->>") -!define Rel(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]->>") +!define Rel(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-->>") +!define Rel(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-->>") -!define Rel_Back(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<<-[dashed]-") -!define Rel_Back(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<<-[dashed]-") +!define Rel_Back(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<<--") +!define Rel_Back(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<<--") -!define Rel_Neighbor(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]>>") -!define Rel_Neighbor(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]>>") +!define Rel_Neighbor(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "->>") +!define Rel_Neighbor(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "->>") -!define Rel_Back_Neighbor(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<<[dashed]-") -!define Rel_Back_Neighbor(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<<[dashed]-") +!define Rel_Back_Neighbor(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<<-") +!define Rel_Back_Neighbor(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<<-") -!define Rel_D(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]DOWN->>") -!define Rel_D(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]DOWN->>") +!define Rel_D(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-DOWN->>") +!define Rel_D(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-DOWN->>") !define Rel_Down(e_from,e_to, e_label) Rel_D(e_from,e_to, e_label) !define Rel_Down(e_from,e_to, e_label, e_techn) Rel_D(e_from,e_to, e_label, e_techn) -!define Rel_U(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]UP->>") -!define Rel_U(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]UP->>") +!define Rel_U(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-UP->>") +!define Rel_U(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-UP->>") !define Rel_Up(e_from,e_to, e_label) Rel_U(e_from,e_to, e_label) !define Rel_Up(e_from,e_to, e_label, e_techn) Rel_U(e_from,e_to, e_label, e_techn) -!define Rel_L(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]LEFT->>") -!define Rel_L(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]LEFT->>") +!define Rel_L(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-LEFT->>") +!define Rel_L(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-LEFT->>") !define Rel_Left(e_from,e_to, e_label) Rel_L(e_from,e_to, e_label) !define Rel_Left(e_from,e_to, e_label, e_techn) Rel_L(e_from,e_to, e_label, e_techn) -!define Rel_R(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-[dashed]RIGHT->>") -!define Rel_R(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-[dashed]RIGHT->>") +!define Rel_R(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-RIGHT->>") +!define Rel_R(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-RIGHT->>") !define Rel_Right(e_from,e_to, e_label) Rel_R(e_from,e_to, e_label) !define Rel_Right(e_from,e_to, e_label, e_techn) Rel_R(e_from,e_to, e_label, e_techn) From 599aa9d81fc85a42e8462b771af11ff13a3cb462 Mon Sep 17 00:00:00 2001 From: iecg Date: Wed, 21 Aug 2019 12:00:13 -0400 Subject: [PATCH 006/250] Update LayoutOptions.md --- LayoutOptions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LayoutOptions.md b/LayoutOptions.md index c5b64b4e..1b11af0b 100644 --- a/LayoutOptions.md +++ b/LayoutOptions.md @@ -63,7 +63,7 @@ This can be enabled with `LAYOUT_WITH_LEGEND`. @startuml LAYOUT_WITH_LEGEND Sample !includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml -LAYOUT_WITH_LEGEND +LAYOUT_WITH_LEGEND() Person(admin, "Administrator") System_Boundary(c1, 'Sample') { @@ -96,7 +96,7 @@ With `LAYOUT_AS_SKETCH` you can make a difference. @startuml LAYOUT_AS_SKETCH Sample !includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml -LAYOUT_AS_SKETCH +LAYOUT_AS_SKETCH() Person(admin, "Administrator") System_Boundary(c1, 'Sample') { From 0eccd9686c0b8cadd47f0a5aeadc243942bd1ba1 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 19 Oct 2019 14:53:03 +0300 Subject: [PATCH 007/250] added deployment diagram support --- .vscode/C4.code-snippets | 22 ++++++++ C4_Deployment.puml | 19 +++++++ samples/C4CoreDiagrams.md | 5 ++ ...eployment Diagram Sample - bigbankplc.puml | 51 +++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 C4_Deployment.puml create mode 100644 samples/C4_Deployment Diagram Sample - bigbankplc.puml diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index 275dac11..ea01625c 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -215,5 +215,27 @@ "}" ], "description": "Add a generic boundary to C4 diagram." + }, + "C4_Deployment_Node": { + "scope": "diagram", + "prefix": "Deployment Node", + "body": [ + "Deployment_Node(${1:alias}, \"${2:label}\"){", + "\t$0", + "}" + ], + "description": "Add a deployment node to C4 diagram." + }, + "C4_Deployment_Node_Type": { + "scope": "diagram", + "prefix": [ + "Deployment Node with type" + ], + "body": [ + "Deployment_Node(${1:alias}, \"${2:label}\", \"${3:type}\"){", + "\t$0", + "}" + ], + "description": "Add a deployment node to C4 diagram." } } \ No newline at end of file diff --git a/C4_Deployment.puml b/C4_Deployment.puml new file mode 100644 index 00000000..2038bae9 --- /dev/null +++ b/C4_Deployment.puml @@ -0,0 +1,19 @@ +!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +' uncomment the following line and comment the first to use locally +' !include C4_Container.puml + +' Styling +' ################################## + +skinparam rectangle<> { + Shadowing false + StereotypeFontSize 0 + FontColor #000000 + BorderColor #A2A2A2 + BorderStyle solid +} + +' Elements +' ################################## +!define Deployment_Node(e_alias, e_label) rectangle "==e_label" <> as e_alias +!define Deployment_Node(e_alias, e_label, e_type) rectangle "==e_label\n[e_type]" <> as e_alias \ No newline at end of file diff --git a/samples/C4CoreDiagrams.md b/samples/C4CoreDiagrams.md index 69ac13f0..74b084e5 100644 --- a/samples/C4CoreDiagrams.md +++ b/samples/C4CoreDiagrams.md @@ -31,3 +31,8 @@ Source: [C4_Context Diagram Sample - bigbankplc-landscape.puml](C4_Context%20Dia ![System Landscape diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/jPPTRzis58Rl_IiEijjuTj8koGh7g9sFhS2o5hE3N2H1S28UIuGbKYFfEkxI_pwIfZGgiZ8KQEahyNoSvxnw8-IzDgZCgiXxUib5YGeBOBJ0LMxcz6GcEKz5GS90GiAGYhBM2iiRpam6XyDXT5_WqnLfZIdD-1U2Wr_YeAB4e4XpWdzwOC_Ca29fDYLTIc6s1OS-eZDaSir52WlCDVM-HbqcIibrw70cSwdWfoD__8thrBwD-t_THJGQFSgLOAWsut55rsJe8Xws1hp0UEkFlvrAnKXrtS_C9YTWg3DY3SeIaoMcRSPEdc-OtoL7IKfBqJ4eTBZqnyTttqujUAeST8WDJzuU7a_RBCFZDzEZoouMQqLI0lE77mDrTE9-RQYJYVjrGUcDDbHyRvQ3WwEJwNcRvStPyUNPy7y5-Z5Gl_hpYa0PPmIw7jRBAIN1GF4qCxtdKsWS-potIV3SUnu5Gun31BOls8V2Qwb3rOvnJf1hx1Esk_lxGDokhNCitXQoPxZ92MRRm1yec4xGqZ6EgLDv8HLCUMf54KieywHNomvxfwUVF0lcFkm-5MShRMH1waxS2PX04Xv1Bi1a18ysRH_Mt6HGXb9_1vWaLd2ZVzw3w6yFTTsXEJScWjiBOKYLYckwtuFuA-4R38CP6Wq-k191fW8F0conyrok_vkimKZup6aDN5Wr2ZHS2a0xnRYTk6fki0ye61Iu92XnKr2rL6rDrBx03WrsRTDDvbTT95uyfd0D2UhCTswx7pMWsT7tebyWhrpW9ymp0Yw2EwvuegIM2mCNJqbcgmWehkYUvf8wjxb2Avp2WdQ9FJDIaGRCyyeZYRse5DeXUIt6VYIvKIWq9YxDFf59NaCDD6tGohmm8_MP9sJXSB7mc7L8Xv1s8VyokAYjtPowoyOFeRuzt7rruEDYqPmxOGKNN1iL910CzAeifJBVIl1e-pz8tzz-iIeUw8zVk17UEPhJQqrwBqhxwyDllyzjCfeguoOOKNidmahR7b75gD-FRH6APYIO3gvoTjunegLLA9tefOQ_LwIT4gxsJWm68ys_qBk3m_7jd78gCodeVZHmb-F1OA_tOhN--SURF-s4rxcgLTogDLHjcqYVTl_NirkB1PwEzEYDGV_wKqTUuBpDE6Caxi_xq8HgXUilQgn2dN0T9RmdmTm_n_y2 "System Landscape diagram for Internet Banking System") +### Deployment Diagram + +Source: [C4_Deployment](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc.puml) + +![Deployment Diagram for Internet Banking System - Live](https://www.plantuml.com/plantuml/svg/0/xLfhRziu5lqU8F-1utveKoJnevasMoJ1-9KcNSSs_DZCx7HWq19jSqk90adbCTlyzxtKmzRJjfoqG85LW5QMxZqyzv2yV8Y_IOM5SYssl_SQ_K9jWxacSGL32wKS-R5S5lZ-U4xLmfswaWY3suhOwjZWLdb03InCtgN48QpSF3dgCsohyKsdR66fY817aoROOseJSUm4PRWs-5g0WTI2e1bdZDzJUuuOM25icoZscWe9Tnn1sOXn0pFs62MAe8WMSHX_r2v16TeWmkOGtH4XARTHzRXoND5lmzZykDO74-1nneNKTwysNjhZ5vFCT43jJlkctHrDBdlmJxFNwGtGgqllyd67wX42dnS77hMRLrqVTdZzxpQgrlHR-PNQ3XROGc26NQP6v47L6PtRdgG6_4D4tF1UOEUMccg1QfLAz8M57sw8b7XEXlHlWgg_LkAEWXWAstD6q7_tzn1SGy0cN3qwv19gtNUg-Q_a0fj-DSymasH_xod15YiynV8beEf2yFiGnwiszEgzT_cFD63EusKvJpcHdfrDkMkRM3nUN2of9ldayA-aYZ_nBlznWmkJYDmNkfaGK4akY1dGUuqw-96xgd3JOHouTkf_zCQZINqu6VwpFMfUHSETOkFhNEX00pxjThlHQaPD5j1HxmLLa0kG4Yx9Q7awq2ws22erkKKDDCIsH3V3qlwUtmgXwtFztzcCwvQfIpeNnBounS86DJ-UbVMB2zGK12jYWhb09fM6AtLVFaGs8QRKgM5Aq1rcrDHM42InpLMSqHuJX3pgzIUjtcqNN1tFdIl5WJNLjGp8AOTE-t8q6Ln_kXeXHcPUDX9qlb1H5rq93RzfKB93cWXy7z-G2OI2vI4Y4uQdX1r4kbdf_3nuMaAnbeWb2losGDGtkc5c8t-npoIqre-9z7Bnf-_qrrbPlxvOGq07Fo0CQs7aWZh5nG3lIKYxUXWYrs8HBBK_BvKEGfDgzCNI3ttKyIsbArQE8iR2VbQ1N-noELzJ3H-AMYwN4Z80kvdWrY4OyaYJ28YdNnsYqj7HHUbWCyWojhLeo_X3sBXu3KWKRq8Npp_5CUCTe9qT7IL8hi5AKrrdj4AFutS9zDaf5xj8cbHqFLXXQNEKZPQoYyHP2c_0t47gDFVMBXBhZ9pMkVKo0kU0ytjx3TMSCBR4I73S54XIm_4k6exxwI37BwDW9hIpXkHu6_Lo41BinWMrw-oYdHxaqo5sNaQz772OJAoXsjb6mLoC1CTEGGq7ksZepP7ISGvUHiGyT3qLMyDsi8sC-I09ceCjT0mdvkYAC8ViicW4_rN6qDZy84Z2wEZF1ONvhVrNwyXx4NSQRt0QPpaDDZWDifmw6vmweTFAhTyU37lTIUDJk0wkd9xKFZGYQ-NVH-r1jzwPf2pVd-g_bUNmZ-6eVHCng5RVdpPQ6L0fotzuruwBxymbeQvZRaSMXB6rdx-4Icy395U3UHQDn68ieKt6wh7ouLtZ_UMwHInv08esPfCVIpslVZDYEAthltKno4UfYFMZg2UQKGRZTyqFbytALgh_MEfvNM5xrSFDcPz6z1NXdqpp5zdJkRqUNKqwxK_jBYH4ICS4oMMm-tkCp8bj-ZiO-tlVpb7iWjyZC4FVuDLPefjU12R8png-JLwVNXg7DH3pIiXouLdwLPI0pR2Cmwwy82m_kAnDeDUepOZU0zrXEEvxp0jipIpJQjR6J0wQjyT0f27ozcM-sA55RX79GYRj1rM0TdfOoEUV2LqmXlNbHKPxhueB1BBix5dySz0ASiyi8bd8hlflmVz5zTygcDOq8vJbldtX2iY0Yz3FmDsf1bhJd3h88Lwa2dAmYqMngGwUjwtSrXljZg2IJDRiCA_PAYwj4A8Bhw0DxeZfUyStZfemejQlk-r1PAf-ykwqrVhr9QVgHlWryaTD1D9XxJAB-Gbe_t_cyeoPoxUpjE0-yhBcl-i4P_cHFljZaR_zaJsY5FYsWU8DEIknRa5aunYtFQDaBivZby4lP_GAfChC-zz9gNLCDWr5tqEgvmrOox1s7LkM0FxmaZaAsDmaB_7zlk9T6PcnNjD_wU_taZEw-dnVjB-66gtEkqow44c12MOGU5PxsWJwOb-DCpY00EdZ2EaXuOrNeueg5gMBMXJFTGNhym7NUhPY4mK3clrLLwa_rK17g4FlY7PFnkam0rfDWyuz5mG_IudVNjS9JiwK3e96auGnzHRrbCwdu7I47VhsxTilwk5KOusdhgrSL7r_N3b1dT5mYP65WnriB0XurRqRDEAMWLKf-G2T7Z_4SFopBc7o10BQet-Dwex3gE5zYzSWd_4TzivO3M5A1_BS_Akf7_S5luFHLgRrcxcszsqRQaezeZiAtkWpZ9Rbgz6eFqHGnB7kQ2659__sALkaG1zpMgb6rD8_2-l41JQOrgddtK05zmMr82UKLi-gDIDV8qYRvXHiMq5Ur7xXgGKOcyF7Q0YYMrY_7IekG29z20xwm9nA9JnhH6reUfPtVuWMtX4TX5sr0BA1zCWGnDG_8S4S8cmOH4h4-5ntBsNif60jhc1jHmLhKGc71DAwMLJ4si-duZIgtZsP-htrPCVUMdjkTmK6u75BfbjsrnPXL1zfz4v8IWNc1WhEPNhM-d6g9qlgvMm7pmd2gs9oP7lAofKMrpoRhbJS8kArHF20wcDfv8uQn8_QWT_NlI62P5otJS6fkGny5R3l1_OtFW2uQU_VCVHWQiSo4aQCMbIV_vBkL48yV9OTNpnJAOwCWAVqqXRuK14dx8MU6QZ1BISUgNxYwW50awR2u9BF5BgbDamTfERaHsvXepVC7IIc0eo92EgwuV_IY9yurtNJN0WexX3TyByfOnXTKa5cFDvoLY9A1-l-v5ThNrThHkiP6e8wVgkestENOH5Nbx7d2GfD5mLXBLjIs7pqqQEmflqHwGP_XKBrkAGFykh3UvhDVs1nvOyd6a5xUQ4LS_7wa2_9gdjmBp9ZLOqHkg6ZLumt50m8DYNoFcDglVJnHX8M-BdLQ2OyQWLSD7xeuTSHc7dp2h3rfZM_mOBEjTZ_0000 "Deployment Diagram for Internet Banking System - Live") diff --git a/samples/C4_Deployment Diagram Sample - bigbankplc.puml b/samples/C4_Deployment Diagram Sample - bigbankplc.puml new file mode 100644 index 00000000..55b23580 --- /dev/null +++ b/samples/C4_Deployment Diagram Sample - bigbankplc.puml @@ -0,0 +1,51 @@ +@startuml +!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +' uncomment the following line and comment the first to use locally +' !include C4_Deployment.puml + +'LAYOUT_AS_SKETCH +LAYOUT_WITH_LEGEND() + +title Deployment Diagram for Internet Banking System - Live + +Deployment_Node(plc, "Big Bank plc", "Big Bank plc data center"){ + Deployment_Node(dn, "bigbank-api***\tx8", "Ubuntu 16.04 LTS"){ + Deployment_Node(apache, "Apache Tomcat", "Apache Tomcat 8.x"){ + Container(api, "API Application", "Java and Spring MVC", "Provides Internet Banking functionality via a JSON/HTTPS API.") + } + } + Deployment_Node(bigbankdb01, "bigbank-db01", "Ubuntu 16.04 LTS"){ + Deployment_Node(oracle, "Oracle - Primary", "Oracle 12c"){ + ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + } + } + Deployment_Node(bigbankdb02, "bigbank-db02", "Ubuntu 16.04 LTS"){ + Deployment_Node(oracle2, "Oracle - Secondary", "Oracle 12c"){ + ContainerDb(db2, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + } + } + Deployment_Node(bb2, "bigbank-web***\tx4", "Ubuntu 16.04 LTS"){ + Deployment_Node(apache2, "Apache Tomcat", "Apache Tomcat 8.x"){ + Container(web, "Web Application", "Java and Spring MVC", "Delivers the static content and the Internet Banking single page application.") + } + } +} + +Deployment_Node(mob, "Customer's mobile device", "Apple IOS or Android"){ + Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") +} + +Deployment_Node(comp, "Customer's computer", "Mircosoft Windows of Apple macOS"){ + Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox"){ + Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") + } +} + +Rel(mobile, api, "Makes API calls to", "json/HTTPS") +Rel(spa, api, "Makes API calls to", "json/HTTPS") +Rel(web, spa, "Delivers to the customer's web browser") +Rel(api, db, "Reads from and writes to", "JDBC") +Rel(api, db2, "Reads from and writes to", "JDBC") +Rel(db, db2, "Replicates data to") + +@enduml \ No newline at end of file From a361367a1d26fef088b9ba482c41bfc160e0f9b4 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 19 Oct 2019 15:05:17 +0300 Subject: [PATCH 008/250] support for deployment diagrams --- C4_Deployment.puml | 10 +++++++--- samples/C4_Deployment Diagram Sample - bigbankplc.puml | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/C4_Deployment.puml b/C4_Deployment.puml index 2038bae9..31d489a9 100644 --- a/C4_Deployment.puml +++ b/C4_Deployment.puml @@ -1,4 +1,4 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml @@ -15,5 +15,9 @@ skinparam rectangle<> { ' Elements ' ################################## -!define Deployment_Node(e_alias, e_label) rectangle "==e_label" <> as e_alias -!define Deployment_Node(e_alias, e_label, e_type) rectangle "==e_label\n[e_type]" <> as e_alias \ No newline at end of file +!unquoted function Deployment_Node($alias, $label) +!return 'rectangle "=='+$label+'" <> as '+$alias +!endfunction +!unquoted function Deployment_Node($alias, $label, $type) +!return 'rectangle "=='+$label+'\n['+$type+']" <> as '+$alias +!endfunction diff --git a/samples/C4_Deployment Diagram Sample - bigbankplc.puml b/samples/C4_Deployment Diagram Sample - bigbankplc.puml index 55b23580..54624cc6 100644 --- a/samples/C4_Deployment Diagram Sample - bigbankplc.puml +++ b/samples/C4_Deployment Diagram Sample - bigbankplc.puml @@ -1,5 +1,5 @@ @startuml -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Deployment.puml ' uncomment the following line and comment the first to use locally ' !include C4_Deployment.puml From f79888fcc058af134c393d2c8e5f7ee8c00c789d Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 19 Oct 2019 15:08:22 +0300 Subject: [PATCH 009/250] updated readme with deployment diagram --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 198b334e..2d708b84 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,9 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") * Component diagram * Import: `!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Component.puml` * Additional Macros: `Component`, `ComponentDb` +* Deployment diagram + * Import: `!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Deployment.puml` + * Additional Macros: `Deployment_Node` Take a look at each of the [C4 Model Diagram Samples](samples/C4CoreDiagrams.md). From c95bdf6229a487b50ee435dfdd7394d33bcc251c Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 19 Oct 2019 15:10:03 +0300 Subject: [PATCH 010/250] updated readme to include deployment diagrams --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e673bc2f..7c2d1250 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Component.puml` * Additional Macros: `Component`, `ComponentDb` * Deployment diagram - * Import: `!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Deployment.puml` + * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Deployment.puml` * Additional Macros: `Deployment_Node` Take a look at each of the [C4 Model Diagram Samples](samples/C4CoreDiagrams.md). From ce171edb8ea319d686cf1e70818a0618b72c4217 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 26 Oct 2019 18:01:50 +0300 Subject: [PATCH 011/250] code-snippets include Database Container and Database Component --- .vscode/C4.code-snippets | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index 275dac11..0800b8bd 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -59,6 +59,24 @@ ], "description": "Add Container with Description to C4 diagram" }, + "C4_ContainerDb": { + "scope": "diagram", + "prefix": "Database Container", + "body": [ + "ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\")", + "$0" + ], + "description": "Add Database Container to C4 diagram" + }, + "C4_ContainerDb_Descr": { + "scope": "diagram", + "prefix": "Database Container with Description", + "body": [ + "ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")", + "$0" + ], + "description": "Add Database Container with Description to C4 diagram" + }, "C4_Container_Boundary": { "scope": "diagram", "prefix": [ @@ -90,6 +108,24 @@ ], "description": "Add Component with Description to C4 diagram" }, + "C4_ComponentDb": { + "scope": "diagram", + "prefix": "Database Component", + "body": [ + "ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\")", + "$0" + ], + "description": "Add Database Component to C4 diagram" + }, + "C4_ComponentDb_Descr": { + "scope": "diagram", + "prefix": "Database Component with Description", + "body": [ + "ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")", + "$0" + ], + "description": "Add Database Component with Description to C4 diagram" + }, "C4_System": { "scope": "diagram", "prefix": "System", From 646491e8aee7564da8b1c2bc13576413443d00ad Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 28 Dec 2019 15:28:12 +0200 Subject: [PATCH 012/250] fix dead snippets anchor #10 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c2d1250..d1e3ab86 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ C4-PlantUML includes macros, stereotypes, and other goodies (like VSCode Snippet * [Getting Started](#getting-started) * [Supported Diagram Types](#supported-diagram-types) -* [Snippets for Visual Studio Code](#snipptes-for-visual-studio-code) +* [Snippets for Visual Studio Code](#snippets-for-visual-studio-code) * [Layout Options](#layout-options) * [Samples](#advanced-samples) * [Background](#background) From fb4391b7ab7d52c9e943898a712ed3a9362b0fd2 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 28 Dec 2019 15:31:26 +0200 Subject: [PATCH 013/250] Use port instead of post for SQL/JDBC in sample #28 --- samples/C4_Container Diagram Sample - techtribesjs.puml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/C4_Container Diagram Sample - techtribesjs.puml b/samples/C4_Container Diagram Sample - techtribesjs.puml index c567e560..60451972 100644 --- a/samples/C4_Container Diagram Sample - techtribesjs.puml +++ b/samples/C4_Container Diagram Sample - techtribesjs.puml @@ -34,11 +34,11 @@ Rel(anonymous_user, web_app, "Uses", "HTTPS") Rel(aggregated_user, web_app, "Uses", "HTTPS") Rel(administration_user, web_app, "Uses", "HTTPS") -Rel(web_app, rel_db, "Reads from and writes to", "SQL/JDBC, post 3306") +Rel(web_app, rel_db, "Reads from and writes to", "SQL/JDBC, port 3306") Rel(web_app, filesystem, "Reads from") Rel(web_app, nosql, "Reads from", "MongoDB wire protocol, port 27017") -Rel_U(updater, rel_db, "Reads from and writes data to", "SQL/JDBC, post 3306") +Rel_U(updater, rel_db, "Reads from and writes data to", "SQL/JDBC, port 3306") Rel_U(updater, filesystem, "Writes to") Rel_U(updater, nosql, "Reads from and writes to", "MongoDB wire protocol, port 27017") From c8a79dbc2896e3d5d88c6dbd1a603d58557c7265 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 28 Dec 2019 15:54:32 +0200 Subject: [PATCH 014/250] !include snippets --- .vscode/C4.code-snippets | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index 80510922..920335a8 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -1,4 +1,40 @@ { + "C4_Include_Context": { + "scope": "diagram", + "prefix": "Include C4 Context Diagram", + "body": [ + "!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Context.puml", + "$0" + ], + "description": "Include C4 Context Diagram" + }, + "C4_Include_Container": { + "scope": "diagram", + "prefix": "Include C4 Container Diagram", + "body": [ + "!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Container.puml", + "$0" + ], + "description": "Include C4 Container Diagram" + }, + "C4_Include_Component": { + "scope": "diagram", + "prefix": "Include C4 Component Diagram", + "body": [ + "!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Component.puml", + "$0" + ], + "description": "Include C4 Component Diagram" + }, + "C4_Include_Deployment": { + "scope": "diagram", + "prefix": "Include C4 Deployment Diagram", + "body": [ + "!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Deployment.puml", + "$0" + ], + "description": "Include C4 Deployment Diagram" + }, "C4_Person": { "scope": "diagram", "prefix": "Person", From 362c9801fb1b1aaf3437f8c6450c4aa03907c5c2 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 28 Dec 2019 17:32:34 +0200 Subject: [PATCH 015/250] #27 Add deployment and dynamic diagrams support #34https://github.com/RicardoNiepel/C4-PlantUML/pull/34 --- C4_Dynamic.puml | 218 ++++++++++++++++++ ...4_Dynamic Diagram Sample - bigbankplc.puml | 20 ++ ..._Dynamic Diagram Sample - message bus.puml | 39 ++++ 3 files changed, 277 insertions(+) create mode 100644 C4_Dynamic.puml create mode 100644 samples/C4_Dynamic Diagram Sample - bigbankplc.puml create mode 100644 samples/C4_Dynamic Diagram Sample - message bus.puml diff --git a/C4_Dynamic.puml b/C4_Dynamic.puml new file mode 100644 index 00000000..c8e6c06e --- /dev/null +++ b/C4_Dynamic.puml @@ -0,0 +1,218 @@ +' !include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Conmponent.puml +' uncomment the following line and comment the first to use locally +!include C4_Component.puml + +' Scope: Interactions in an enterprise, software system or container. +' Primary and supporting elements: Depends on the diagram scope - +' enterprise - people and software systems Related to the enterprise in scope +' software system - see system context or container diagrams, +' container - see component diagram. +' Intended audience: Technical and non-technical people, inside and outside of the software development team. + +' Dynamic diagram introduces (automatically) numbered interactions: +' SetIndex(): set the next index, +' GetIndex(): get the index and automatically increase index + +' Index +' ################################## + +!$index=1 + +!function increment($step=1) +!$index = $index + $step +!endfunction + +!function setIndex($new_index) +!$index=$new_index +!endfunction + +' Relationship override +' ################################## + +' Relationship +' ################################## + +!unquoted function Rel_($e_index, $alias1, $alias2, $label, $direction="") +$alias1 $direction $alias2 : **$e_index: $label** +!endfunction +!unquoted function Rel_($e_index, $alias1, $alias2, $label, $techn, $direction="") +$alias1 $direction $alias2 : **$e_index: $label**\n//[$techn]// +!endfunction + +!unquoted function Rel($from, $to, $label) +Rel_($index, $from, $to, $label, "-->>") +increment() +!endfunction +!unquoted function Rel($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-->>") +increment() +!endfunction +!unquoted function RelIndex($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-->>") +!endfunction +!unquoted function RelIndex($e_index, $from, $to, $label, $tech) +Rel_($e_index, $from, $to, $label, $tech, "-->>") +!endfunction + +!unquoted function Rel_Back($from, $to, $label) +Rel_($index, $from, $to, $label, "<<--") +increment() +!endfunction +!unquoted function Rel_Back($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "<<--") +increment() +!endfunction +!unquoted function RelIndex_Back($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "<<--") +!endfunction +!unquoted function RelIndex_Back($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "<<--") +!endfunction + +!unquoted function Rel_Neighbor($from, $to, $label) +Rel_($index, $from, $to, $label, "->>") +increment() +!endfunction +!unquoted function Rel_Neighbor($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "->>") +increment() +!endfunction +!unquoted function RelIndex_Neighbor($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "->>") +!endfunction +!unquoted function RelIndex_Neighbor($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "->>") +!endfunction + +!unquoted function Rel_Back_Neighbor($from, $to, $label) +Rel_($index, $from, $to, $label, "<<-") +increment() +!endfunction +!unquoted function Rel_Back_Neighbor($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "<<-") +increment() +!endfunction +!unquoted function RelIndex_Back_Neighbor($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "<<-") +!endfunction +!unquoted function RelIndex_Back_Neighbor($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "<<-") +!endfunction + +!unquoted function Rel_D($from, $to, $label) +Rel_($index, $from, $to, $label, "-DOWN->>") +increment() +!endfunction +!unquoted function Rel_D($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-DOWN->>") +increment() +!endfunction +!unquoted function Rel_Down($from, $to, $label) +Rel_($index, $from, $to, $label, "-DOWN->>") +increment() +!endfunction +!unquoted function Rel_Down($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-DOWN->>") +increment() +!endfunction +!unquoted function RelIndex_D($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-DOWN->>") +!endfunction +!unquoted function RelIndex_D($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-DOWN->>") +!endfunction +!unquoted function RelIndex_Down($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-DOWN->>") +!endfunction +!unquoted function RelIndex_Down($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-DOWN->>") +!endfunction + +!unquoted function Rel_U($from, $to, $label) +Rel_($index, $from, $to, $label, "-UP->>") +increment() +!endfunction +!unquoted function Rel_U($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-UP->>") +increment() +!endfunction +!unquoted function Rel_Up($from, $to, $label) +Rel_($index, $from, $to, $label, "-UP->>") +increment() +!endfunction +!unquoted function Rel_Up($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-UP->>") +increment() +!endfunction +!unquoted function RelIndex_U($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-UP->>") +!endfunction +!unquoted function RelIndex_U($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-UP->>") +!endfunction +!unquoted function RelIndex_Up($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-UP->>") +!endfunction +!unquoted function RelIndex_Up($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-UP->>") +!endfunction + +!unquoted function Rel_L($from, $to, $label) +Rel_($index, $from, $to, $label, "-LEFT->>") +increment() +!endfunction +!unquoted function Rel_L($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-LEFT->>") +increment() +!endfunction +!unquoted function Rel_Left($from, $to, $label) +Rel_($index, $from, $to, $label, "-LEFT->>") +increment() +!endfunction +!unquoted function Rel_Left($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-LEFT->>") +increment() +!endfunction +!unquoted function RelIndex_L($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-LEFT->>") +!endfunction +!unquoted function RelIndex_L($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-LEFT->>") +!endfunction +!unquoted function RelIndex_Left($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-LEFT->>") +!endfunction +!unquoted function RelIndex_Left($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-LEFT->>") +!endfunction + +!unquoted function Rel_R($from, $to, $label) +Rel_($index, $from, $to, $label, "-RIGHT->>") +increment() +!endfunction +!unquoted function Rel_R($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-RIGHT->>") +increment() +!endfunction +!unquoted function Rel_Right($from, $to, $label) +Rel_($index, $from, $to, $label, "-RIGHT->>") +increment() +!endfunction +!unquoted function Rel_Right($from, $to, $label, $techn) +Rel_($index, $from, $to, $label, $techn, "-RIGHT->>") +increment() +!endfunction +!unquoted function RelIndex_R($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-RIGHT->>") +!endfunction +!unquoted function RelIndex_R($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-RIGHT->>") +!endfunction +!unquoted function RelIndex_Right($e_index, $from, $to, $label) +Rel_($e_index, $from, $to, $label, "-RIGHT->>") +!endfunction +!unquoted function RelIndex_Right($e_index, $from, $to, $label, $techn) +Rel_($e_index, $from, $to, $label, $techn, "-RIGHT->>") +!endfunction + + diff --git a/samples/C4_Dynamic Diagram Sample - bigbankplc.puml b/samples/C4_Dynamic Diagram Sample - bigbankplc.puml new file mode 100644 index 00000000..9090ca70 --- /dev/null +++ b/samples/C4_Dynamic Diagram Sample - bigbankplc.puml @@ -0,0 +1,20 @@ +@startuml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Dynamic.puml +' uncomment the following line and comment the first to use locally +' !include C4_Dynamic.puml + +' Structurizr.DynamicView: SignIn +title API Application - Dynamic + +LAYOUT_WITH_LEGEND() + +ContainerDb(InternetBankingSystem__Database__1edef6c, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") +Container(InternetBankingSystem__SinglePageApplication__23f6823, "Single-Page Application", "JavaScript and Angular", "Provides all of the Internet banking functionality to customers via their web browser.") +Container_Boundary(InternetBankingSystem__APIApplication__31f1f25, "API Application") { + Component(InternetBankingSystem__APIApplication__SecurityComponent__10c9772, "Security Component", "Spring Bean", "Provides functionality Related to signing in, changing passwords, etc.") + Component(InternetBankingSystem__APIApplication__SignInController__1fa4f18, "Sign In Controller", "Spring MVC Rest Controller", "Allows users to sign in to the Internet Banking System.") +} +Rel_R(InternetBankingSystem__SinglePageApplication__23f6823, InternetBankingSystem__APIApplication__SignInController__1fa4f18, "Submits credentials to", "JSON/HTTPS") +Rel(InternetBankingSystem__APIApplication__SignInController__1fa4f18, InternetBankingSystem__APIApplication__SecurityComponent__10c9772, "Calls isAuthenticated() on") +Rel_R(InternetBankingSystem__APIApplication__SecurityComponent__10c9772, InternetBankingSystem__Database__1edef6c, "select * from users where username = ?", "JDBC") +@enduml \ No newline at end of file diff --git a/samples/C4_Dynamic Diagram Sample - message bus.puml b/samples/C4_Dynamic Diagram Sample - message bus.puml new file mode 100644 index 00000000..c6a687c9 --- /dev/null +++ b/samples/C4_Dynamic Diagram Sample - message bus.puml @@ -0,0 +1,39 @@ +@startuml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Dynamic.puml +' uncomment the following line and comment the first to use locally +' !include C4_Dynamic.puml + +LAYOUT_TOP_DOWN() +' LAYOUT_AS_SKETCH() +LAYOUT_WITH_LEGEND() + +Person(customer, Customer, "A customer") +System_Boundary(c1, "Customer Information") { + Container(app, "Customer Application", "Javascript, Angular", "Allows customers to manage their profile") + Container(customer_service, "Customer Service", "Java, Spring Boot", "The point of access for customer information") + Container(message_bus, "Message Bus", "RabbitMQ", "Transport for business events") + Container(reporting_service, "Reporting Service", "Ruby", "Creates normalised data for reporting purposes") + Container(audit_service, "Audit Service", "C#/.NET", "Provides organisation-wide auditing facilities") + ContainerDb(customer_db, "Customer Database", "Oracle 12c", "Stores customer information") + ContainerDb(reporting_db, "Reporting Database", "MySQL", "Stores a normalized version of all business data for ad hoc reporting purposes") + Container(audit_store, "Audit Store", "Event Store", "Stores information about events that have happened") +} + +'simple order with Rel +Rel(customer, app, "Updates his profile using", "HTTPS") +Rel(app, customer_service, "Updates customer information using", "JSON/HTTPS") +Rel(customer_service, customer_db, "Stores data in", "JDBC") + +RelIndex($index-1, customer_service, message_bus, "Sends customer update events to", "async") +RelIndex($index-2, customer_service, app, "Confirm update to", "async") +increment() + +RelIndex($index-1, message_bus, reporting_service, "Sends customer update events to", "async") +increment() +RelIndex($index-1, reporting_service, reporting_db, "Stores data in") + +setIndex(5) +RelIndex($index-2, message_bus, audit_service, "Sends customer update events to", "async") +increment() +RelIndex($index-2, audit_service, audit_store, "Stores events in") +@enduml \ No newline at end of file From e0138368e52b9eb2d1e57a53ef038e2accabeefb Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 28 Dec 2019 18:40:09 +0200 Subject: [PATCH 016/250] updated readme to include dynamic diagram --- README.md | 3 +++ samples/C4CoreDiagrams.md | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d1e3ab86..b37dac03 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,9 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS") * Component diagram * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Component.puml` * Additional Macros: `Component`, `ComponentDb` +* Dynamic diagram + * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Dynamic.puml` + * Additional Macros: `RelIndex`, `increment`, `setIndex` * Deployment diagram * Import: `!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Deployment.puml` * Additional Macros: `Deployment_Node` diff --git a/samples/C4CoreDiagrams.md b/samples/C4CoreDiagrams.md index a0b3771d..5f4f88a3 100644 --- a/samples/C4CoreDiagrams.md +++ b/samples/C4CoreDiagrams.md @@ -32,8 +32,14 @@ Source: [C4_Context Diagram Sample - bigbankplc-landscape.puml](C4_Context%20Dia ![System Landscape diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/jPPTRzis58Rl_IiEijjuTj8koGh7g9sFhS2o5hE3N2H1S28UIuGbKYFfEkxI_pwIfZGgiZ8KQEahyNoSvxnw8-IzDgZCgiXxUib5YGeBOBJ0LMxcz6GcEKz5GS90GiAGYhBM2iiRpam6XyDXT5_WqnLfZIdD-1U2Wr_YeAB4e4XpWdzwOC_Ca29fDYLTIc6s1OS-eZDaSir52WlCDVM-HbqcIibrw70cSwdWfoD__8thrBwD-t_THJGQFSgLOAWsut55rsJe8Xws1hp0UEkFlvrAnKXrtS_C9YTWg3DY3SeIaoMcRSPEdc-OtoL7IKfBqJ4eTBZqnyTttqujUAeST8WDJzuU7a_RBCFZDzEZoouMQqLI0lE77mDrTE9-RQYJYVjrGUcDDbHyRvQ3WwEJwNcRvStPyUNPy7y5-Z5Gl_hpYa0PPmIw7jRBAIN1GF4qCxtdKsWS-potIV3SUnu5Gun31BOls8V2Qwb3rOvnJf1hx1Esk_lxGDokhNCitXQoPxZ92MRRm1yec4xGqZ6EgLDv8HLCUMf54KieywHNomvxfwUVF0lcFkm-5MShRMH1waxS2PX04Xv1Bi1a18ysRH_Mt6HGXb9_1vWaLd2ZVzw3w6yFTTsXEJScWjiBOKYLYckwtuFuA-4R38CP6Wq-k191fW8F0conyrok_vkimKZup6aDN5Wr2ZHS2a0xnRYTk6fki0ye61Iu92XnKr2rL6rDrBx03WrsRTDDvbTT95uyfd0D2UhCTswx7pMWsT7tebyWhrpW9ymp0Yw2EwvuegIM2mCNJqbcgmWehkYUvf8wjxb2Avp2WdQ9FJDIaGRCyyeZYRse5DeXUIt6VYIvKIWq9YxDFf59NaCDD6tGohmm8_MP9sJXSB7mc7L8Xv1s8VyokAYjtPowoyOFeRuzt7rruEDYqPmxOGKNN1iL910CzAeifJBVIl1e-pz8tzz-iIeUw8zVk17UEPhJQqrwBqhxwyDllyzjCfeguoOOKNidmahR7b75gD-FRH6APYIO3gvoTjunegLLA9tefOQ_LwIT4gxsJWm68ys_qBk3m_7jd78gCodeVZHmb-F1OA_tOhN--SURF-s4rxcgLTogDLHjcqYVTl_NirkB1PwEzEYDGV_wKqTUuBpDE6Caxi_xq8HgXUilQgn2dN0T9RmdmTm_n_y2 "System Landscape diagram for Internet Banking System") +### Dynamic Diagram + +Source: [C4_Dynamic Diagram Sample - bigbankplc.puml](C4_Dynamic%20Diagram%20Sample%20-%20bigbankplc.puml) + +![Dynamic diagram for Internet Banking System - API Application](http://www.plantuml.com/plantuml/png/nLdXRzks4_tkl-AIdu76lpd9adPj5o1OaxXeCxXfOCSTzacWfRDDb28raegR3VlVTvH4ntBNJRGpEnzQchntzzwxio23RunbskQfQErn6OiymLmBc5cRcRFZOytcHrDkP_auDwXZ9IrAUnIhz7Z0OwOJTSCnGt5yzUBmLZ1fHn_wnoap5ZLjHLSgpPHqYCmLU0Qv96XA6s1d21CbX9fpEGN19GAJ2TIEkJQqKa2bGQYO2V50EJnD-Be0dGvZbU4PN1DHpMBBbJJ09UK6T5kPvWQxODJ4pfb6C0_4DGMbmMbZH4CVKPPRpLEc7mfA9iyofQsZYG8TEtC6FL8j4mDA5bGJpgQQfM1STJW4Ia5_IoLfBqELYLBbIda36WMpc91ObsuPnsMPrATSWL9UWuiFJWD-iJKvdflf-XIBemeSUnDzg7F06IWJeiJoXAECoTCxZ6UIkYuA3LB9G-jtAd5TecjuKefKkItMQk8qFH9Fy1w5oiesewj6vNeFagKyNXZ9fTKgoMCqSC1ogr9cUJ407P1vEaPDpFXIZy-yED_uWywPcvi45cWWV9oNFdEIzgMxYZabK7b4iHB62FWb4ppcv0nEoB6aMo66QAzTd0COBCTLEkVhYTyjXKshi3A_CwYcY_PZZSnK0SwJ0ah__-zV_rgjlKak2oUWJOcYW_Oz4pdresqiPkSddHR0daQRQmdb4NnNdhNsK2OUJ7dQHVdpa-MK2xLjYVEe2709VUpZxceoltmqekr4HrvhHQojH0BdKAPRJbnAgJojGskA2BzI-jcYgSqCt2iRl3GA64sqIhk0aLNkNy76ADoYr0y352in-zNPcO_UxuJaBRvCWGKMk4xhwrBH9Oi_Dz7X0uF5bC0GHHwnYQmRvDFPMEb6qkh1WV8yE4pY0hLvzyAqrX1hzpD8TK3n0EczHd9xQqdiXSdg1KZvksfgBfk9yO71UWWOA8aG6pPer4ZJQ2r1ep0reyqQDCgQISdMqv85YiasR4o_aPh-McBwOLhwcpMcZnFRJ8mF3DP3m419XDYmGOD6cWPh2Hg4gHbirg01dywQTSX7XYloo11L10biKYv_ovN511Rlgvx1GTidQfUPsbM23hIMVpViLt6KrosjgXQ-MBia-8rtsqxzvNKTFhJoWiAOULWWntyYMRxZDNEkZDsAVPvPi8SbQXT6-jUffcRw-EqPwYk6c-gHEvlGO7VheAtEx0O-E_XkpUurDRYtFLDxuKRsmirx0fvgBXlRHx5RTD1L2pUHK3iPmb5J5qVRit0Kxjze5qCuoXgRbstHlMmD-xAT35-_gN_zxTdN3tUllulXSx-v6jj7iLjqq5KBDv5GEnd2GLCN1zkpS13kts07GrZ-g6pidmlUbeUUMxYF3lPVUUakOgtEOvjh_hi-gcxtFd6Sdy6GJ-MrR5bk1SB5xJLSPEwIZHMg3g6ARRNw5xz-7Dr5lrpVlO_wRz-zlUaTT5gjAtzvsHiV568asaicFtCv7HQNe57KOvQDcS4eEi449ozZakJtdBm1Yg8O4-2tOHZFC6NkT6YLHWEvGGqQfznONLBZSg9qMgoxC6DcLbukpb1QppxMcBYFJ9Wki3X6Oq2eANr06n_jTnxPVulxaDO2RzaKbro9ejFdavUlJvyJlJBWq4Ki6-UO_ypksJ3MFBF5zUA5dEQ2QNTogzKzJqWL4yBVnte2C2uPB2QB2MuVm2g8SsDLYjh0FMSEmpNCSGnZhURaJarFTAbocJ3zy2rXrEYQekSdavF9wGz4ZavgIZhmHmjWSRFVDE4GurmJymMGslzz_EEhLwTKmny-fYrQdMad_1APhBbKSsBvRjxGw3e4fmc8PqnEtOUC6JDNEbbqUHtsvPV2sQcL4AY9_8Izc9oyTZJfZDe5ZwTBv3zyke816hjoUY64cfTJR3npeatBUlChMb3oSkJ_RDMVBEjEwbC8pySfjsRvQqK2Yb4VVhmvVdztTpianfxl4tZz5BDsnGJnvERYyTc0oK47t6Wtz3QaNi13qA30sCB_mJtngzcOpr1ZiPOiHJY7dmf_UvTNnFODoYHFnLy0 "Dynamic diagram for Internet Banking System - API Application") + ### Deployment Diagram -Source: [C4_Deployment](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc.puml) +Source: [C4_Deployment Diagram Sample - bigbankplc.puml](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc.puml) ![Deployment Diagram for Internet Banking System - Live](https://www.plantuml.com/plantuml/svg/0/xLfhRziu5lqU8F-1utveKoJnevasMoJ1-9KcNSSs_DZCx7HWq19jSqk90adbCTlyzxtKmzRJjfoqG85LW5QMxZqyzv2yV8Y_IOM5SYssl_SQ_K9jWxacSGL32wKS-R5S5lZ-U4xLmfswaWY3suhOwjZWLdb03InCtgN48QpSF3dgCsohyKsdR66fY817aoROOseJSUm4PRWs-5g0WTI2e1bdZDzJUuuOM25icoZscWe9Tnn1sOXn0pFs62MAe8WMSHX_r2v16TeWmkOGtH4XARTHzRXoND5lmzZykDO74-1nneNKTwysNjhZ5vFCT43jJlkctHrDBdlmJxFNwGtGgqllyd67wX42dnS77hMRLrqVTdZzxpQgrlHR-PNQ3XROGc26NQP6v47L6PtRdgG6_4D4tF1UOEUMccg1QfLAz8M57sw8b7XEXlHlWgg_LkAEWXWAstD6q7_tzn1SGy0cN3qwv19gtNUg-Q_a0fj-DSymasH_xod15YiynV8beEf2yFiGnwiszEgzT_cFD63EusKvJpcHdfrDkMkRM3nUN2of9ldayA-aYZ_nBlznWmkJYDmNkfaGK4akY1dGUuqw-96xgd3JOHouTkf_zCQZINqu6VwpFMfUHSETOkFhNEX00pxjThlHQaPD5j1HxmLLa0kG4Yx9Q7awq2ws22erkKKDDCIsH3V3qlwUtmgXwtFztzcCwvQfIpeNnBounS86DJ-UbVMB2zGK12jYWhb09fM6AtLVFaGs8QRKgM5Aq1rcrDHM42InpLMSqHuJX3pgzIUjtcqNN1tFdIl5WJNLjGp8AOTE-t8q6Ln_kXeXHcPUDX9qlb1H5rq93RzfKB93cWXy7z-G2OI2vI4Y4uQdX1r4kbdf_3nuMaAnbeWb2losGDGtkc5c8t-npoIqre-9z7Bnf-_qrrbPlxvOGq07Fo0CQs7aWZh5nG3lIKYxUXWYrs8HBBK_BvKEGfDgzCNI3ttKyIsbArQE8iR2VbQ1N-noELzJ3H-AMYwN4Z80kvdWrY4OyaYJ28YdNnsYqj7HHUbWCyWojhLeo_X3sBXu3KWKRq8Npp_5CUCTe9qT7IL8hi5AKrrdj4AFutS9zDaf5xj8cbHqFLXXQNEKZPQoYyHP2c_0t47gDFVMBXBhZ9pMkVKo0kU0ytjx3TMSCBR4I73S54XIm_4k6exxwI37BwDW9hIpXkHu6_Lo41BinWMrw-oYdHxaqo5sNaQz772OJAoXsjb6mLoC1CTEGGq7ksZepP7ISGvUHiGyT3qLMyDsi8sC-I09ceCjT0mdvkYAC8ViicW4_rN6qDZy84Z2wEZF1ONvhVrNwyXx4NSQRt0QPpaDDZWDifmw6vmweTFAhTyU37lTIUDJk0wkd9xKFZGYQ-NVH-r1jzwPf2pVd-g_bUNmZ-6eVHCng5RVdpPQ6L0fotzuruwBxymbeQvZRaSMXB6rdx-4Icy395U3UHQDn68ieKt6wh7ouLtZ_UMwHInv08esPfCVIpslVZDYEAthltKno4UfYFMZg2UQKGRZTyqFbytALgh_MEfvNM5xrSFDcPz6z1NXdqpp5zdJkRqUNKqwxK_jBYH4ICS4oMMm-tkCp8bj-ZiO-tlVpb7iWjyZC4FVuDLPefjU12R8png-JLwVNXg7DH3pIiXouLdwLPI0pR2Cmwwy82m_kAnDeDUepOZU0zrXEEvxp0jipIpJQjR6J0wQjyT0f27ozcM-sA55RX79GYRj1rM0TdfOoEUV2LqmXlNbHKPxhueB1BBix5dySz0ASiyi8bd8hlflmVz5zTygcDOq8vJbldtX2iY0Yz3FmDsf1bhJd3h88Lwa2dAmYqMngGwUjwtSrXljZg2IJDRiCA_PAYwj4A8Bhw0DxeZfUyStZfemejQlk-r1PAf-ykwqrVhr9QVgHlWryaTD1D9XxJAB-Gbe_t_cyeoPoxUpjE0-yhBcl-i4P_cHFljZaR_zaJsY5FYsWU8DEIknRa5aunYtFQDaBivZby4lP_GAfChC-zz9gNLCDWr5tqEgvmrOox1s7LkM0FxmaZaAsDmaB_7zlk9T6PcnNjD_wU_taZEw-dnVjB-66gtEkqow44c12MOGU5PxsWJwOb-DCpY00EdZ2EaXuOrNeueg5gMBMXJFTGNhym7NUhPY4mK3clrLLwa_rK17g4FlY7PFnkam0rfDWyuz5mG_IudVNjS9JiwK3e96auGnzHRrbCwdu7I47VhsxTilwk5KOusdhgrSL7r_N3b1dT5mYP65WnriB0XurRqRDEAMWLKf-G2T7Z_4SFopBc7o10BQet-Dwex3gE5zYzSWd_4TzivO3M5A1_BS_Akf7_S5luFHLgRrcxcszsqRQaezeZiAtkWpZ9Rbgz6eFqHGnB7kQ2659__sALkaG1zpMgb6rD8_2-l41JQOrgddtK05zmMr82UKLi-gDIDV8qYRvXHiMq5Ur7xXgGKOcyF7Q0YYMrY_7IekG29z20xwm9nA9JnhH6reUfPtVuWMtX4TX5sr0BA1zCWGnDG_8S4S8cmOH4h4-5ntBsNif60jhc1jHmLhKGc71DAwMLJ4si-duZIgtZsP-htrPCVUMdjkTmK6u75BfbjsrnPXL1zfz4v8IWNc1WhEPNhM-d6g9qlgvMm7pmd2gs9oP7lAofKMrpoRhbJS8kArHF20wcDfv8uQn8_QWT_NlI62P5otJS6fkGny5R3l1_OtFW2uQU_VCVHWQiSo4aQCMbIV_vBkL48yV9OTNpnJAOwCWAVqqXRuK14dx8MU6QZ1BISUgNxYwW50awR2u9BF5BgbDamTfERaHsvXepVC7IIc0eo92EgwuV_IY9yurtNJN0WexX3TyByfOnXTKa5cFDvoLY9A1-l-v5ThNrThHkiP6e8wVgkestENOH5Nbx7d2GfD5mLXBLjIs7pqqQEmflqHwGP_XKBrkAGFykh3UvhDVs1nvOyd6a5xUQ4LS_7wa2_9gdjmBp9ZLOqHkg6ZLumt50m8DYNoFcDglVJnHX8M-BdLQ2OyQWLSD7xeuTSHc7dp2h3rfZM_mOBEjTZ_0000 "Deployment Diagram for Internet Banking System - Live") From 34a1da0a1e3133bfb1d66ac3445fa9a5e2e239ea Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sat, 28 Dec 2019 18:44:39 +0200 Subject: [PATCH 017/250] updated include for dynamic diagram --- C4_Dynamic.puml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/C4_Dynamic.puml b/C4_Dynamic.puml index c8e6c06e..c88b1a05 100644 --- a/C4_Dynamic.puml +++ b/C4_Dynamic.puml @@ -1,6 +1,6 @@ -' !include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Conmponent.puml +!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Component.puml ' uncomment the following line and comment the first to use locally -!include C4_Component.puml +' !include C4_Component.puml ' Scope: Interactions in an enterprise, software system or container. ' Primary and supporting elements: Depends on the diagram scope - From 46a1d2daed4b41d4e82583cdd20108ed5395676b Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Sun, 29 Dec 2019 12:58:24 +0200 Subject: [PATCH 018/250] updated code snippets --- .vscode/C4.code-snippets | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index 920335a8..e28346a0 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -35,6 +35,15 @@ ], "description": "Include C4 Deployment Diagram" }, + "C4_Include_Dynamic": { + "scope": "diagram", + "prefix": "Include C4 Dynamic Diagram", + "body": [ + "!include https://raw.githubusercontent.com/adrianvlupu/C4-PlantUML/latest/C4_Dynamic.puml", + "$0" + ], + "description": "Include C4 Dynamic Diagram" + }, "C4_Person": { "scope": "diagram", "prefix": "Person", @@ -248,6 +257,24 @@ ], "description": "Add unidirectional Relationship with Technology to C4 diagram" }, + "C4_Relationship_Index": { + "scope": "diagram", + "prefix": "Relationship with Index", + "body": [ + "RelIndex(${1:index}, ${2:from_alias}, ${3:to_alias}, \"${4:label}\")", + "$0" + ], + "description": "Add unidirectional Relationship to C4 diagram" + }, + "C4_Relationship_Index_Techn": { + "scope": "diagram", + "prefix": "Relationship with Technology and Index", + "body": [ + "RelIndex(${1:index}, ${2:from_alias}, ${3:to_alias}, \"${4:label}\", \"${5:technology}\")", + "$0" + ], + "description": "Add unidirectional Relationship with Technology to C4 diagram" + }, "C4_Layout_Right": { "scope": "diagram", "prefix": "Layout to Right side", From 8cc21450cdf3b1c8db6006c32ed68fe859492966 Mon Sep 17 00:00:00 2001 From: Adrian Lupu Date: Mon, 30 Dec 2019 13:53:26 +0200 Subject: [PATCH 019/250] snippets for setIndex and increment --- .vscode/C4.code-snippets | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index e28346a0..3defdae3 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -264,7 +264,7 @@ "RelIndex(${1:index}, ${2:from_alias}, ${3:to_alias}, \"${4:label}\")", "$0" ], - "description": "Add unidirectional Relationship to C4 diagram" + "description": "Add unidirectional Relationship to C4 Dynamic Diagram" }, "C4_Relationship_Index_Techn": { "scope": "diagram", @@ -273,7 +273,7 @@ "RelIndex(${1:index}, ${2:from_alias}, ${3:to_alias}, \"${4:label}\", \"${5:technology}\")", "$0" ], - "description": "Add unidirectional Relationship with Technology to C4 diagram" + "description": "Add unidirectional Relationship with Technology to C4 Dynamic Diagram" }, "C4_Layout_Right": { "scope": "diagram", @@ -336,5 +336,27 @@ "}" ], "description": "Add a deployment node to C4 diagram." + }, + "C4_Dynamic_Increment": { + "scope": "diagram", + "prefix": [ + "Increment index" + ], + "body": [ + "increment(${1:count})", + "$0" + ], + "description": "Increment index of C4 Dynamic Diagram." + }, + "C4_Dynamic_Set_Index": { + "scope": "diagram", + "prefix": [ + "Set index" + ], + "body": [ + "setIndex(${1:value})", + "$0" + ], + "description": "Set index of C4 Dynamic Diagram" } } \ No newline at end of file From 7a5a492788da71fa5be9319893a4079118dde7dc Mon Sep 17 00:00:00 2001 From: Leila Pearson <873990+leilapearson@users.noreply.github.com> Date: Sat, 15 Feb 2020 15:33:05 -0800 Subject: [PATCH 020/250] Add diagram layout snippets --- .vscode/C4.code-snippets | 44 ++++++++++++++++++++++++++++++++++++++++ C4.puml | 4 ++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index 3defdae3..be6780c1 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -358,5 +358,49 @@ "$0" ], "description": "Set index of C4 Dynamic Diagram" + }, + "C4_Layout_With_Legend": { + "scope": "diagram", + "prefix": [ + "Layout with legend", + "Legend layout" + ], + "body": [ + "LAYOUT_WITH_LEGEND()" + ], + "description": "Add legend to C4 diagram." + }, + "C4_Layout_Left_Right": { + "scope": "diagram", + "prefix": [ + "Layout left to right", + "Left to right layout" + ], + "body": [ + "LAYOUT_LEFT_RIGHT()" + ], + "description": "Left to right layout for C4 diagram." + }, + "C4_Layout_Top_Down": { + "scope": "diagram", + "prefix": [ + "Layout top down", + "Top down layout" + ], + "body": [ + "LAYOUT_TOP_DOWN()" + ], + "description": "Top down layout for C4 diagram." + }, + "C4_Layout_As_Sketch": { + "scope": "diagram", + "prefix": [ + "Layout as sketch", + "Sketch layout" + ], + "body": [ + "LAYOUT_AS_SKETCH()" + ], + "description": "Sketch layout for C4 diagram." } } \ No newline at end of file diff --git a/C4.puml b/C4.puml index ce06b856..603a78e6 100644 --- a/C4.puml +++ b/C4.puml @@ -1,5 +1,5 @@ -' C4-PlantUML, version 1.0.0 -' https://github.com/RicardoNiepel/C4-PlantUML +' C4-PlantUML +' https://github.com/adrianvlupu/C4-PlantUML ' Colors ' ################################## From 736b4785032b8438445dfe5cb0304f2c7647a0c4 Mon Sep 17 00:00:00 2001 From: Leila Pearson <873990+leilapearson@users.noreply.github.com> Date: Sat, 15 Feb 2020 16:21:40 -0800 Subject: [PATCH 021/250] Improve legend Improve the look of the legend table in LAYOUT_WITH_LEGEND() to better match the overall diagram style --- C4.puml | 6 ++++++ C4_Component.puml | 14 +++++++------- C4_Container.puml | 12 ++++++------ C4_Context.puml | 10 +++++----- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/C4.puml b/C4.puml index ce06b856..03e76498 100644 --- a/C4.puml +++ b/C4.puml @@ -5,6 +5,8 @@ ' ################################## !global $ELEMENT_FONT_COLOR = "#FFFFFF" +!global $LEGEND_FONT_COLOR = "#FFFFFF" +!global $LEGEND_TITLE_COLOR = "#000000" ' Styling ' ################################## @@ -16,6 +18,10 @@ skinparam defaultTextAlignment center skinparam wrapWidth 200 skinparam maxMessageSize 150 +skinparam LegendBorderColor transparent +skinparam LegendBackgroundColor transparent +skinparam LegendFontColor $LEGEND_FONT_COLOR + skinparam rectangle { StereotypeFontSize 12 shadowing false diff --git a/C4_Component.puml b/C4_Component.puml index b2fae6a1..e95532c9 100644 --- a/C4_Component.puml +++ b/C4_Component.puml @@ -35,13 +35,13 @@ skinparam database<> { !function LAYOUT_WITH_LEGEND() hide stereotype legend right -|= |= Type | -|<$PERSON_BG_COLOR> | person | -|<$EXTERNAL_PERSON_BG_COLOR> | external person | -|<$SYSTEM_BG_COLOR> | system | -|<$EXTERNAL_SYSTEM_BG_COLOR> | external system | -|<$CONTAINER_BG_COLOR> | container | -|<$COMPONENT_BG_COLOR> | component | +|**Legend** | +|<$PERSON_BG_COLOR> person | +|<$SYSTEM_BG_COLOR> system | +|<$CONTAINER_BG_COLOR> container | +|<$COMPONENT_BG_COLOR> component | +|<$EXTERNAL_PERSON_BG_COLOR> external person | +|<$EXTERNAL_SYSTEM_BG_COLOR> external system | endlegend !endfunction diff --git a/C4_Container.puml b/C4_Container.puml index 0c6a195e..4bbfcd7c 100644 --- a/C4_Container.puml +++ b/C4_Container.puml @@ -35,12 +35,12 @@ skinparam database<> { !function LAYOUT_WITH_LEGEND() hide stereotype legend right -|= |= Type | -|<$PERSON_BG_COLOR> | person | -|<$EXTERNAL_PERSON_BG_COLOR> | external person | -|<$SYSTEM_BG_COLOR> | system | -|<$EXTERNAL_SYSTEM_BG_COLOR> | external system | -|<$CONTAINER_BG_COLOR> | container | +|**Legend** | +|<$PERSON_BG_COLOR> person | +|<$SYSTEM_BG_COLOR> system | +|<$CONTAINER_BG_COLOR> container | +|<$EXTERNAL_PERSON_BG_COLOR> external person | +|<$EXTERNAL_SYSTEM_BG_COLOR> external system | endlegend !endfunction diff --git a/C4_Context.puml b/C4_Context.puml index 143def23..aa6c88a1 100644 --- a/C4_Context.puml +++ b/C4_Context.puml @@ -66,11 +66,11 @@ BorderColor #8A8A8A !function LAYOUT_WITH_LEGEND() hide stereotype legend right -|= |= Type | -|<$PERSON_BG_COLOR> | person | -|<$EXTERNAL_PERSON_BG_COLOR> | external person | -|<$SYSTEM_BG_COLOR> | system | -|<$EXTERNAL_SYSTEM_BG_COLOR> | external system | +|**Legend** | +|<$PERSON_BG_COLOR> person | +|<$SYSTEM_BG_COLOR> system| +|<$EXTERNAL_PERSON_BG_COLOR> external person | +|<$EXTERNAL_SYSTEM_BG_COLOR> external system | endlegend !endfunction From e11b65247238da7f4845186f822b48af449bfa62 Mon Sep 17 00:00:00 2001 From: Leila Pearson <873990+leilapearson@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:27:56 -0800 Subject: [PATCH 022/250] Update legend format in markdown diagrams --- README.md | 6 +++--- images/vscode_c4plantuml_snippets.gif | Bin 701680 -> 4248504 bytes samples/C4CoreDiagrams.md | 12 ++++++------ ...ontainer Diagram Sample - message bus.puml | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b37dac03..557e6055 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # C4-PlantUML -![Container diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/pPLjZzCu4CVVzrECojlssbrWsKFTYZwmEX2zwrrw1n8WD4ccgOLZHxQpfHnyztDSDoJhLjp3eYChhTePpzy__psPFj46bIbptj7lcIXGOGufhR7aPaKVp8IpJEGa32Js7wd6ggt2uYLBpGREXyD6FCSF2z8QCuhOHuApXysaeiIWo3Z1dnsmJsGrIPfTGTTIc7t1kSle3QPooqG6Q-IQEf-RW6WmHltVH2PAoQrNc4ak5ToxS8-BL4fXjAd_-TYnHgDObY95jHkF3tHjXbF4ms23MnWFtEEYKwbIKgVYaTbnWXJrXj9Jb0KfBOLZ37cyyBLxQemmEiNaVQQgy_hSyFB1-QDfY3XyT7zwSNsAnROPAO7ytRU1khYi_aAeoqdrTmfAxxIX_AvPpiukBgVpaEN-xD7rRFXLWxuDr8_kEMrG-E9z3_vubE_4dk3E4YkEJ92wQvm7zo_dyuV_qAB_ZyR80eo4M1eZBH6hB69IT3Oi9T0rH8TJHY85nRADwNowWjPZlw_i8lZK-JJoGsRiCx0V6YxbN_KwTMYCvXhVOcEtODymBkwlEQXjhl6dtTVMbjgK9T_pTmmpd61MvrA6MNKLQwdWcQWaoLWNXRsZ328dtQcx1hfNLxDIMwD8lH5l14mWyLz1hi5i269RseCjCnj_AEGk1fWazbgCxa9ZkAEk1Tgx12Ylzonlkz3y1NC2PxvZMW8lAOP9KN2Me67IiWu68yq-qkEpy_7hvtY3FOWALIal_fYz7Gsgt7WmSAUQ4sSt5j4TI1iha3WtIHX0aRfm3HWVl5fEkj1kP0ktfVWT5aN85x7gKt-96LMS8L-KA5QO7an4Ld9Kjn2NIjwmb3GWvyTvrgLmZOoScHqOQOrsFckuOLYLC5NHGQpaLfCwmguB3BaNCcRy2FBiNWzUOOwAYPEem5dE3AMWorXRLBd-s-WwOC_t82dTi8H2Uf-lpVUZnfrXxZ-tJn3z-W8EcLj7Y8nKfA7Kf41HnhHHQFc0YRLKkMkm7cniNGfOcWqaYb8IXY7NlQhnIMlWChDVo2G_XB0rNUZtPFdiQtqybybxKlKxVQfLlkApizRkTeGkHhk1IAsNp0xC5jxJ_W8PzuF2RRVQ433XPzE29KfgkJRmz4EoiLNanrKNmfz5jnVbo0wHzbPs8x5McDEjyTIy8UJyq5M93TGdRLmKO2nBywMbUlLawe5HA3GwJ_nTdUJqoWVIWnpq--F3Im-FA-ohtpNfzhNzj5ejeo-tr6rNwmB_NMMZvHi2tSu1fwNjPvnDsvYhRjpooVrHxqJIW-VHBpyF0fR6zdUYLx-oe_uHiTy8Kmrh9NCtaxUA6T9WP7i3hp-VpewvPfNxhOxpsX49gqtzAbDfTZlDHROg00gAIir4TembMgoMJPQca7MjtLTDumAjWNVlrU95QDuJgrdc_2y0 "Container diagram for Internet Banking System") +![Container diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/0/bLLDZzis4BtxLqoTGnr0kqQ0ddgArpQwcwntrSZRJK_2Y1hRH2XI82axHj7_tg6i3yiEajGdQJJpvl7D6_gzysXzLQZHBr8BLUK4E-zBz_jqQl5mkvL-LsML8okCzgJzhJ3557ChKUzLLLRJ-MytiKBjNrQFKuMUdETGEkTib9hiRHcmVuLASs710E1t11kZb3b8lGN5IO0wXy5dQHq_6U36e8n0fOwCqJ6yRi1V7sT_Fx-iq_Lpd2wUNvycR_lOB4cJZylr_9w3JUZrONsVFYx_M3ujE3ZoqYl6RK4XbxYrM31H2mzySAl9mntgBu5pSdIUYj4e9kkCdeZAULEGZM3UFOrdq8R1REf3PLmTmO45XR8kH5N708KmbVPkp3nEqEaT1tAqnubunrYN1CPluPyHyA_ZEpbGbc9PSl8hPJ0hIoK5Ucdqc4CVS8yH9AKDv5T_pKDiGKhkcKPDZJtWfO1cnFKuGhZhcxK7ZsTCSjZPbOmzJlYpefiOjnIwjrqJOMNf8vZfRQNGXd1ipLxcv827-kqk6_PAe8vA-cDmWQXg8Hti9OOIQO7F2var1pRc5QF2P59H8yUgVcavpTz4y1aBP2M6NDY7XVIKWwionroQcVqCDtT5xaG0SjfBGPVq5jaaHuyPEWfZQ1u3c-JFHnYyUsEPMrW-iBILpblarY0rkxAefnl1ZfDpm8fT9IpbF3w9oaN1LEGSBy-MNyYBsokPCXHVIEUiamn-ZH--RPk5uJJRrmrq-u4-GH86vjR_TjPUVlKJAb2grDK1XblUhFYzMQk0lsRfPGtDExAImXfdDXwMNyKEDJliLCcmPvWDWnwLCVM6TvWkzlPCsc31PjA20zqfpXG6p4pb-p57tRf6mFFG3klpzYAFFf4wknBwnNnnv4Bl-_KwJZXnc7TQe-_d38nTfvxQfKyajxlCd5q39xXsoHkaEZWSUziGtL6B23uapq_Jy-RdBVzNPNh7sJsntl93b4-4kOEDDKLzwnmiBo7VIIOWDy2Bktbxpe1vfiU5ZHA6TK0t8LfZz4Gk73VaCAohNBXXk_R9QXqtGDrX1kLNlck52VNJHftF_EVOYlEUI_alwpy0 "Container diagram for Internet Banking System") C4-PlantUML combines the benefits of [PlantUML](http://en.plantuml.com/) and the [C4 model](https://c4model.com/) for providing a simple way of describing and communicate software architectures - especially during up-front design sessions - with an intuitive language using open source and platform independent tools. @@ -123,13 +123,13 @@ The core diagram samples from [c4model.com](https://c4model.com/#coreDiagrams) a Source: [C4_Container Diagram Sample - techtribesjs.puml](samples/C4_Container%20Diagram%20Sample%20-%20techtribesjs.puml) -![techtribesjs](http://www.plantuml.com/plantuml/png/pLLjRzis4FxkNt78lco04x-uYRCYDUeNk5sn3btihX_Q8g34iyIM8ZMIgkEk_U-ZICKJBGjRaHOT3KWGUVVSSm_lpe-r8SeK6U_ezqpaH94CA6v8mSqQRysKiqHaA0p4ze6gPhLL97_5g4bXsE_NzZDo-nor9Wcks4U4mNdzK65iY4WumbyTi6jbCL6QNOvBAOnt6BeJdH8gjqmai25SO-TpdI0n92BwVY1JfUIsGfXBBXNySE6MsocHchjr_C_7qhgwYcGXA56xoUIENSYXZN6_4U20nWEttEvCAeggRNzbTXo14fqYRMEPez9IU8uDFXNmqgs0HhWx8_7xH9NvLcVzomV3yQn9iJyUpIwMRLnicQ4IXDzy6r8Nb-MlIUfoMlxQIEcTDfXzRIw3mSNbRD7aCfgFb_F-lmhqRKZzx5QxGCt6-zxwX5J-9_A4TnPRSC84ggzDvy7eSh4u_nA9lYiR8tCm4Y9fZBICM2aHawAJCegWzoGw71CK51HBKjFvz0Y2PR_NrWW-TJvTLKDcKfs07nh-oBVw_kYkC08RNs8JP-0Bnk_xQsxu1ZO-M--xbzGUMUQUVsTV0N3owD5KIB7BPA7XfKPr0iT67T50xink2cjs094a2XDYaEun0jVzyJ5VcZ71j56aLFouVs1o1CDWd1h58jHdxpIyNZantfv0y3zdWUA1Bolt211UOGJJFESiTZ7UY5xlIhEF-70mdBn-HZwGBgnonKG2p_-OTs4jCsi8uxFRjrUzqcxIwxsnNZ3bN6urb1HrML4V66uXHvbpx8Ads7MNWi9q0J_Obzru9oFxH1EVmKR934oAm6LCE9IPTO6oX1dxHGI5NzQWBNDfLGexXcZOOdH3yjobLxMLo-uQkKlBGYogxJ33vxlLxx_2-Tbv8w6LZOIwaO9xGuPPX4gdBBSxXB_NXob5X2Qb-HDcdXOHACnbbUWHzWhv3OsQTxDazktlD6IzdAv7m-DyDH8Lfy04nLlKHu9jBAXlcePQlqahXXFAenr89KKY5pCOdWrRnF9tUBrQzQRbDDaWKWq_HbmcODCt-YTtZsQBQ8un4rB_oPiglCmjHrJDoeGnpANGacDPmGUCl9U6N4cNSRUA6rw98rHL9KW117IS8YquKh2gi6Cq2y_73i-0vdhBZ3aO8rvdxsRyUUZakRJw9CoaHHIwpAoSkjKZAayxuSY2qzF9NOV0GujXDTMeGq6VhjSlLlzeUDAfpQvxW0G3x1v0bODpzkrI-LuZeRxmt5rk5IjltSWGpzPrxzbYDk-wGeJHg7_HWbxhZqQ4mD2NQyFcUCzicSAo58sC9Iz9A0F3SNymhhEe2WjENxxuJrcwtltIL8CWpMHVtUaNMeRPjcj-_znjgAfJgc1FqEox69ZOI9MvOghD4aUbjO2Q0NnRrV13t4WM1l8YuYo6M5Bqeu8PgHX-QIpVaBLG-sbJQ2QISbYwHFO3ior07RygZTFNAQCKnTlhq_fKVuo25Xd_6m00 "techtribesjs") +![techtribesjs](https://www.plantuml.com/plantuml/png/0/ZLLDSziu3BthLs1zgJAZjTkatSpigKwS9csTZqRoPdhIK19iiwL8BKd5yNJwtmjIiYp5tSdwO54W2Bm7F53lZMNQrgM0aSLyRJNFq7mpe-0FBdDH5mXhQolpzsIYsMQyudPTPxL1dIjfKTfnhie9ApHdyb7KLJqvV_lddM3IBgxd4y4i6akcz9oy6PUennMb2bv1BUbWIG70hX6MIWYruN85Wfo0oG86srmRMYcWn21KpeJOKemEuM62O3xzUhj8qkJsBftTFjo4Hy6hrZIDq_ZpHN9-HRRMzF0nkKhd5vSNDpCo1i4TQgDaUl5aGoQLt9QgDgaZ7S5ekZF0WWoZezOvPAkLnXKHBZhFplBSjIYvvCPgPZcbsRaFhBiZGRmr5ilqJDMoO7eRvc-YVgV6rAgZ7m7Gp_zrTGWtcAMigiZx0JEOLfNWkGyz8jCdziWYY2ljQdxzpta4YIff6qx7Jsv_wlfXNBsrSOL_vBY12bKbC88cSmIj12B0HtgGuPlAw1zjFeQbLgNldMyNEC0H59pqGs-klnyJC9XRvKaEaC-oKAD8YunmtAFmcEdGZ5cMCOCEtlKs_ZA7T-Dt3TgOmg0vmEUVK6AP4Oirfr9Gyk_cETwC5IldVidjLPs1nagrB0wWXKikqFYEKDeFz09DVnoA3zFavBW7no3J-HguBF09pUzeIcN-5NJWHZawZY3uivwYaYirEuFZyV60f2_iVHnFffOMIyJ2G9W9jGA2RSsHBwxT8Dh3b65T5QH7fxP5izff0KwTbr54Y9GowXoeg5fvqb4RT5YdTbIz3e1Koy3aQongGQAdPd67uMSdOZTGTiDj0o5fLkJHssuk6DfjiWmt7Kq2C3fpJySk87qSZEXU-3H3nd6vIfAxcFozz_CvVS7zTxFwtqVycMwx9sDMjArp1TjexafhbU_hb_daq-oCHh1IsiB9oUk_sjnTd87gzh6Uk-tarFFe2Md3DRfkMfKhqIOxFdtzvhI5dIxsydW1UE6K-WBwVhW1_eUE_87V8O73SlrVElkeUyLTadvtWgQvN2fTDfVjVcQwilL5q8NQgzEv3Y9aghPGrHdTiZGGz57oyy5fQ3c-47KdQnzqDqorSLSp3Re7rnlsVYZ7TSwswNrtO-vBJLllKHRqDVm5 "techtribesjs") ### Message Bus and Microservices Source: [C4_Container Diagram Sample - message bus.puml](samples/C4_Container%20Diagram%20Sample%20-%20message%20bus.puml) -![messagebus](http://www.plantuml.com/plantuml/png/pPPjRzis4CVV-rCStBVnx3mqoOh4gEqaQukc3v67laY3W18l4X6P94ZAgRVqku-K55aofMx6MY0qOC2yq_z-l3iVzLeReaosI7lwdd5955a0nJkIfMQEtymaPJ5V83SGsIzKDQy7HUGNHaq2UwDHRNz1lbsYrYJ6WFs5iFkoRbGO6SBZ5E7l7jWLM4qKPYNnGd1JFB2NMtH2g7XWF8OxachiVQy34aD2el-Vo4GfyL0gp4Gg5Bmup5U-uvJytRh-zxPZdPo48kEKgDLu_4JNPEWY7da1DZ0EyfNlJeMYgBhs0xDA4IZH2T8kIebA2rumUZoby4M-AWn_TqgY-rYvyvQsqV71tj7KHnmTxKyFBxfOR9kXuYIz_JLGXyVkuqCTJzod2qgljC75psRPtJqydfxvBFkpeulPw5yJz6kWVizNTuByFzvpo4-9ydpIqwnPPCK9uwX-Dix1_l7PsSjjKlGCQBQuBvpH20b6G2YC4VOOpEML2TvB64NG5NalnHWv1SNYnFGUJw6nxE-vTOB7tkD9EPd6fGMAILEOYlbGcPwwgU5JzEKuToYwhDWlUiDxjk5JfAXujgg3DLdoWh-tlXJxfwUpJDj3e_hAltAOG5J-x4DjQ1DTxRS_36_vdL0Buh86rq5ESzE7nktaH7RBRcWNcKYPiiY9M9RXy4JR-hpQtHjVloDBeYF5fDc12O-pbAYRaw4pZuV30ZnDnSEQKhjoBWWdCO99a2cGIjon5FlGR4uBHQJy0LE0QiaYz7bs893AtR9J8Sm6pJn1a89n0-8EI1IXrc3pK-41MwVB9whSRdKHtCSh6nYccMwINP4mPERoyoQG8bnBeKoE4MQQSSU4I-H6jn0i2lrRw-a7lqAdP8_UdfohB5njX9yf90OrS7Veb6ca-Qp8OLIb9ZCbXSOsdigfEoMJZ3BJJZHxCVpjm_by0-gJ4aj6BPLGCU5CvzKOFDWj84whU8EAMCeCQuCgl1f0vG1iTj1PkTba-gX8bBhNhcW3Ap12eTwwLMZe4LHrwa2uN0MVtxT79sMfh8N24fMsqVDUJjDrzrGb91GI4MrRIHfs5j51D5dFbyXBGpjnBKr0Gf6Pihd19CH0GfPelwH4ZhIxb4xAtY5LxWS3QvKINZcsqpyrwYRLc_dyKx3cwVUSy-3gxHzlveEnzpT-af6Kc8uAWyjjt0n2z8f7E_0k-FXXw0NqOWpUdr_C6zW1SgghR8Yc-1SC0n7Te_cnQ7ca-bneg5TdoVB3hQErYTLJGyDIfoXZqLDiS_oVJMTrlZg5LVEdmtzayuIADjXIn8_UPEeuOh_NY5QFx_oQpvJX66yDTvqmIf7VN0qsPj9hovujqdy0 "messagebus") +![messagebus](https://www.plantuml.com/plantuml/png/0/bLN1Sjem4BtxAxRqa6Gc2Msdfvv2W6dQaa0mcKnFdhKiG1DPqaWoAUdqtxkoZR49CqsvOArNxxrzkmjNpgFrHIwXbtFdSCNJmlMYTq8nMMGSrjuRzwNVj_XykH9-NT1hRfbMdYj_oNJUnymAL1jPcA8__7mnawZym-saBz5pvocK32aRXUBsqX1HT0A5eeiv0O1VSrXgAVMpK2kGb0IeCkYy5jRHamOY1gaPIhabZ4RXQuB8FGbbq68EpnRDeyZy6Zvz-D2Av_ZhjYet5Y-yV1bD1Z-d3ujaCPqbe-dZtUbPT5A71d4I_nWlXZSKgqEFtnOtoMJyTNmtec0KpRXrMfsomdcTStiEm-QfDu1Tk4UfyTPvdYVNkb0Pskqf-qWfkspuffRQvkY5Lhqp-1r5G9-clbCqffqzC4OALcLJ_3jkq34hZ3-7WLeL4cq83uA_hX7XWfavAYe-62mi6AkNGlAWhaktkv9GppU2yJPtN8LslESG6nkQUAsr3y45zSveGLtKIq36o6vgjMraW6YNUiXS3sD2uqPOTQ_WccQJZdDCK-5lxqiQYyePRNq9JkbqdPZuXkR7lSQrFEIIpbP9yrsiNTEyIBVXUsXv66HGGQiKZcUGeSUIhG43KrYZ7Jz2Y4KcV8ji4Cvjek7x_kNTU14UPrPlH4PasgvG2LTwS_5C8IXX0jCIcP3qU8HhbEuRbgNjNer8SOgkv9jQP9B3nqyid6AlBNTlQmhXx-qh2VREjHbkj_7zf0MEE_DUoBmD3I21bqCXvRvXZQcOmLgp__4siEoT3QT0FWuJi3_MMbhr0QQwyFMaq2QWXpLkw2UFbemhdX7VdoYQSzdQwch_7e8Q-hvPB6Pna4L9oRnQpYChys2oSeIEcGoX_bK0GxTLx1o-nzExVWTuScGDAnqnLvbh2j01vP6diMPFtDFjIjNhoztTga0QRKKfjWLwrh5WZz8TjThUiekY-Z4QNG_h4hhRV6m5toQY0tEuMF-6A36Ei1yCzK4f5VK1MtVowXirLtadck2Mp3_2ra6Yn2lIJVzQVm40 "messagebus") ## Background diff --git a/images/vscode_c4plantuml_snippets.gif b/images/vscode_c4plantuml_snippets.gif index 6abfae8f2a0f12ba17d15d20f68ed6188b958db8..d16af2daa59bae6b052b69975705f83965f05214 100644 GIT binary patch literal 4248504 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ᯚwF@Fosc#w-_J+uaXrJrjdkeYy=XID2oJ*OA7KE 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%0Ak|Hv>SS&-hj{YGB!Jwsl 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�YEUk$J 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