' C4-PlantUML, version 1.0.0 ' https://github.com/RicardoNiepel/C4-PlantUML ' Colors ' ################################## !define ELEMENT_FONT_COLOR #FFFFFF ' Styling ' ################################## !define TECHN_FONT_SIZE 12 skinparam defaultTextAlignment center skinparam wrapWidth 200 skinparam maxMessageSize 150 skinparam rectangle { StereotypeFontSize 12 shadowing false } skinparam database { StereotypeFontSize 12 shadowing false } skinparam Arrow { Color #666666 FontColor #666666 FontSize 12 } skinparam rectangle<> { Shadowing false StereotypeFontSize 0 FontColor #444444 BorderColor #444444 BorderStyle dashed } ' Layout ' ################################## !definelong 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 !define LAYOUT_TOP_DOWN top to bottom direction !define LAYOUT_LEFT_RIGHT left to right direction ' 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 ' 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_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_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