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
+}
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
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..505776d 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.
@@ -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")