!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 ' Scope: A single container. ' Primary elements: Components within the container in scope. ' Supporting elements: Containers (within the software system in scope) plus people and software systems directly connected to the components. ' Intended audience: Software architects and developers. ' Colors ' ################################## !global $COMPONENT_FONT_COLOR = "#000000" !global $COMPONENT_BG_COLOR = "#85BBF0" !global $COMPONENT_BORDER_COLOR = "#78A8D8" !global $EXTERNAL_COMPONENT_BG_COLOR = "#CCCCCC" !global $EXTERNAL_COMPONENT_BORDER_COLOR = "#BFBFBF" ' Styling ' ################################## skinparam rectangle<> { StereotypeFontColor $COMPONENT_FONT_COLOR FontColor $COMPONENT_FONT_COLOR BackgroundColor $COMPONENT_BG_COLOR BorderColor $COMPONENT_BORDER_COLOR } skinparam database<> { StereotypeFontColor $COMPONENT_FONT_COLOR FontColor $COMPONENT_FONT_COLOR BackgroundColor $COMPONENT_BG_COLOR BorderColor $COMPONENT_BORDER_COLOR } skinparam queue<> { StereotypeFontColor $COMPONENT_FONT_COLOR FontColor $COMPONENT_FONT_COLOR BackgroundColor $COMPONENT_BG_COLOR BorderColor $COMPONENT_BORDER_COLOR } skinparam rectangle<> { StereotypeFontColor $COMPONENT_FONT_COLOR FontColor $COMPONENT_FONT_COLOR BackgroundColor $EXTERNAL_COMPONENT_BG_COLOR BorderColor $EXTERNAL_COMPONENT_BORDER_COLOR } skinparam database<> { StereotypeFontColor $COMPONENT_FONT_COLOR FontColor $COMPONENT_FONT_COLOR BackgroundColor $EXTERNAL_COMPONENT_BG_COLOR BorderColor $EXTERNAL_COMPONENT_BORDER_COLOR } skinparam queue<> { StereotypeFontColor $COMPONENT_FONT_COLOR FontColor $COMPONENT_FONT_COLOR BackgroundColor $EXTERNAL_COMPONENT_BG_COLOR BorderColor $EXTERNAL_COMPONENT_BORDER_COLOR } ' Layout ' ################################## !procedure LAYOUT_WITH_LEGEND() hide stereotype legend right |**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 | |<$EXTERNAL_CONTAINER_BG_COLOR> external container | |<$EXTERNAL_COMPONENT_BG_COLOR> external component | endlegend !endprocedure ' Elements ' ################################## !function $getComponent($label, $techn, $descr, $sprite) !if ($descr == "") && ($sprite == "") !return '=='+$label+'\n//['+$techn+']//' !endif !if ($descr == "") && ($sprite != "") !return '<$'+$sprite+'>\n=='+$label+'\n//['+$techn+']//' !endif !if ($descr != "") && ($sprite == "") !return '=='+$label+'\n//['+$techn+']//\n\n '+$descr !endif !if ($descr != "") && ($sprite != "") !return '<$'+$sprite+'>\n=='+$label+'\n//['+$techn+']//\n\n '+$descr !endif !endfunction !unquoted procedure Component($alias, $label, $techn, $descr="", $sprite="") rectangle "$getComponent($label, $techn, $descr, $sprite)" <> as $alias !endprocedure !unquoted procedure ComponentDb($alias, $label, $techn, $descr="", $sprite="") database "$getComponent($label, $techn, $descr, $sprite)" <> as $alias !endprocedure !unquoted procedure ComponentQueue($alias, $label, $techn, $descr="", $sprite="") queue "$getComponent($label, $techn, $descr, $sprite)" <> as $alias !endprocedure !unquoted procedure Component_Ext($alias, $label, $techn, $descr="", $sprite="") rectangle "$getComponent($label, $techn, $descr, $sprite)" <> as $alias !endprocedure !unquoted procedure ComponentDb_Ext($alias, $label, $techn, $descr="", $sprite="") database "$getComponent($label, $techn, $descr, $sprite)" <> as $alias !endprocedure !unquoted procedure ComponentQueue_Ext($alias, $label, $techn, $descr="", $sprite="") queue "$getComponent($label, $techn, $descr, $sprite)" <> as $alias !endprocedure