From 9fe47db9c7834d25abbde62f667202df0d31349d Mon Sep 17 00:00:00 2001 From: Kamil Duda Date: Wed, 10 Jun 2020 13:28:20 +0200 Subject: [PATCH 1/4] Add Async relationships --- C4.puml | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/C4.puml b/C4.puml index d28711a..36b7cdc 100644 --- a/C4.puml +++ b/C4.puml @@ -68,39 +68,71 @@ center footer Warning: Created for discussion, needs to b !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_Async(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "..>") +!define Rel_Async(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_Async(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<..") +!define Rel_Back_Async(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_Neighbor_Async(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, ".>") +!define Rel_Neighbor_Async(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_Back_Neighbor_Async(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<.") +!define Rel_Back_Neighbor_Async(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_D_Async(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, ".DOWN.>") +!define Rel_D_Async(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, ".DOWN.>") +!define Rel_Down_Async(e_from,e_to, e_label) Rel_D_Async(e_from,e_to, e_label) +!define Rel_Down_Async(e_from,e_to, e_label, e_techn) Rel_D_Async(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_U_Async(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, ".UP.>") +!define Rel_U_Async(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, ".UP.>") +!define Rel_Up_Async(e_from,e_to, e_label) Rel_U_Async(e_from,e_to, e_label) +!define Rel_Up_Async(e_from,e_to, e_label, e_techn) Rel_U_Async(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_L_Async(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, ".LEFT.>") +!define Rel_L_Async(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, ".LEFT.>") +!define Rel_Left_Async(e_from,e_to, e_label) Rel_L_Async(e_from,e_to, e_label) +!define Rel_Left_Async(e_from,e_to, e_label, e_techn) Rel_L_Async(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) +!define Rel_R_Async(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, ".RIGHT.>") +!define Rel_R_Async(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, ".RIGHT.>") +!define Rel_Right_Async(e_from,e_to, e_label) Rel_R_Async(e_from,e_to, e_label) +!define Rel_Right_Async(e_from,e_to, e_label, e_techn) Rel_R_Async(e_from,e_to, e_label, e_techn) + ' 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 +!define Lay_L(e_from, e_to) e_from -[hidden]L- e_to From f2c07c2e9df607604c304cfe7899b0e9048139b2 Mon Sep 17 00:00:00 2001 From: Kamil Duda Date: Wed, 10 Jun 2020 13:31:53 +0200 Subject: [PATCH 2/4] Add Relationship Async snipper --- .vscode/C4.code-snippets | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets index 275dac1..7320c4a 100644 --- a/.vscode/C4.code-snippets +++ b/.vscode/C4.code-snippets @@ -167,6 +167,15 @@ ], "description": "Add unidirectional Relationship to C4 diagram" }, + "C4_Relationship_Async": { + "scope": "diagram", + "prefix": "Relationship Async", + "body": [ + "Rel_Async(${1:from_alias}, ${2:to_alias}, \"${3:label}\")", + "$0" + ], + "description": "Add unidirectional asynchronous Relationship to C4 diagram" + }, "C4_Relationship_Techn": { "scope": "diagram", "prefix": "Relationship with Technology", @@ -216,4 +225,4 @@ ], "description": "Add a generic boundary to C4 diagram." } -} \ No newline at end of file +} From 958e2c4505066687688eb5ead70e5681d3467908 Mon Sep 17 00:00:00 2001 From: Kamil Duda Date: Mon, 29 Jun 2020 14:36:24 +0200 Subject: [PATCH 3/4] Ude local C4 library distribution --- C4_Component.puml | 4 ++-- C4_Container.puml | 6 +++--- C4_Context.puml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/C4_Component.puml b/C4_Component.puml index 40a8a24..542954b 100644 --- a/C4_Component.puml +++ b/C4_Component.puml @@ -1,6 +1,6 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml +'!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 +!include C4_Container.puml ' Scope: A single container. ' Primary elements: Components within the container in scope. diff --git a/C4_Container.puml b/C4_Container.puml index 2bc697c..2fecf93 100644 --- a/C4_Container.puml +++ b/C4_Container.puml @@ -1,6 +1,6 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml +'!includeurl 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 +!include C4_Context.puml ' Scope: A single software system. ' Primary elements: Containers within the software system in scope. @@ -56,4 +56,4 @@ endlegend ' Boundaries ' ################################## -!define Container_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Container") \ No newline at end of file +!define Container_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Container") diff --git a/C4_Context.puml b/C4_Context.puml index a28a9cb..6960a35 100644 --- a/C4_Context.puml +++ b/C4_Context.puml @@ -1,6 +1,6 @@ -!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4.puml +'!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4.puml ' uncomment the following line and comment the first to use locally -' !include C4.puml +!include C4.puml ' Scope: A single software system. ' Primary elements: The software system in scope. @@ -99,4 +99,4 @@ endlegend ' ################################## !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 +!define System_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "System") From 2575567a7a7bd124802a36210e05cf80fc0a6d09 Mon Sep 17 00:00:00 2001 From: Kamil Duda Date: Mon, 29 Jun 2020 14:54:07 +0200 Subject: [PATCH 4/4] Add Person icon --- C4_Context.puml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/C4_Context.puml b/C4_Context.puml index a28a9cb..6d8c6ac 100644 --- a/C4_Context.puml +++ b/C4_Context.puml @@ -60,6 +60,9 @@ skinparam database<> { BorderColor #8A8A8A } +!define ICON_SCALE 3 +!define PERSON_ICON <&person,scale=ICON_SCALE> + ' Layout ' ################################## @@ -77,11 +80,11 @@ endlegend ' 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(e_alias, e_label) rectangle "PERSON_ICON\n ==e_label" <> as e_alias +!define Person(e_alias, e_label, e_descr) rectangle "PERSON_ICON\n ==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 Person_Ext(e_alias, e_label) rectangle "PERSON_ICON\n ==e_label" <> as e_alias +!define Person_Ext(e_alias, e_label, e_descr) rectangle "PERSON_ICON\n ==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 @@ -99,4 +102,4 @@ endlegend ' ################################## !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 +!define System_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "System")