!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 ' Scope: A single software system. ' Primary elements: The software system in scope. ' Supporting elements: People and software systems directly connected to the software system in scope. ' Intended audience: Everybody, both technical and non-technical people, inside and outside of the software development team. ' Colors ' ################################## !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 } skinparam rectangle<> { 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 } skinparam rectangle<> { 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 } skinparam database<> { StereotypeFontColor $ELEMENT_FONT_COLOR FontColor $ELEMENT_FONT_COLOR BackgroundColor $EXTERNAL_SYSTEM_BG_COLOR BorderColor #8A8A8A } ' Layout ' ################################## !procedure LAYOUT_WITH_LEGEND() hide stereotype legend right |**Legend** | |<$PERSON_BG_COLOR> person | |<$SYSTEM_BG_COLOR> system| |<$EXTERNAL_PERSON_BG_COLOR> external person | |<$EXTERNAL_SYSTEM_BG_COLOR> external system | endlegend !endprocedure ' Elements ' ################################## !unquoted procedure Person($alias, $label) rectangle "==$label" <> as $alias !endprocedure !unquoted procedure Person($alias, $label, $descr) rectangle "==$label\n\n $descr" <> as $alias !endprocedure !unquoted procedure Person_Ext($alias, $label) rectangle "==$label" <> as $alias !endprocedure !unquoted procedure Person_Ext($alias, $label, $descr) rectangle "==$label\n\n $descr" <> as $alias !endprocedure !unquoted procedure System($alias, $label) rectangle "==$label" <> as $alias !endprocedure !unquoted procedure System($alias, $label, $descr) rectangle "==$label\n\n $descr" <> as $alias !endprocedure !unquoted procedure System_Ext($alias, $label) rectangle "==$label" <> as $alias !endprocedure !unquoted procedure System_Ext($alias, $label, $descr) rectangle "==$label\n\n $descr" <> as $alias !endprocedure !unquoted procedure SystemDb($alias, $label) database "==$label" <> as $alias !endprocedure !unquoted procedure SystemDb($alias, $label, $descr) database "==$label\n\n $descr" <> as $alias !endprocedure !unquoted procedure SystemDb_Ext($alias, $label) database "==$label" <> as $alias !endprocedure !unquoted procedure SystemDb_ext($alias, $label, $descr) database "==$label\n\n $descr" <> as $alias !endprocedure ' Boundaries ' ################################## !unquoted function Enterprise_Boundary($alias, $label) !return Boundary($alias, $label, "Enterprise") !endfunction !unquoted function System_Boundary($alias, $label) !return Boundary($alias, $label, "System") !endfunction