Merge branch 'feature/126' into extended (3)

pull/140/head
KIRCHSTH 5 years ago
commit 6834c9f1f6

@ -144,14 +144,22 @@ skinparam rectangle<<boundary>> {
$tagSkin $tagSkin
!endprocedure !endprocedure
' arrow colors cannot start with # (legend background has to start with #)
!function ColorNoHash($c)
!if (%substr($c, 0, 1) == "#")
!$c = %substr($c,1)
!endif
!return $c
!endfunction
!unquoted procedure $defineRelSkinparams($tagStereo, $textColor, $lineColor) !unquoted procedure $defineRelSkinparams($tagStereo, $textColor, $lineColor)
!$elementSkin = "skinparam Arrow<<" + $tagStereo + ">> {" + %newline() !$elementSkin = "skinparam Arrow<<" + $tagStereo + ">> {" + %newline()
!$elementSkin = $elementSkin + " Color " !$elementSkin = $elementSkin + " Color "
!if ($lineColor!="") !if ($lineColor!="")
!$elementSkin = $elementSkin + $lineColor !$elementSkin = $elementSkin + ColorNoHash($lineColor)
!endif !endif
!if ($textColor!="") !if ($textColor!="")
!$elementSkin = $elementSkin + ";text:" + $textColor !$elementSkin = $elementSkin + ";text:" + ColorNoHash($textColor)
!endif !endif
!$elementSkin = $elementSkin + %newline() !$elementSkin = $elementSkin + %newline()
!$elementSkin = $elementSkin + "}" + %newline() !$elementSkin = $elementSkin + "}" + %newline()
@ -211,12 +219,12 @@ $elementSkin
!$bg = "#" + $bg !$bg = "#" + $bg
!endif !endif
' !$tagEntry = $tagEntry + "<" + $bg +">" ' !$tagEntry = $tagEntry + "<" + $bg +">"
' <U+23AF> ..white line, not working with png use - ' <U+2500> ..white line
!if ($lineColor!="") !if ($lineColor!="")
!$tagEntry = $tagEntry + "<color:"+$lineColor+"> -</color> " !$tagEntry = $tagEntry + "<color:"+$lineColor+"> <U+2500></color> "
!else !else
' !$tagEntry = $tagEntry + "<color:"+$bg+"> -</color> " ' !$tagEntry = $tagEntry + "<color:"+$bg+"> <U+2500></color> "
!$tagEntry = $tagEntry + " - " !$tagEntry = $tagEntry + " <U+2500> "
!endif !endif
!if ($textColor!="") !if ($textColor!="")
!$tagEntry = $tagEntry + "<color:"+$textColor+">" !$tagEntry = $tagEntry + "<color:"+$textColor+">"
@ -235,7 +243,7 @@ $elementSkin
!return $tagEntry !return $tagEntry
!endfunction !endfunction
!unquoted procedure $addTagToDynamicLegend($tagStereo, $bgColor="", $fontColor="", $borderColor="", $shadowing="") !unquoted procedure $addTagToLegend($tagStereo, $bgColor="", $fontColor="", $borderColor="", $shadowing="")
'' ignore workaround tags with & '' ignore workaround tags with &
' !if (%strpos($tagStereo, "&")<0) ' !if (%strpos($tagStereo, "&")<0)
!$tagEntry = $tagLegendEntry($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing) !$tagEntry = $tagLegendEntry($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing)
@ -244,7 +252,7 @@ $elementSkin
' !endif ' !endif
!endprocedure !endprocedure
!unquoted procedure $addRelTagToDynamicLegend($tagStereo, $textColor="", $lineColor="") !unquoted procedure $addRelTagToLegend($tagStereo, $textColor="", $lineColor="")
'' ignore workaround tags with & '' ignore workaround tags with &
' !if (%strpos($tagStereo, "&")<0) ' !if (%strpos($tagStereo, "&")<0)
!$tagEntry = $tagRelLegendEntry($tagStereo, $textColor, $lineColor) !$tagEntry = $tagRelLegendEntry($tagStereo, $textColor, $lineColor)
@ -272,15 +280,15 @@ $elementSkin
!endprocedure !endprocedure
' used by new defined tags ' used by new defined tags
!unquoted procedure AddTagSupport($tagStereo, $bgColor="", $fontColor="", $borderColor="", $shadowing="") !unquoted procedure AddElementTag($tagStereo, $bgColor="", $fontColor="", $borderColor="", $shadowing="")
$defineSkinparams($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing) $defineSkinparams($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing)
$addTagToDynamicLegend($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing) $addTagToLegend($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing)
!endprocedure !endprocedure
' used by new defined rel tags ' used by new defined rel tags
!unquoted procedure AddRelTagSupport($tagStereo, $textColor="", $lineColor="") !unquoted procedure AddRelTag($tagStereo, $textColor="", $lineColor="")
$defineRelSkinparams($tagStereo, $textColor, $lineColor) $defineRelSkinparams($tagStereo, $textColor, $lineColor)
$addRelTagToDynamicLegend($tagStereo, $textColor, $lineColor) $addRelTagToLegend($tagStereo, $textColor, $lineColor)
!endprocedure !endprocedure
' update the style of existing elements like person, ... ' update the style of existing elements like person, ...

@ -25,7 +25,7 @@ skinparam rectangle<<node>> {
' Layout ' Layout
' ################################## ' ##################################
' comment if node should not be added to legend. No dynamic legend extension required ' comment if node should not be added to legend. No calculated legend extension required
SetDefaultLegendEntries("person\nsystem\ncontainer\nexternal_person\nexternal_system\nexternal_container\nnode") SetDefaultLegendEntries("person\nsystem\ncontainer\nexternal_person\nexternal_system\nexternal_container\nnode")
' Line breaks ' Line breaks

@ -28,7 +28,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![LAYOUT_TOP_DOWN Sample](http://www.plantuml.com/plantuml/png/NP1F3vD04CNl-od6Ue0c5LBZoPE8HW_zGuJQU28BJ6NZ_jdi3i76-DqTqjeQkRomxysRt-wxI3BGP3JiYc_7KzCsnwhzS3mVe9R6QnGlbEtrD22CH3w-pVCWv-oxed7gfeYXTvRGKjOxa_zGeHyZZNdvvbMbfQNJVfVZJ_O77FYmBJaibSMGUTueH9x0mH5OH0v0XxtaIg1HHL2H5M70YvmqGPAB__ZIjH0LXkXiAWUZx0PMnQ8gKf3amcejwciaDErxDzb1XclQRpUGtAwLhE6N0FuUIEcCNIkzvvupTb1uhrKlIJcxugFovGQAkieE7niU2GYliotilvQBLsZjvWYC7XZQ0J-5bnmn3Avu5pIp8i80f0ngtXMPxVUTBgMRoJtt69lY2-g_jtfYdI9Fidvkcghcr19wkC-QJqYHVt6HIt3cdv4_ "LAYOUT_TOP_DOWN Sample") ![LAYOUT_TOP_DOWN Sample](https://www.plantuml.com/plantuml/png/NP1F3vD04CNl-od6Ue0c5LBZoPE8HW_zGuJQU28BJ6NZ_jdi3i76-DqTqjeQkRomxysRt-wxI3BGP3JiYc_7KzCsnwhzS3mVe9R6QnGlbEtrD22CH3w-pVCWv-oxed7gfeYXTvRGKjOxa_zGeHyZZNdvvbMbfQNJVfVZJ_O77FYmBJaibSMGUTueH9x0mH5OH0v0XxtaIg1HHL2H5M70YvmqGPAB__ZIjH0LXkXiAWUZx0PMnQ8gKf3amcejwciaDErxDzb1XclQRpUGtAwLhE6N0FuUIEcCNIkzvvupTb1uhrKlIJcxugFovGQAkieE7niU2GYliotilvQBLsZjvWYC7XZQ0J-5bnmn3Avu5pIp8i80f0ngtXMPxVUTBgMRoJtt69lY2-g_jtfYdI9Fidvkcghcr19wkC-QJqYHVt6HIt3cdv4_ "LAYOUT_TOP_DOWN Sample")
Using `LAYOUT_LEFT_RIGHT()` Using `LAYOUT_LEFT_RIGHT()`
@ -50,7 +50,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![LAYOUT_LEFT_RIGHT Sample](http://www.plantuml.com/plantuml/png/PL1DhzCm4BpxLopbq5GgYOeuSMg8IelKGjIa84wHcop4mX-MlL6e4F_zRTI-zadFbvLtPdTcTXr91XgCXdt-yzkfRlQRptLp_BBTrL19upMADygsUkWGUY8VFsPPa6FwMr4_d8U8eNMMq5BQEfFzKQ7j8_LPyU5TgQMbqs6VuL_6E-ousHHCbifYI3rh2l5AD5a8KMA8pYQoCyekOPPFLKKAaboOBKHrYOIc-UG6sybmIThL4kPNh_C5_1F0xwwJZ7XkfFUyvmUU8VTUgrQISdR6hUBj4lAgJBzkQXu92E_J5Ho-5nEMQ-t625F42EI0ytd953DeKgm5zQY8C00fWvgr8dlxVtENq1NaFJSQW-A8-ZdLmzOfyYJNNLsN5RCcqXrzhDaYHVxYL7u5PrwEhFc-VCud "LAYOUT_LEFT_RIGHT Sample") ![LAYOUT_LEFT_RIGHT Sample](https://www.plantuml.com/plantuml/png/PL1DhzCm4BpxLopbq5GgYOeuSMg8IelKGjIa84wHcop4mX-MlL6e4F_zRTI-zadFbvLtPdTcTXr91XgCXdt-yzkfRlQRptLp_BBTrL19upMADygsUkWGUY8VFsPPa6FwMr4_d8U8eNMMq5BQEfFzKQ7j8_LPyU5TgQMbqs6VuL_6E-ousHHCbifYI3rh2l5AD5a8KMA8pYQoCyekOPPFLKKAaboOBKHrYOIc-UG6sybmIThL4kPNh_C5_1F0xwwJZ7XkfFUyvmUU8VTUgrQISdR6hUBj4lAgJBzkQXu92E_J5Ho-5nEMQ-t625F42EI0ytd953DeKgm5zQY8C00fWvgr8dlxVtENq1NaFJSQW-A8-ZdLmzOfyYJNNLsN5RCcqXrzhDaYHVxYL7u5PrwEhFc-VCud "LAYOUT_LEFT_RIGHT Sample")
## LAYOUT_WITH_LEGEND() or SHOW_LEGEND(?hideStereotype) ## LAYOUT_WITH_LEGEND() or SHOW_LEGEND(?hideStereotype)
@ -78,11 +78,11 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![LAYOUT_WITH_LEGEND Sample](http://www.plantuml.com/plantuml/png/PL1Fxz904BtlfnZnG4cm3SQJ9sebO0BOs2Bnr2pjQ3VkdytkD9KOlxlJW63osyjavxsPzzwi8yb0Wz6mpxzzFjND-LEzQ_QRxURu4Iffl4RnIjbM3nr2J-JZ-omBSan_AEg7on0njCuIMafRPxAVAhHzf3uhthqfjRHqEkmp_CLuXnqtcuB9KbaCgMTH8Lwg9WiXIWpHsKHsHjabpFAfgaX1aWkpXQYkaT0q7znWEnckIRjQmlncThw0tmBuFOII4I-Dz9xtdF42kVTQjPAKipDk5Q-Na5TbUjpKF18GtgOhE7mj9YpNseqHfemHo047z98fPj2aM0lgKH5X0586DMj5zlRdxYwX6yXxxZG6nHVK_r8zRPqYJtBTrNLPCMiYFT3dcYrIv2zEvNjmvl-HDH-Ox_aN "LAYOUT_WITH_LEGEND Sample") ![LAYOUT_WITH_LEGEND Sample](https://www.plantuml.com/plantuml/png/PL1Fxz904BtlfnZnG4cm3SQJ9sebO0BOs2Bnr2pjQ3VkdytkD9KOlxlJW63osyjavxsPzzwi8yb0Wz6mpxzzFjND-LEzQ_QRxURu4Iffl4RnIjbM3nr2J-JZ-omBSan_AEg7on0njCuIMafRPxAVAhHzf3uhthqfjRHqEkmp_CLuXnqtcuB9KbaCgMTH8Lwg9WiXIWpHsKHsHjabpFAfgaX1aWkpXQYkaT0q7znWEnckIRjQmlncThw0tmBuFOII4I-Dz9xtdF42kVTQjPAKipDk5Q-Na5TbUjpKF18GtgOhE7mj9YpNseqHfemHo047z98fPj2aM0lgKH5X0586DMj5zlRdxYwX6yXxxZG6nHVK_r8zRPqYJtBTrNLPCMiYFT3dcYrIv2zEvNjmvl-HDH-Ox_aN "LAYOUT_WITH_LEGEND Sample")
Instead of a static legend (activated with `LAYOUT_WITH_LEGEND()`) a dynamic legend can be activated with `SHOW_LEGEND(?hideStereotype)`. Instead of a static legend (activated with `LAYOUT_WITH_LEGEND()`) a calculated legend can be activated with `SHOW_LEGEND(?hideStereotype)`.
The dynamic legend has following differences: The calculated legend has following differences:
* only relevant elements are listed * only relevant elements are listed
* custom tags/styles are supported * custom tags/styles are supported
* stereotypes can remain visible (with `SHOW_LEGEND(false)`) * stereotypes can remain visible (with `SHOW_LEGEND(false)`)
@ -105,7 +105,7 @@ SHOW_LEGEND()
@enduml @enduml
``` ```
![SHOW_LEGEND Sample](http://www.plantuml.com/plantuml/png/JL4z3zem4DtzAwvq84YGYAfJ9z8KmG0qQa8P8oUv5al-iEoB8bJrl_SYAE3bv7iVVa_UH9A11gEXsd-_D8VjRdlw1fKqNgFue6odXnxXIkJZbomBSan_AxeExH0nTCuIMaexPpAlfPriLf5whTgi-BmgfzNvUCYCZ8I1Lqt12gaiXjGpLuWIGtGsaRrHTWcpV9egKf3amcmXgXiBJVFL3RQNuPPqwoNCxzdc2_WZWC_JCXcnRQJtx7F15dBljUeaAMTdl2e-BY6lolIqhLaI43wbQpZ-B2OirzgD4QPA4SW1z_6IAMRGfBn6g4T5X0586TJyLkHiVn_f4hg3xFEWCIX-eFxVwXNh75d9Sr_NPSMiYVH4NpOxfCXNdCQluCoxHBpzKh8G6xJzOFG_ "SHOW_LEGEND Sample") ![SHOW_LEGEND Sample](https://www.plantuml.com/plantuml/png/JKzDR-8m4BtdLyoo1uB49cArfpsHfWWEGACcb6DaacbZrH-MFL6AglxtJbGAzUN9ypxqtZAGyDHh5VsIfb5zYz0HkV0_JRqOaXT9NN_g0_h66a93IMDr-YfzqmNgqlpVdq89GuVTDiKtvbji-LZdB1RIe4_S61qLw8CriMYrD7EOP2FAG5wGzPDPL9u3eQxlR6zQuSznivZ3j1JQAPpEu3q2VjV8UC1JBPpZd2EU87DEoKQGj6R2f_pt7BAoIFQhYYqUuM-oWDrJFdAPKdO8CAu9G1PuYXCiqRqYwHH2DKWYz41Iev860tVxkBIBwOlad8kCoUWHrVUgMwr3O2VZfggAabMZwChUOjP8WRyumhEt-gSbAZSFntgxMg_sz_4iMg9fUwq-0G00 "SHOW_LEGEND Sample")
## LAYOUT_AS_SKETCH() ## LAYOUT_AS_SKETCH()
@ -138,7 +138,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![LAYOUT_AS_SKETCH Sample](http://www.plantuml.com/plantuml/png/NL1DQzj04BtlhvYw1ylWIhZqr9DLOMgetOfARib9hAL9j6G_bjqHYWdvxnbXnmxPox3ptinxRzQHPA31QDZbTtyETPDNJVLhKnTRgAJn6iKdPLizT0WzaO_Viop8CNrGr0_78M9edIMqbBREP8ygj7saFYk-VIcrj7JOxp9yOhp3ZfjDmMIfB8RKiwGG7pMJXH0bXkXi8ZkZx19c-LHLf239XTb2LAT8Q9eVRh2T3AUaNIrXVhOwNy2p07vNcMJ4OoEzvpt_yGYvzrgrafIpCsuLdvUGLsNwUrFpI43ucgvW_w-Oi5nhDqQO4aOW1npFIwQOGPDYBQX7HOG1I1dKh1NPsyl5NK9daFTSQ0oAlwZVKjri7I9FSjtMTLanQo9TqTkQdqYHlpYL--3C-v4rdvUl-Ge0 "LAYOUT_AS_SKETCH Sample") ![LAYOUT_AS_SKETCH Sample](https://www.plantuml.com/plantuml/png/NL1DQzj04BtlhvYw1ylWIhZqr9DLOMgetOfARib9hAL9j6G_bjqHYWdvxnbXnmxPox3ptinxRzQHPA31QDZbTtyETPDNJVLhKnTRgAJn6iKdPLizT0WzaO_Viop8CNrGr0_78M9edIMqbBREP8ygj7saFYk-VIcrj7JOxp9yOhp3ZfjDmMIfB8RKiwGG7pMJXH0bXkXi8ZkZx19c-LHLf239XTb2LAT8Q9eVRh2T3AUaNIrXVhOwNy2p07vNcMJ4OoEzvpt_yGYvzrgrafIpCsuLdvUGLsNwUrFpI43ucgvW_w-Oi5nhDqQO4aOW1npFIwQOGPDYBQX7HOG1I1dKh1NPsyl5NK9daFTSQ0oAlwZVKjri7I9FSjtMTLanQo9TqTkQdqYHlpYL--3C-v4rdvUl-Ge0 "LAYOUT_AS_SKETCH Sample")
## HIDE_STEREOTYPE() ## HIDE_STEREOTYPE()
@ -163,7 +163,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![HIDE_STEREOTYPE Sample](http://www.plantuml.com/plantuml/png/NL1DJ-j03Bplh_3hEpIL-XBrYHEdXX1H90fHau8uHTl4a1NxiTfr52h4VsUZbXPnikmPpuozzCGTzKh2wlOwhyigt-GFrNEHGycLbSZ-2Dt8laNeYAo_J1B7X_XLKDVlUe-kCPfGKzmObRm9rtIUkYIx-5T8hccxlalmFU0jjc5OPu7CXKONs-38s2_BQCPOWSuR7V5M2Js7IJfMuSbnCcuoO-NU4whwolIwvMuVDOivJ0z9fpFuO0009vTem5tDhGqwJxY3r5ef6ax2w4aOPN_da9P5V9zNOSKX_8yNi7xCHYoLqWmUnWCza876ACi3HVMIX9K8rI28q049XL9ez27Rvp5TH0Smw1nf0MGRbDzNdMDjFVhHRrLLHHbO8-c4dcLka7neSImlpgYVAylmtV6PNm00 "HIDE_STEREOTYPE Sample") ![HIDE_STEREOTYPE Sample](https://www.plantuml.com/plantuml/png/NL1DJ-j03Bplh_3hEpIL-XBrYHEdXX1H90fHau8uHTl4a1NxiTfr52h4VsUZbXPnikmPpuozzCGTzKh2wlOwhyigt-GFrNEHGycLbSZ-2Dt8laNeYAo_J1B7X_XLKDVlUe-kCPfGKzmObRm9rtIUkYIx-5T8hccxlalmFU0jjc5OPu7CXKONs-38s2_BQCPOWSuR7V5M2Js7IJfMuSbnCcuoO-NU4whwolIwvMuVDOivJ0z9fpFuO0009vTem5tDhGqwJxY3r5ef6ax2w4aOPN_da9P5V9zNOSKX_8yNi7xCHYoLqWmUnWCza876ACi3HVMIX9K8rI28q049XL9ez27Rvp5TH0Smw1nf0MGRbDzNdMDjFVhHRrLLHHbO8-c4dcLka7neSImlpgYVAylmtV6PNm00 "HIDE_STEREOTYPE Sample")
## HIDE_PERSON_SPRITE() or SHOW_PERSON_SPRITE(?sprite) ## HIDE_PERSON_SPRITE() or SHOW_PERSON_SPRITE(?sprite)
@ -185,7 +185,7 @@ Person(userB, "User B", "with predefined sprite person2", "person2")
@enduml @enduml
``` ```
![Predefined sprites Sample](http://www.plantuml.com/plantuml/png/XSvFYy8m40NmUpz5jgTTs6sWx6bF_NDTeI0zIqn64qpJC9bGFxvJKHGyUCeG7h_tcaGAAKzUH0G31nV0Y1JH4IInLLFqK7oue7qs82nHJ7zIebggeoERzpa1wZaG1AhqFCcJGsqJMTd__WnU1Het_nBE1C60uSzTps759LX5BYsA0J3DuNDrsczHZloAjkHhOVzrauZN_1guNL_FH7SdkhT4_J1gHXfUo8Ck "Predefined sprites Sample") ![Predefined sprites Sample](https://www.plantuml.com/plantuml/png/XSvFYy8m40NmUpz5jgTTs6sWx6bF_NDTeI0zIqn64qpJC9bGFxvJKHGyUCeG7h_tcaGAAKzUH0G31nV0Y1JH4IInLLFqK7oue7qs82nHJ7zIebggeoERzpa1wZaG1AhqFCcJGsqJMTd__WnU1Het_nBE1C60uSzTps759LX5BYsA0J3DuNDrsczHZloAjkHhOVzrauZN_1guNL_FH7SdkhT4_J1gHXfUo8Ck "Predefined sprites Sample")
**Using HIDE_PERSON_SPRITE()** **Using HIDE_PERSON_SPRITE()**
@ -207,7 +207,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![HIDE_PERSON_SPRITE Sample](http://www.plantuml.com/plantuml/png/PL1Fxz904BtlfnZnG4cm3SQJ9sfjX4ImeKMFpTAETkF-sUnEKudnkpiD22Q_NYQTz-RzsMqa6MWq6dRxZsLRbQVwox6jgzE-AQ6MnciKhvJjzDWZ34G-li-o8AVqXw9Xl8mHG-SieQMqSoRxgK8tH1goujsRIajBvyFd37yntcFFoxPWibGMG-hPL8YNhibAY0f3T3QHlL5s3OjydYfIaEJ2OYNgQoGqxGStsbw6Qz9jrh2yXLskuBS0_Xv6oOINLdhFEj_m0hdtMdMIbBCBNXMlrv3NLNei6pu926_J3Ho-5ZEMQ-sc27F72EI02th953DgKkm5pQI8C00fWvgz8cVxSq-Nq0radJkDGN52_Q_LCzOvyYNFNTDKDRDcqWDzodn2YloBy_WUdFd_P8ksv_Vy2m00 "HIDE_PERSON_SPRITE Sample") ![HIDE_PERSON_SPRITE Sample](https://www.plantuml.com/plantuml/png/PL1Fxz904BtlfnZnG4cm3SQJ9sfjX4ImeKMFpTAETkF-sUnEKudnkpiD22Q_NYQTz-RzsMqa6MWq6dRxZsLRbQVwox6jgzE-AQ6MnciKhvJjzDWZ34G-li-o8AVqXw9Xl8mHG-SieQMqSoRxgK8tH1goujsRIajBvyFd37yntcFFoxPWibGMG-hPL8YNhibAY0f3T3QHlL5s3OjydYfIaEJ2OYNgQoGqxGStsbw6Qz9jrh2yXLskuBS0_Xv6oOINLdhFEj_m0hdtMdMIbBCBNXMlrv3NLNei6pu926_J3Ho-5ZEMQ-sc27F72EI02th953DgKkm5pQI8C00fWvgz8cVxSq-Nq0radJkDGN52_Q_LCzOvyYNFNTDKDRDcqWDzodn2YloBy_WUdFd_P8ksv_Vy2m00 "HIDE_PERSON_SPRITE Sample")
**Using SHOW_PERSON_SPRITE()** **Using SHOW_PERSON_SPRITE()**
@ -229,7 +229,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![SHOW_PERSON_SPRITE Sample](http://www.plantuml.com/plantuml/png/PKzDZzCm4BtxLmpXa5GgYHPnuhGXgbWajXirMVOOESwKMFZ3iYSA5UA_CwM58f7BK_pUl8_xH3BIOWrq3qylGxixT4_xeMiFd_eTTD86W-ALTiei4y9C5DBxgefoBRzgcfTnIHYLTuIEIkLjzKr7DIUQg-RTczP8Hy-Fdolyplo44pyE3OkbTXZBmA52L3diFO53P06Cg2HR0iqwWKwC21CUvM88LWw45A8cX2nWJDvba5VY_zx5HeZsjw2GazLk2rbzHfqeIl8nsuZkb0ZjyC4lRfBnLAYxBUINkVa6VWZWxs_LOiLna26mpmkEK8TWj9AakG0_DQ-tK7TjkT_rV18HtfPtyFYbENErCNvDm9DY0lAWl0sI9PO7QSw2dbSHHY1jqN1Mucu_h-qAkf3iSvKnAGve_gowrNfEVCduqFTjnoeMtKhVR3uY9Vx5CnoZj_-UtAER5cj-0G00 "SHOW_PERSON_SPRITE Sample") ![SHOW_PERSON_SPRITE Sample](https://www.plantuml.com/plantuml/png/PL5DZvH04BtthoZn09ECa3MUF2sIYMlYpfA1TO-aQMgbOtzqkelWnlZVBPpHCP5BXNgltaVwDf6Cj5W3tTt3qz0UJjt3SUZQqwV-09sqmQ1ufPqoouGm4uNqlggYNCklckPbN196vHsXer9vMttJKSs9vgfvzwOrqj7Z_USAlpC-uSJBeM6or0vZ6TXKY2g7eoTmY4o04PLaIQ1P9z299yA4pt8n12iRGWfH4q8MC2RlCiWhyN_kOYT4-vjGoCbgjuUitgPE52NvcEr4zv88xV31BswIyQLGDtl8ptNp7VmGmD_VgCMAuo13O9qd7A4EmMWbINC0NZMlzr1tRNayz7mI4TwMDt3_fTcmsXY_9k1ACG5vKDu6oHJBXJHxGS-j22EGjcZOAt6sdvTq1Pr1rhdG61GdD7zQNMCz9hxaUTVtRSSi9br3NsK-8YN-nMqyHs__FRb5DsqlyWi0 "SHOW_PERSON_SPRITE Sample")
**Using SHOW_PERSON_SPRITE(sprite)** **Using SHOW_PERSON_SPRITE(sprite)**
@ -253,5 +253,5 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![SHOW_PERSON_SPRITE(sprite) Sample](http://www.plantuml.com/plantuml/png/ZL1DRzim3BtxLwZPeGwGM6YnqqxDZ60TiBP6xAv7Gx7PMfW-19525WpxxwEGZmp33jL58DyZt-ExGrAHaZMYlNzwwPlrfdrwxDjcyxLRbnYY9fYBLjbWeBZIRZ1f134H1VmaPLIxwatJbBO98GxU4JYg1c_b3ns72McIzSTbOvIZvuTl4duoFiB8pRvcij8EOXLOlBWQuPKhuL4rNBz3eOuA9nYjTgCyAInz08Sm9BQzL-o0tG-K8jmkDS-Yj0e9ukMGevoilRNU7Qty2pwpibJ67E3YFpdDcDedflLl4S3rP-dPl2WQYEXTgRBLXPYjyg-HeY8V6M_tRCdsdtroeuhxShXPYEj3uDTpyQiG_CvXbJlOzYe4tlC2Mx4AmUX1aVPkngtwmqAisgPwN7Sy4a7SLZVYuNkTiPKnVeSYcqH1Nd24GJ759aEQjKItqqGG1MaBXhMGlVq-kYlf0FAU8oqVjW5pkkfYYyF2h7VVTKtBh4mwevSrNu2GIyZVQ_Jsxv4xS6DE-Wy0 "SHOW_PERSON_SPRITE(sprite)") ![SHOW_PERSON_SPRITE(sprite) Sample](https://www.plantuml.com/plantuml/png/ZP1FQzj04CNl-XGRzn0PR8c4ddgAAqnJQ19XoSrHh5UJQEd-MNPcSKtfT-yiTknIUeWkOlQzcVURkKEIaP8rehj_UXxQzQPxUXowTlErNvSOeYQOYqxQOA2uqawPD8AOY09-gkiezzMhfYdj4a9KtX4ugfItzGyTrOGqrSt7PMkae-t3jnf-iZx2o8z3msQf7SGgS7XnDS8BLyAZRBb-Hq8J9KumMkt6-YrXwGCu19KO-o2PG1CeIX5kbvfxiROI2U9baLDStNXhlJkX_2jkERcMnXpbuZztch5ro833QmHmmpbwDY-A5Y9wLygCkX2pLVvhf2Z9HzQx0nBOuRDFRfJnKAgRXRW-7lnwBduLWh_piSezx0OP0izvXfrOXM2qagIzc_5Jys4XLbrRFQvxReaWRgiRyV2zoThA6Bz7aI5Ha1VAso3POfCXpLcYtsiYY8Aq1SDPo6o_JtGb7KMUSxBbnJPWthQwO6qHCEVTzttRiIkRpkfbp1SWv1BoxoLw-tVB7RWnMVC7 "SHOW_PERSON_SPRITE(sprite)")

@ -11,7 +11,7 @@ The [old master branch](https://github.com/kirchsth/C4-PlantUML/blob/master/READ
![Container diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/bLLDZzis4BtxLqoTGnr0kqQ0ddgArpQwcwntrSZRJK_2Y1hRH2XI82axHj7_tg6i3yiEajGdQJJpvl7D6_gzysXzLQZHBr8BLUK4E-zBz_jqQl5mkvL-LsML8okCzgJzhJ3557ChKUzLLLRJ-MytiKBjNrQFKuMUdETGEkTib9hiRHcmVuLASs710E1t11kZb3b8lGN5IO0wXy5dQHq_6U36e8n0fOwCqJ6yRi1V7sT_Fx-iq_Lpd2wUNvycR_lOB4cJZylr_9w3JUZrONsVFYx_M3ujE3ZoqYl6RK4XbxYrM31H2mzySAl9mntgBu5pSdIUYj4e9kkCdeZAULEGZM3UFOrdq8R1REf3PLmTmO45XR8kH5N708KmbVPkp3nEqEaT1tAqnubunrYN1CPluPyHyA_ZEpbGbc9PSl8hPJ0hIoK5Ucdqc4CVS8yH9AKDv5T_pKDiGKhkcKPDZJtWfO1cnFKuGhZhcxK7ZsTCSjZPbOmzJlYpefiOjnIwjrqJOMNf8vZfRQNGXd1ipLxcv827-kqk6_PAe8vA-cDmWQXg8Hti9OOIQO7F2var1pRc5QF2P59H8yUgVcavpTz4y1aBP2M6NDY7XVIKWwionroQcVqCDtT5xaG0SjfBGPVq5jaaHuyPEWfZQ1u3c-JFHnYyUsEPMrW-iBILpblarY0rkxAefnl1ZfDpm8fT9IpbF3w9oaN1LEGSBy-MNyYBsokPCXHVIEUiamn-ZH--RPk5uJJRrmrq-u4-GH86vjR_TjPUVlKJAb2grDK1XblUhFYzMQk0lsRfPGtDExAImXfdDXwMNyKEDJliLCcmPvWDWnwLCVM6TvWkzlPCsc31PjA20zqfpXG6p4pb-p57tRf6mFFG3klpzYAFFf4wknBwnNnnv4Bl-_KwJZXnc7TQe-_d38nTfvxQfKyajxlCd5q39xXsoHkaEZWSUziGtL6B23uapq_Jy-RdBVzNPNh7sJsntl93b4-4kOEDDKLzwnmiBo7VIIOWDy2Bktbxpe1vfiU5ZHA6TK0t8LfZz4Gk73VaCAohNBXXk_R9QXqtGDrX1kLNlck52VNJHftF_EVOYlEUI_alwpy0 "Container diagram for Internet Banking System") ![Container diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/bLLDZzis4BtxLqoTGnr0kqQ0ddgArpQwcwntrSZRJK_2Y1hRH2XI82axHj7_tg6i3yiEajGdQJJpvl7D6_gzysXzLQZHBr8BLUK4E-zBz_jqQl5mkvL-LsML8okCzgJzhJ3557ChKUzLLLRJ-MytiKBjNrQFKuMUdETGEkTib9hiRHcmVuLASs710E1t11kZb3b8lGN5IO0wXy5dQHq_6U36e8n0fOwCqJ6yRi1V7sT_Fx-iq_Lpd2wUNvycR_lOB4cJZylr_9w3JUZrONsVFYx_M3ujE3ZoqYl6RK4XbxYrM31H2mzySAl9mntgBu5pSdIUYj4e9kkCdeZAULEGZM3UFOrdq8R1REf3PLmTmO45XR8kH5N708KmbVPkp3nEqEaT1tAqnubunrYN1CPluPyHyA_ZEpbGbc9PSl8hPJ0hIoK5Ucdqc4CVS8yH9AKDv5T_pKDiGKhkcKPDZJtWfO1cnFKuGhZhcxK7ZsTCSjZPbOmzJlYpefiOjnIwjrqJOMNf8vZfRQNGXd1ipLxcv827-kqk6_PAe8vA-cDmWQXg8Hti9OOIQO7F2var1pRc5QF2P59H8yUgVcavpTz4y1aBP2M6NDY7XVIKWwionroQcVqCDtT5xaG0SjfBGPVq5jaaHuyPEWfZQ1u3c-JFHnYyUsEPMrW-iBILpblarY0rkxAefnl1ZfDpm8fT9IpbF3w9oaN1LEGSBy-MNyYBsokPCXHVIEUiamn-ZH--RPk5uJJRrmrq-u4-GH86vjR_TjPUVlKJAb2grDK1XblUhFYzMQk0lsRfPGtDExAImXfdDXwMNyKEDJliLCcmPvWDWnwLCVM6TvWkzlPCsc31PjA20zqfpXG6p4pb-p57tRf6mFFG3klpzYAFFf4wknBwnNnnv4Bl-_KwJZXnc7TQe-_d38nTfvxQfKyajxlCd5q39xXsoHkaEZWSUziGtL6B23uapq_Jy-RdBVzNPNh7sJsntl93b4-4kOEDDKLzwnmiBo7VIIOWDy2Bktbxpe1vfiU5ZHA6TK0t8LfZz4Gk73VaCAohNBXXk_R9QXqtGDrX1kLNlck52VNJHftF_EVOYlEUI_alwpy0 "Container diagram for Internet Banking System")
C4-PlantUML combines the benefits of [PlantUML](http://en.plantuml.com/) and the [C4 model](https://c4model.com/) for providing a simple way of describing and communicate software architectures especially during up-front design sessions with an intuitive language using open source and platform independent tools. C4-PlantUML combines the benefits of [PlantUML](https://plantuml.com/) and the [C4 model](https://c4model.com/) for providing a simple way of describing and communicate software architectures especially during up-front design sessions with an intuitive language using open source and platform independent tools.
C4-PlantUML includes macros, stereotypes, and other goodies (like VSCode Snippets) for creating C4 diagrams with PlantUML. C4-PlantUML includes macros, stereotypes, and other goodies (like VSCode Snippets) for creating C4 diagrams with PlantUML.
@ -41,6 +41,8 @@ If you want to use the always up-to-date version in this repo, use the following
Now let's create a C4 Container diagram: Now let's create a C4 Container diagram:
\(If you don't want run PlantUML locally you can use e.g. the [PlantUML Web Server](http://www.plantuml.com/plantuml/uml/ZOxDIWGn48JlUOeufn5qSjcJfvNHsugBFsV99iqcsEc4T0VTjpSCE2AYUAeAgVwgjYosIakevytBBK824bPdaHms3pg85BuofjgtwHWbj4DZg2wJzDpaSZAliRh04ioykToZ9Nc-snbux_yUlEdGkOTj9AXJwJLAxQ5ofh4iSetHyeKUTlO0E7HpNoHcigXlW5sDosiuLojaT9_kn-aJk40Py_7q1-Znn09fv4N-swuU0ByFNbVyZlYQqmbR8DyIVW00) too.)
After you have included `C4_Container.puml` you can use the defined macro definitions for the C4 elements: `Person`, `Person_Ext`, `System`, `System_Ext`, `Container`, `Relationship`, `Boundary`, and `System_Boundary` After you have included `C4_Container.puml` you can use the defined macro definitions for the C4 elements: `Person`, `Person_Ext`, `System`, `System_Ext`, `Container`, `Relationship`, `Boundary`, and `System_Boundary`
```csharp ```csharp
@ -55,7 +57,7 @@ Rel(personAlias, containerAlias, "Label", "Optional Technology")
@enduml @enduml
``` ```
![test](http://www.plantuml.com/plantuml/png/ZOxDIWGn48JlUOeufn5qSjcJfvNHsugBFsV99iqcsEc4T0VTjpSCE2AYUAeAgVwgjYosIakevytBBK824bPdaHms3pg85BuofjgtwHWbj4DZg2wJzDpaSZAliRh04ioykToZ9Nc-snbux_yUlEdGkOTj9AXJwJLAxQ5ofh4iSetHyeKUTlO0E7HpNoHcigXlW5sDosiuLojaT9_kn-aJk40Py_7q1-Znn09fv4N-swuU0ByFNbVyZlYQqmbR8DyIVW00 "test") ![test](https://www.plantuml.com/plantuml/png/ZOxDIWGn48JlUOeufn5qSjcJfvNHsugBFsV99iqcsEc4T0VTjpSCE2AYUAeAgVwgjYosIakevytBBK824bPdaHms3pg85BuofjgtwHWbj4DZg2wJzDpaSZAliRh04ioykToZ9Nc-snbux_yUlEdGkOTj9AXJwJLAxQ5ofh4iSetHyeKUTlO0E7HpNoHcigXlW5sDosiuLojaT9_kn-aJk40Py_7q1-Znn09fv4N-swuU0ByFNbVyZlYQqmbR8DyIVW00 "test")
In addition to this, it is also possible to define a system or component boundary. In addition to this, it is also possible to define a system or component boundary.
@ -76,7 +78,7 @@ Rel(web_app, twitter, "Gets tweets from", "HTTPS")
@enduml @enduml
``` ```
![Basic Sample](http://www.plantuml.com/plantuml/png/JP3FJkD03CRlUGflzf9AtKHTxMbFJIC41ueYaiAncauC6J5_HZEEGeLuTpngQPcBDVv-jZzx7Ka4ceo6ZOXAGYUCrvZzKbRgQK0OYNpyNrL1pEMhed4wJ163T9RGKYcTgTvKa6EaiMh-_McriBJRtbVuplg00oVt3SD2MGobvpbPrcA8pXPYCCek8QzJL96281VoHTOT8w7PRzna1n6EXLmnTB859orVm4S6_2wTYnaFU-4zayzuWDfxhQGWvMpEgURt4kgkBHzkUYu927_B5MoVcgJLMhivGbeg0ZdWZRnWn4oQL1hPpue80v0og7bMP8kVPvC5dKJkSyPOp1vHVoztjRMBNCdnhk_RZga4NTHhcrkao5zCuIKuyxDapHTD1_m2 "Basic Sample") ![Basic Sample](https://www.plantuml.com/plantuml/png/JP3FJkD03CRlUGflzf9AtKHTxMbFJIC41ueYaiAncauC6J5_HZEEGeLuTpngQPcBDVv-jZzx7Ka4ceo6ZOXAGYUCrvZzKbRgQK0OYNpyNrL1pEMhed4wJ163T9RGKYcTgTvKa6EaiMh-_McriBJRtbVuplg00oVt3SD2MGobvpbPrcA8pXPYCCek8QzJL96281VoHTOT8w7PRzna1n6EXLmnTB859orVm4S6_2wTYnaFU-4zayzuWDfxhQGWvMpEgURt4kgkBHzkUYu927_B5MoVcgJLMhivGbeg0ZdWZRnWn4oQL1hPpue80v0og7bMP8kVPvC5dKJkSyPOp1vHVoztjRMBNCdnhk_RZga4NTHhcrkao5zCuIKuyxDapHTD1_m2 "Basic Sample")
Entities can also be decorated with icons using the last parameter, for example: Entities can also be decorated with icons using the last parameter, for example:
@ -104,19 +106,19 @@ Rel_R(api, db, "Reads/Writes")
@enduml @enduml
``` ```
![test](http://www.plantuml.com/plantuml/png/hL9DZzem4BtdLtWviTA23sqlFIq2saNYW_9Hr1CQue6uTUpKCu7-_8v3Yb0_f1xsP6VUotlpPlnC397hqcKFrkUkDgWAvehUQntXqZzPBkf3JHZpu1azz_DGwcysvWLneOTlUqi7dhUpgSOVWXiqKjmFXGpMO-nNIJfxC7YKJpKQVvuC5_FrVtXmNO69RtILz4MaPmNj7ONHeofQHj8b46FK1iy9evlBXyLyCzYDrulP-5MDcXfSa4A9lNUtWTrIQV2dsa4R-a_uAvpXNrX9tzsUC9xnzz_lqkZKExKpdGw-BBQR_MwoUTbFnn_7yr7tCSkMGWY-cuXFgZEiYQNPs97x4aFbK741h3oYKLKCfiwP4jW8Tnwps-AwL87Kryj1WjjWwRefK9L2KTOpnYFahIHBFM_jhXY8jhh8pEyLxYsWie8CbfD4ICD9vmjuuv0KEATaLq8aKYwSR7vZtMcC3brpaFe860v0c3WpcyT0uSXg_MdQI0Pdw5VS9nMYaHR5Hjey1vkZdCSGIs0RVEBVxKAyiXMwTfxNcMm9AT6QfoM4X3U8vFaxl5zTipQjhX0CwLtpiWH-Hc_IFdy2 "test") ![test](https://www.plantuml.com/plantuml/png/hL9DZzem4BtdLtWviTA23sqlFIq2saNYW_9Hr1CQue6uTUpKCu7-_8v3Yb0_f1xsP6VUotlpPlnC397hqcKFrkUkDgWAvehUQntXqZzPBkf3JHZpu1azz_DGwcysvWLneOTlUqi7dhUpgSOVWXiqKjmFXGpMO-nNIJfxC7YKJpKQVvuC5_FrVtXmNO69RtILz4MaPmNj7ONHeofQHj8b46FK1iy9evlBXyLyCzYDrulP-5MDcXfSa4A9lNUtWTrIQV2dsa4R-a_uAvpXNrX9tzsUC9xnzz_lqkZKExKpdGw-BBQR_MwoUTbFnn_7yr7tCSkMGWY-cuXFgZEiYQNPs97x4aFbK741h3oYKLKCfiwP4jW8Tnwps-AwL87Kryj1WjjWwRefK9L2KTOpnYFahIHBFM_jhXY8jhh8pEyLxYsWie8CbfD4ICD9vmjuuv0KEATaLq8aKYwSR7vZtMcC3brpaFe860v0c3WpcyT0uSXg_MdQI0Pdw5VS9nMYaHR5Hjey1vkZdCSGIs0RVEBVxKAyiXMwTfxNcMm9AT6QfoM4X3U8vFaxl5zTipQjhX0CwLtpiWH-Hc_IFdy2 "test")
Entities and Relations can be decorated with tags and explained via dynamic calculated legends, for example: Elements and relations can be decorated with tags and explained via a calculated legend, for example:
```csharp ```csharp
@startuml @startuml
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Container.puml !include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Container.puml
AddTagSupport("v1.0", $borderColor="#d73027") AddElementTag("v1.0", $borderColor="#d73027")
AddTagSupport("v1.1", $fontColor="#d73027") AddElementTag("v1.1", $fontColor="#d73027")
AddTagSupport("backup", $fontColor="orange") AddElementTag("backup", $fontColor="orange")
AddRelTagSupport("backup", $textColor="orange", $lineColor="orange") AddRelTag("backup", $textColor="orange", $lineColor="orange")
Person(user, "Customer", "People that need products") Person(user, "Customer", "People that need products")
Person(admin, "Administrator", "People that administrates the products via the new v1.1 components", $tags="v1.1") Person(admin, "Administrator", "People that administrates the products via the new v1.1 components", $tags="v1.1")
@ -137,7 +139,7 @@ SHOW_LEGEND()
@enduml @enduml
``` ```
![tags](http://www.plantuml.com/plantuml/png/bLFVJnin37xdhyXkUoWQQs4_X3G9YQgWCQbi7GNnYDp4lMRaabFiQzb_FoTjEIYtJNlAoVxipv_ztIanH6ugj_VAUkqQWsh1NDFdmI32gbzQNZIpXZ3gu1azztMe1lSswWNnOZ3w-6xYmFFDvNY03v8tQ2HuDn8mM8-nNwVMUqDZhg6SDdKT8lUAvL7_i3XGRsOX6eoZu48yALwRum-7xu-B_GxqKKBFfUc_i3FGzqszWmuHV8a2JkWhTDq5Z0yx1H9q8k95bmb62hwNjdAWYb5372gC0Yyc66g7YXV0oYCQLSTW6iqaPPigC9Nr0Xscrn97uF2Y5jeaaeJmiP5QMiW1ZokLDgFa87Nmw9co2YZf9AzCA1_FqACQX68w6IOcqT4uoAJNqgaIYBAUCSv1hmV837eZR9s3HBuIE-G9DXTiwGvtwOPFTQfkPdYwW_yTORk0lwY6sgO99byJuKzOGdelm1k7fC0v9SuM895oeRHQzT8lq6zNcorDDdZQVoxsxIxLsQndPjBy31XcG9Y8BgsEWSASrVJ7E3C7PsXxoGELpQ_06r6t35QZlFCGAs1XVAuZweLTOjAo_YhIPsCify5BwyiKc7A8ekkJ-eKGMpDiBIx65UzlNBlsmmqXfShynmiWvND65jUTlhjQBpMBlK8mDBYDbd6JthgxlNydHvl-Cz5uJTHAppmPLY4HbDWfSNhn_VPkVFxb_DjPRt_l5BrfAlSR "tags") ![tags](https://www.plantuml.com/plantuml/png/bLFlJzim4FtEN-5b-n0qri1-26aI4bL1OrBPEWhY8xhOryJ3iIEVKzX_lxFJabAwJVlaoFVkthtdbrCAu4FNcBrNsahJAHHr22rzBWeF3wDAXxehEq8ldGremqYwfhZNNjOKwcBoyTtCW0qtbzC27xckKF7btOJ1e2twKHj7xusLEZVOSFyrL7csF1eTPWVYJUcyGZznnlcJxBKw_d3u_ZZRtu4-YkW53_qNjWHvtxLRQEV1LiZWYBv2iuKC-BY5v4l3sxzedw4dP_Denu789Xq5rw1dU3P3rneKeOOWBA8IhNUgau6uRTK5gj6MeUDuQWeUWdlH2qCHYQ_mQP1OQaWN5Xz4j4JmIxJEid9AAg2Ya-GLKpxvdrCBJ36VZICJw-WC9D9hdjGmH6WRq2z0zWia1haIrjSWaZzm3j86wUaswGwtwSQREiLkPjZqu7zNM1lm5zNGwhZ1x6ia_0bBYES5M6MG11WZED8C91B6LLgAF6P_D5YRiapQMTf_BlRjDjLPcQkIXvz1W1888z6bbjwHMmGn_p5DpCueMh_aWKYf5xmDgriwBP7FXVCD16PyhiFBMYynQkc_ilZPAHtYufMsLRoOiuciwvFuXU27CAmZpi7bqAzIs-VXXf1YP_hL6H3hgSB6xIxVNVMc9h5N28gAMwy3hihhT0_llvDZAF-PQDeJ3T8JJu8rI0GLxfGul_X-UpSz_tB-xIpVtpj5gxh6_0O0 "tags")
## Supported Diagram Types ## Supported Diagram Types
@ -181,7 +183,7 @@ Diagram types
* (lowercase) `setIndex($new_index)`: set the new index (procedure which has no direct output) * (lowercase) `setIndex($new_index)`: set the new index (procedure which has no direct output)
* `LastIndex()`: return the last used index (function which can be used as argument) * `LastIndex()`: return the last used index (function which can be used as argument)
following 2 macros requires V1.2020.24Beta4 (can be already tested with http://www.plantuml.com/plantuml/) following 2 macros requires V1.2020.24Beta4 (can be already tested with https://www.plantuml.com/plantuml/)
* `Index($offset=1)`: returns current index and calculates next index (function which can be used as argument) * `Index($offset=1)`: returns current index and calculates next index (function which can be used as argument)
* `SetIndex($new_index)`: returns new set index and calculates next index (function which can be used as argument) * `SetIndex($new_index)`: returns new set index and calculates next index (function which can be used as argument)
@ -207,8 +209,8 @@ You can force the direction of a relationship by using:
* `Rel_L`, `Rel_Left` * `Rel_L`, `Rel_Left`
* `Rel_R`, `Rel_Right` * `Rel_R`, `Rel_Right`
Relation specific sprites are not down scaled, they requires typically smaller icons. Relationship specific sprites are not down scaled, they requires typically smaller icons.
Or alternatively if sprite argument starts with `&` an OpenIconic name can be used (details see https://useiconic.com/open) Therefore if sprite argument starts with `&` an OpenIconic name can be used too (details see https://useiconic.com/open)
```csharp ```csharp
@startuml @startuml
@ -243,7 +245,7 @@ Rel(user, system, "orders", "http", "only small sprites looks ok, like the small
@enduml @enduml
``` ```
![Relation with sprite or OpenIconic](http://www.plantuml.com/plantuml/png/bLJTJjjC4BtdAVRprmkZGWpz4L8b9AA0IgNGfWJ49Hfx9ywswztLpZYqRzzPnv0GBAfUxMhcp9mviyS-8uR8RMFt_ZEkigr6jMGEzAae8ZoCQiFBjcm9O-KTe-DHvPiYM72fvf1OMrCMam-7inIwlPeM3H1ZbD3zH2h0E8oZaFhlZRM-WNhUXk0ZvzdgU7IK7QWtfOyQuyHR7q-p__N9-wDt9zd-0FeueHVIz6_O4ggVRTX1-mYkHW4dz3NQuGB6Npi54hGYuaMN6KRoBa-hEL3Pf2Ns3KQ1PpFqmQBY9R1oY5g5w7LRCKbPNmMwCKwWutGQuWZiNzJ29eaa8Nngf5O6ke331vKse-HLWdVec3eLKDDfjpAXV7g6d088nNmsJaoYexNGaTv8fqOWoZZ6k82g7o0nLBsmTGuI-ODuefkWVy4DtT4ktNXRfnfcXkqT_EC8JmjuHJK4aoQOVKc4Fs05wRm4fosI0ckLs5k0HChwsbGgJz_1QBDQSGGwCjxH_dEnRtUfpijSbzBy71XA84n4LwQAdlo2rVpxj6FsLjFZInweplnAfX5rAsygb7FXOmCiZCzrn6ffLfYqh6zPkhRQS1gyDgvEWJdxABe-gjy8SSiClSN5kEBzthLhFzmIKghiFdi1f7oNWM26q_VNwwLsOgyHD1LtqJ3swKTtRzv_cADFlqOqNHDjfFSySckG26eSb3Y__7PtFxtuVF7rFD_VEqEdqm_e3m00 "Relation with sprite or OpenIconic") ![Relation with sprite or OpenIconic](https://www.plantuml.com/plantuml/png/VL9XYnCn4Fs-ls8inta7RLUh21M4Gu-0e7YStESZpKxReTbapMJlAE9_Tv9DMoskyoLvRp9lNYQvuQX3x5jRlI1dRDyWR6Fi-7rT1_qytr3SzgkUCHZl8heuDxwjEwjTgfbnR2ojwazlPtU9UlZwfMurHmn2FTxkdMx9pBkaNjrXOE-kajGK9W-ol9vS_yak2hqG-ljUHDehpelm0vP4zH9e3Tm5YWZPEiEpU8JBwO5jS4qE6JHywz1z5jzafi96JPQ1yNH1wKevdI_bvNHTtQDzl2qkZ-q3_kYH8qzahtdl3BJ8h3UOY54_5F_f1Ipj42xHFQ6LdZDZFMCZIXT5vWDCphF3pPqFhRQbcuW6XEWzh6W3sVTzyNsO9hcrL6JNnlU1CAJjk4hATlb15aD3xj1GEYi55iEnPgkVf4XgCFLggcBy8WRIRcCHVbOWyUeK9wp-nkgZ-XzMo-LIZMFrBeKQm-hD46eCbn1yxlTNckZvF_2XmP3dcRvGMhsp-poUqq2jzpi6lviE3nstM0uSffFgZllhwWPTqxVsDm00 "Relation with sprite or OpenIconic")
In rare cases, you can force the layout of objects which have no relationships by using: In rare cases, you can force the layout of objects which have no relationships by using:
@ -283,7 +285,7 @@ Rel_L(x, s4, "uses")
@enduml @enduml
``` ```
![Relation versus Layout](http://www.plantuml.com/plantuml/png/LSrHQxCm5CRnUpz5trufl5EgNksgcmeRE2PQORkIc1ocJ6D9JbZxxNTY6R5tv_yZF3bgP0hDF7d_Hiad8s0t89xrOnGfzXD-ZJYOtcXGV9484aE-pD7tgFYWSOYozA6QcCJshOpWWY052C8keyTibA32ivr-USsBhZaLTV5--gmAF_2y2fHUfC_-x_PF--0lUyfdbvmoSoaeSvT0ML1w9RjshPtgW_MkxSrlTsvlSRjBUuFx_4837pJGN3N2xEi3TNFOG6mXta1Y8Tb0QY4by6gOkjPEhZD6WoQrMAyOtsE-OdAFvOgfmoD8OURf5m00 "Relation versus Layout") ![Relation versus Layout](https://www.plantuml.com/plantuml/png/LSrHQxCm5CRnUpz5trufl5EgNksgcmeRE2PQORkIc1ocJ6D9JbZxxNTY6R5tv_yZF3bgP0hDF7d_Hiad8s0t89xrOnGfzXD-ZJYOtcXGV9484aE-pD7tgFYWSOYozA6QcCJshOpWWY052C8keyTibA32ivr-USsBhZaLTV5--gmAF_2y2fHUfC_-x_PF--0lUyfdbvmoSoaeSvT0ML1w9RjshPtgW_MkxSrlTsvlSRjBUuFx_4837pJGN3N2xEi3TNFOG6mXta1Y8Tb0QY4by6gOkjPEhZD6WoQrMAyOtsE-OdAFvOgfmoD8OURf5m00 "Relation versus Layout")
## Layout Options ## Layout Options
@ -303,10 +305,10 @@ C4-PlantUML also comes with some default person sprite options:
Additional tags/stereotypes can be added to the existing element stereotypes (component, ...) and highlight,... specific aspects: Additional tags/stereotypes can be added to the existing element stereotypes (component, ...) and highlight,... specific aspects:
* `AddTagSupport(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing)`: * `AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing)`:
Introduces a new element tag. The styles of the tagged elements are updated and the tag is be displayed in the dynamic legend. Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend.
* `AddRelTagSupport(tagStereo, ?textColor, ?lineColor)`: * `AddRelTag(tagStereo, ?textColor, ?lineColor)`:
Introduces a new relation tag. The styles of the tagged relations are updated and the tag is be displayed in the dynamic legend. Introduces a new relation tag. The styles of the tagged relations are updated and the tag is displayed in the calculated legend.
* `UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing)` * `UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing)`
This call updates the default style of the elements (component, ...) and creates no additional legend entry. This call updates the default style of the elements (component, ...) and creates no additional legend entry.
@ -331,18 +333,18 @@ Multiple tags can be combined with `+`, like `Container(api, "API", $tags="v1.0+
```csharp ```csharp
@startuml @startuml
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Container.puml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
UpdateElementStyle(person, $fontColor="green") UpdateElementStyle(person, $fontColor="green")
AddTagSupport("v1.0", $fontColor="#d73027", $borderColor="#d73027") AddElementTag("v1.0", $fontColor="#d73027", $borderColor="#d73027")
AddTagSupport("v1.1", $fontColor="#ffffbf", $borderColor="#ffffbf") AddElementTag("v1.1", $fontColor="#ffffbf", $borderColor="#ffffbf")
AddTagSupport("v1.0&v1.1", $fontColor="#fdae61", $borderColor="#fdae61") AddElementTag("v1.0&v1.1", $fontColor="#fdae61", $borderColor="#fdae61")
AddTagSupport("fallback", $bgColor="#444444") AddElementTag("fallback", $bgColor="#444444")
UpdateRelStyle(black, black) UpdateRelStyle(black, black)
AddRelTagSupport("service1", $textColor="red") AddRelTag("service1", $textColor="red")
AddRelTagSupport("service2", $lineColor="red") AddRelTag("service2", $lineColor="red")
AddRelTagSupport("service1&service2", $textColor="red", $lineColor="red") AddRelTag("service1&service2", $textColor="red", $lineColor="red")
Container(spa, "SPA", "angular", "The main interface that the customer interacts with via v1.0", $tags="v1.0") Container(spa, "SPA", "angular", "The main interface that the customer interacts with via v1.0", $tags="v1.0")
Container(spaAdmin, "Admin SPA", "angular", "The administrator interface that the customer interacts with via new v1.1", $tags="v1.1") Container(spaAdmin, "Admin SPA", "angular", "The administrator interface that the customer interacts with via new v1.1", $tags="v1.1")
@ -367,7 +369,7 @@ SHOW_LEGEND(false)
@enduml @enduml
``` ```
![merged tags](http://www.plantuml.com/plantuml/png/jLHHJzim47xFh_2o2QKgQsc6XZG92GHeJEgsYeBsY2xnDV5mdCZd5FZtintCqZKhsmDvyVdky_UTlfnzGWQqQIiPlH4gbor7LXhJqAVfLCFzf12cRBEMKEUrCgZC9A-hwPtGUKccd9uTlbz8KERcwtoA3xREaTlaxPa5Wr2e9usZZcuQ3WOl95QMOcaU9IODQghLFdktijYpMjRwE2uqeef7qIddrr0iswQfjKdYzMno46yYt_AZ3mVfaSjcjUQeD_E37BC_ELRsorPR724_sCVU8147_3ZR8WhvBQ8LI9b1VkTF505zwBzu5EowGjbPbKcBtMT-yLosqgSZr6kHes_0u4DeIoEFTy1J1vT2uR_1PtlXtBRC85FqF0G9DR3FukNYDBOBgAALe5ruNIAhB8G9PL2l84TcIZ3Cs7pUagahr5qDSaFitWuZMmjWOI0C57GS-zreK-wKLq9P1R-oOMLmDK56Wwdr_xQWy9w5KGXjs5s_3MY4ws3nnGd-X3MuzH8KbqWCf6HPInP8n6HTY9mbxW9EdfcPlr0aQaMZdagOmR6BnbkYr43QUPs-cjdZCB-3hgTzszFNzpqq4xo8xFns4zVzW1j2SjB-MRDrLmwzxi3SpZkI9qFzbTm6NVMeGlGNUBJmBrxY7bDd4NE1pIyVoM2La5zyeGjjoKkSFvru1jWjiN0hlIcc5CHoaFAtAw5kMLuaILyWINUIPBKf0nFjPEe_8kEG6VT4eZayMXN_JvoKDUVo-u_R-SNdYs_doGeauIWwGSNRIlu2 "merged tags") ![merged tags](https://www.plantuml.com/plantuml/png/jLLTRzCm57tFhp01JQcwjMkOc8GqQLCtCQG2rJx4utIJt2G6nuvydOxzUsndBYqDgtXONkoUUtpErV57pyc0DbqZeZTSvg8haDN6jFHnEjNmEAcugRki8zIvaWQbcUIgcRO2f5jpHAOGF9lEJuwM3hh_ifWsG0QrXHxcgccLT6jQfn_TjmKOl1BOMEpMF0bCMjIav25xLrhrkH9AdyMLHfJnABeeYcVk7LH9l9fDZkDjvjlYzFrnUkhGJEa2zJO-g37xMwEqNrRkQ0Hyi8-3GQ42yCDiGCZZkq8b2951_jElg0Bxn7_nACHrWwAFAXEMUyZyuBLinUiGwXNFqJiR_1NwqLZ4GxpKyGINk8StEmWB1eI79AAv3GCigXDguP35jykBs0uWgqw0TjEx6bbZAOnBWxg479cfmJ1ZyRmZenhKVGroG-oHcvgjEB2mzmOgEkjFmcZRxg9ekBGEVcJ3pk1gd8m6e_J_jY3naOLTNxSnsse3MkuwM7vsXZzW1Mwy1ba890P2iAmZIoHYGbKyPucxS9ErChCHeoIk98qsNC9n6xlPUCUKMaZxhDDN2tiSZkfWwkbcxEdhvnwQ2Lb4DoZw4zTlm3qXEMl_ZDcwAuTUN-0yB7gHvq3zxTibtMn8XTa_wD7IFsw9UpnTHCnDB7xxH0QRXFpW2_tKbhp5vVEADS7-91PkfG_5r9nO3aByIINKhSfUaNIFIFgYIAPC7PHeNpi7GN8SaF66IRI09-lYzyHPsN2kltr_M5nzklfwcPGW24VHESh2_N_y1W00 "merged tags")
**Custom schema definition** **Custom schema definition**
@ -412,7 +414,7 @@ SHOW_LEGEND()
@enduml @enduml
``` ```
![custom schema](http://www.plantuml.com/plantuml/png/dLHTRvim57tdLr0MJOcK9eIG1asAr9AXhH9DgdneUqC6tmGKOoBRgEs_dy5ik2rTfIWluNpSUuwDkEK2CL7cnBZAQ49A36Ogn9b_6uyPUXeTCv6MSSc19GKLGCKeAVBnAMD9oaKwNhhNZmHHiNy8n_0iUGnOWj5IYkNpw5mDDgvwotMutaHtqSnScDQN-M4QsvwbuMwDnzEPPz_e-BJ6mVQSYQlZJeqVSEpTJ7Lyed00EzRch8BzRdCNAcvU_LhERppOmmXY7LSxOWV5sD5nbScpvrEKwBZgC7ETkUVfkEhiODjsjVcR88p2-rNGCKoHk-3txXLfxCyO2GW8v435LhmGw5jdOBoWrj3inSTbGGgsQCzQWWTv3otS7aMbBnW6ziOpaGHF4IwUCdfSM8ALO0qw5rUtpIWYqOS9_0iIoDleNiTVk82yiwTxGK_dar8VhlClMEUtwpP0rAeUoIXeglQ569fVXSoXSUtxC32Cn_gu-qd9HP436vgMGX0nVKHFyjhCPSF9czlMFVgnOffQqdDFgw8W_dcKK3eQInGyYtwECj9wWklgsUIDyesG7XZAGSeU_lxlc2thQydVfTfpu58cLP6FafCcVPra2nHp4-eyt1H5urb1Tapb-R-h-n-tidOvL8asbR7zkVuLXS6FOFMzFp1kvPJgu_O7 "custom schema") ![custom schema](https://www.plantuml.com/plantuml/png/dL9TRvim57tdLr0MJOcK9eIG1asAr9AXhH9DgdneUqC6tmGKOoBRgEs_dy5ik2rTfIWluNpSUuxjMouG4sLEZAkC9gJ4OAP2dFctyPYXfz4n4saPbnnOKb01L8oI8X-VCfQaNAJZfNlzI10L-uTm3C-Inu0b62sbM7wFpjLWuwgtN8VhJNGNpSo5QNsP7wQnxLaQxjPuF9rvzesEJsiSRC-Pk3hkrFW1nzxDLCSd2WUmOstEAjZlDdUXukRLh-NyneCzZ23MSRKZTb2C7HrNcJnxFaM9ZgiECzUPUvwEgyuEjcrNcxy9mYYyNmKTmnIv2txlNf76_eoHW8103bHinGk1ldK6nWjg3SrUV5mMf62BzgmbU93tqCBjKLJwWc5WRpmJIV0KuU8feyU59LW9rg1pSNNRZ28IVPZ0lo21l8tkTVo52yWxUxeNz7G-AVNXEl-2TNwxRWD4hUgHZ8AcQX_4qFmgP0wDQz_3m30Uw-Fk9oKNHGviQ5eAGSJq4Jt9QpEN3ITlRbltwCUAQMf9ppsjYeBuvr52wMWiKV0i-ZdAIEi9hgjlapVADq9wO2W7ANlu-xzZjgol9N-NQi-1IvbKHJvAJfhqTP8jKCnDgFDmKnIDPmNPCPNd_wxkVzpAskLG9TfKnlRd-bSK1Z-2rVV-mBYLKygS_040 "custom schema")
## Element properties ## Element properties
@ -454,7 +456,7 @@ Rel(personAlias, containerAlias, "Label", "Optional Technology")
@enduml @enduml
``` ```
![properties sample](http://www.plantuml.com/plantuml/png/ZPB1RXCn48Rl-nHcBsoaaAKH4XAdLYa8fD16443Y4hdh8RRmUYnxh7P1l3jZg-csQG8zUUpvycU-jKyZoK2fjzKpupgR50XDvEERjWtoUhOrfDDLYX0wT0IEPXtsxKyJEXr9jujNBrPMElhoSTd23VSLA3xSd8EtEFIPzpcxUYuK_939aj0W5GIn2kWXq30LNwLDK9qfjJjgwWlPGpqLzJihewud3vkNOIkT-IN9eClGTqH2R-G-jqQqkV_14GG79DxUy501WdWzUydm2a94r_Yod5aZ8yDBUGNbLvS-vqihpY5smPITQAuDwJiJV_jNjqeJpgm-0-qcU5zEctgthwTrKStfzqBtnyxLIMOAd2kcIHeRJmwXypjqVW-TCphUmUO25MoMZUFbkEXwyF0Vyov5mlw0kFXTLK9yOmRJ_WUOSEVHs8jHaSl3oAZ6PKOMwDZESMQtgnxfhA7J3YrkXt-xO3fuWN_u2eT8q3UnBFlvJqiq4Cjh-0JsuViQvpwQEmfmmYaubNhx5m00 "properties sample") ![properties sample](https://www.plantuml.com/plantuml/png/ZPB1RXCn48Rl-nHcBsoaaAKH4XAdLYa8fD16443Y4hdh8RRmUYnxh7P1l3jZg-csQG8zUUpvycU-jKyZoK2fjzKpupgR50XDvEERjWtoUhOrfDDLYX0wT0IEPXtsxKyJEXr9jujNBrPMElhoSTd23VSLA3xSd8EtEFIPzpcxUYuK_939aj0W5GIn2kWXq30LNwLDK9qfjJjgwWlPGpqLzJihewud3vkNOIkT-IN9eClGTqH2R-G-jqQqkV_14GG79DxUy501WdWzUydm2a94r_Yod5aZ8yDBUGNbLvS-vqihpY5smPITQAuDwJiJV_jNjqeJpgm-0-qcU5zEctgthwTrKStfzqBtnyxLIMOAd2kcIHeRJmwXypjqVW-TCphUmUO25MoMZUFbkEXwyF0Vyov5mlw0kFXTLK9yOmRJ_WUOSEVHs8jHaSl3oAZ6PKOMwDZESMQtgnxfhA7J3YrkXt-xO3fuWN_u2eT8q3UnBFlvJqiq4Cjh-0JsuViQvpwQEmfmmYaubNhx5m00 "properties sample")
## Snippets for Visual Studio Code ## Snippets for Visual Studio Code
@ -469,7 +471,7 @@ It is possible to save them directly inside VS Code: [Creating your own snippets
## Advanced Samples ## Advanced Samples
The following advanced samples are reproductions with C4-PlantUML from official [C4 model samples](https://c4model.com/#examples) created by [Simon Brown](http://simonbrown.je/). The following advanced samples are reproductions with C4-PlantUML from official [C4 model samples](https://c4model.com/#examples) created by [Simon Brown](https://simonbrown.je/).
The core diagram samples from [c4model.com](https://c4model.com/#coreDiagrams) are available [here](samples/C4CoreDiagrams.md). The core diagram samples from [c4model.com](https://c4model.com/#coreDiagrams) are available [here](samples/C4CoreDiagrams.md).
@ -477,25 +479,25 @@ The core diagram samples from [c4model.com](https://c4model.com/#coreDiagrams) a
Source: [C4_Container Diagram Sample - techtribesjs.puml](samples/C4_Container%20Diagram%20Sample%20-%20techtribesjs.puml) Source: [C4_Container Diagram Sample - techtribesjs.puml](samples/C4_Container%20Diagram%20Sample%20-%20techtribesjs.puml)
![techtribesjs](http://www.plantuml.com/plantuml/png/ZLHDR-Cs4BthLqnzMGTGxTsasm0zhHEdoMwTZqPoWvu4IXpBt52aIb9nZAB_lKDAaQsuWEk39Syy3j-RUUClrZ7Zcah2o66nTaRaQB_RKVI3K8LiECBQkTh-CfqQjfcKmgsRlB5e2gqSAZSfT3Lz5gPOMxUUNlxquuDaoYrl5rDyfJn7Ji7iai1CA3IJccwAFa2Zw5n5vy6j4LPQIhqHgWH9862Amo0jZAKt3NGlI5qmARTKeoTuU46qcFrvlqopzFuXczy_tOrFeWzTQ9PaoMzNwUKDnRhGqzVq9bjSNL_TpIaOHGzeh5RPrQiRCwNLjjADpRpc64Qpjm0iAJ0wwS1ZLfO6I-QGzyW-yXxAAw64TOOveLKF7qJVZaJ9rZgiiWlTACxCTbnyYlS7DQ59dVmT0Nt2Lz-7yGRpZDKrePymXrbTIr64qYCAVMClB8QaDhxdjtzSnf3gYj9mFddr-PcVXmLFpVh6lmZSG8swbXX3UtCCdGDYm1TwKE2xpkaRNJ61bT4LpQuR5tZ2CN11zc4opFTh2XOBfxt88VDvFZOeCvuJZqUKWJCTcZF7ScRHqxlT9hyluFFaSyiseJ9e3_Y59rHOvQHYBMgACFbit_FD6Iyz_5gucoO7WxNkL1nG6w-4H1icGjV-IZ-WdS_8_vobPwTxT2mosWeGYkChsl-IgRJzIzA1EqroWa08PuD4hKezlu3JoUb0P6ZiOv9CPuvULeZSmZYNkWIYxUn9QAxR83fxIB-fENF1RSlsxSqBSEvHLalqJXdr00krqK5qt1KTzYdSrla0j086jbWZRoHoe649p-6VtiH-eTn6k9P2shuHOY_T_hzGjhrbcFGoBUKkw1dKHUIFWnNT6Pzso7ejDsdwa12UqCCzFGuVxkhH8-5CdzwpCUFTw7p3DaRurZhjZzBefz_c5xI2jJOEpiu-_ao51dLshXlKUWyBTXeYzeoq4GRzD9qkjEmkEpt_-EcyevqjUtiS8queTeJzeDo0_rCl_W0N11nfr_-LiwkwSzmrkjxG8DHAcogCTRSpVTlwYGvAxTn9q665N3SEwYQNee12SsptGpXj11wf6cpT5UsNgR52bNxH0xb-sOUblDO5ssQF_J_chjMK-eAADvNy5m00 "techtribesjs") ![techtribesjs](https://www.plantuml.com/plantuml/png/ZLHDR-Cs4BthLqnzMGTGxTsasm0zhHEdoMwTZqPoWvu4IXpBt52aIb9nZAB_lKDAaQsuWEk39Syy3j-RUUClrZ7Zcah2o66nTaRaQB_RKVI3K8LiECBQkTh-CfqQjfcKmgsRlB5e2gqSAZSfT3Lz5gPOMxUUNlxquuDaoYrl5rDyfJn7Ji7iai1CA3IJccwAFa2Zw5n5vy6j4LPQIhqHgWH9862Amo0jZAKt3NGlI5qmARTKeoTuU46qcFrvlqopzFuXczy_tOrFeWzTQ9PaoMzNwUKDnRhGqzVq9bjSNL_TpIaOHGzeh5RPrQiRCwNLjjADpRpc64Qpjm0iAJ0wwS1ZLfO6I-QGzyW-yXxAAw64TOOveLKF7qJVZaJ9rZgiiWlTACxCTbnyYlS7DQ59dVmT0Nt2Lz-7yGRpZDKrePymXrbTIr64qYCAVMClB8QaDhxdjtzSnf3gYj9mFddr-PcVXmLFpVh6lmZSG8swbXX3UtCCdGDYm1TwKE2xpkaRNJ61bT4LpQuR5tZ2CN11zc4opFTh2XOBfxt88VDvFZOeCvuJZqUKWJCTcZF7ScRHqxlT9hyluFFaSyiseJ9e3_Y59rHOvQHYBMgACFbit_FD6Iyz_5gucoO7WxNkL1nG6w-4H1icGjV-IZ-WdS_8_vobPwTxT2mosWeGYkChsl-IgRJzIzA1EqroWa08PuD4hKezlu3JoUb0P6ZiOv9CPuvULeZSmZYNkWIYxUn9QAxR83fxIB-fENF1RSlsxSqBSEvHLalqJXdr00krqK5qt1KTzYdSrla0j086jbWZRoHoe649p-6VtiH-eTn6k9P2shuHOY_T_hzGjhrbcFGoBUKkw1dKHUIFWnNT6Pzso7ejDsdwa12UqCCzFGuVxkhH8-5CdzwpCUFTw7p3DaRurZhjZzBefz_c5xI2jJOEpiu-_ao51dLshXlKUWyBTXeYzeoq4GRzD9qkjEmkEpt_-EcyevqjUtiS8queTeJzeDo0_rCl_W0N11nfr_-LiwkwSzmrkjxG8DHAcogCTRSpVTlwYGvAxTn9q665N3SEwYQNee12SsptGpXj11wf6cpT5UsNgR52bNxH0xb-sOUblDO5ssQF_J_chjMK-eAADvNy5m00 "techtribesjs")
### Message Bus and Microservices ### Message Bus and Microservices
Source: [C4_Container Diagram Sample - message bus.puml](samples/C4_Container%20Diagram%20Sample%20-%20message%20bus.puml) Source: [C4_Container Diagram Sample - message bus.puml](samples/C4_Container%20Diagram%20Sample%20-%20message%20bus.puml)
![messagebus](http://www.plantuml.com/plantuml/png/bLHVRzis47_NfxXv3qs1D6wBFUsfZcsixPpOjHm4Un9EqjaYGf44IJbrXttt7MMRfLiDoF8GaSVZxyyTpn-SH-kxLiAe9UTmHsNdHjalGbMogmaQxutxVJos-7op4xxf-9XifPKdvMygtOwVXAqQvvlnzBStAudAFzmjnlILpskgELXCEHc58djZc2Tx1PtYUotV1zyGRBMK-bce7KXE0bGrN1mBwtYbWNb1wWgbF3165FWpGUQUX39eiOLdY-PHrBw1zs_V9l4MlzuTtURY6_M7sMBor_9XKsoMgsAsVBo_UfszEeKcUP7_ETzCFtBi57hyjFbOBEP_pEzd7Coo5LcdrLNLEQzRijSmZQlH1CxX4QVc1-UfBMvrfsgqXwlg7QUSi-6JschReXTQZLx3tra6_1VzNQ4nQVR462cgOpR7F-CUNMM5yTSmKRjEeWtXIQYlYo9SA6QBYis70WiBnkgjaCJgBkcYdSAHtOkAKkxy63hpNaDkR6ZYhTO-13SDWT52UT1RmAeYvu2zHHaWKgi_Cf_UOi6lZR5ElOBRpWNeDPQby7TVUXgBoXbjVG_EwK859jgJykvdN4iXbtKcbjRdMEfftPM7y9rQGayELD0gXQCQQlJOiqKmC9qrsj408NQry0dP9EnJekcluvlx-IOiLrRlHSraskvG2TVNviqpXw272KnRh8JavG3NhFpUiBfCUpL3ZoMwdczfiP84xzvNOPTxRSczh2cC7nq7WhHoASFT8V-oIC3nNBnlLCEUh6Fm_b586HlslQXOGwEh_rDRPaag6tQ1VBud5RTHI-8FiDITFxqKy0rwQ71F_CyOKbGptpzPjYQPJFLn_Xw26lv-t6nMEQU5f69z7Cw1aNamREu_YWp1_ow0eJkewXe-vylxyGNmOc0CZpfoKhMB1dH0UQGorzKJURxTgngudCnM18dQkbvi0jhZ3A2aJosMj--YEFuOpMwd9mkNqpmqWYyJSG4J1-l543t607iC3LavKV_0bhwyUEF4rT_95dWeraDi5qYS-85rTwty5m00 "messagebus") ![messagebus](https://www.plantuml.com/plantuml/png/hPFBRjiw48RtVWgUd8qD93OIj9kkuelH9F35iMm4NGaZQcmHfKY2f9ouHT-zf1pA3EHDYtfXYOFX__qpexat5hIjIjxvZmdAgnn9OQqoNmO33Q_zFRD5bLK6DPN2eh1zAil1TwPfOMmn67-wMN4GTZkV3V3DeiWnTy5qSXHGCjfNNhWp6tvRRZVfPhbA9ykNHRSN8Y-FcuTqDlqwNKnSiBD2RQJeqifOMQA-9kFcxMf8GlYgrqcEncAPZcGbSj37Bhrr6I6PF8gTr2LO9iLLZ_pi4FSRE_V01EekA1Kd3vNYZ9wINVm93c2ePifUaw7OLnoq3myvbw-ciM28bQG40Niaja2cYT9onpWwRnzfuKPgK1yOnHYTd481UqqIfPdOav6KrWSt1H8bcR14xWXGYiOGLrdZWh1peIrmwRATlTJDpadDJoSogenNNaEMCJj_hYaQX55IsrhRfJFXGNX0OKrBLgDFTIwZWjOX5bUqhhAZVuurWaL3X7VAcS6Sv62XXZLYH5LQIODj7bGvin5hwCynP_p_eB-ORlphIii3onrBwZq8Pkh6tBow4AbbF6W7b77tsaPDilEmyYoUqyJvpS3KkAK6of7Stb5_IgpKQ2uEf2qVzSxfnssB0VDZyZoBj25qxWVcv83QEEtwU-2y6TQvev2JGj8_QAo3H6tr9y-U-k67Ox0ILqSWavLz_qY8BS2I0Wxe_fH2WRd3_UfqriZJIRJEfzNRghp-8WfcmjeGNyZUenuscrNYRhkhfqrjBr0GkDZsiz9JibmC8hbqVM4PuuatTTRTPA8McOp6xhg__oXoV7FbrCzkx-RsahUFMvUWo2ERLUsxQPhq0317GHsX0MoxCp0sGExQaD16DyeTqsLGZULYmxFOy0TxxLN-AyUnVbio2brgSUnqtKtmlV3FTUMnszC6_oEdTosvU1k2oI1MsxntkAhalm40 "messagebus")
## Background ## Background
[PlantUML](http://en.plantuml.com/) is an open source project that allows you to create UML diagrams. [PlantUML](https://plantuml.com/) is an open source project that allows you to create UML diagrams.
Diagrams are defined using a simple and intuitive language. Diagrams are defined using a simple and intuitive language.
Images can be generated in PNG, in SVG or in LaTeX format. Images can be generated in PNG, in SVG or in LaTeX format.
PlantUML was created to allow the drawing of UML diagrams, using a simple and human readable text description. PlantUML was created to allow the drawing of UML diagrams, using a simple and human readable text description.
Because it does not prevent you from drawing inconsistent diagrams, it is a drawing tool and not a modeling tool. Because it does not prevent you from drawing inconsistent diagrams, it is a drawing tool and not a modeling tool.
It is the most used text-based diagram drawing tool with [extensive support into wikis and forums, text editors and IDEs, use by different programming languages and documentation generators](http://en.plantuml.com/running). It is the most used text-based diagram drawing tool with [extensive support into wikis and forums, text editors and IDEs, use by different programming languages and documentation generators](https://en.plantuml.com/running).
The [C4 model](https://c4model.com/) for software architecture is an "abstraction-first" approach to diagramming, based upon abstractions that reflect how software architects and developers think about and build software. The [C4 model](https://c4model.com/) for software architecture is an "abstraction-first" approach to diagramming, based upon abstractions that reflect how software architects and developers think about and build software.
The small set of abstractions and diagram types makes the C4 model easy to learn and use. The small set of abstractions and diagram types makes the C4 model easy to learn and use.
@ -507,8 +509,8 @@ More information can be found here:
* [The C4 model for software architecture](https://c4model.com/) * [The C4 model for software architecture](https://c4model.com/)
* [REAL WORLD PlantUML - Sample Gallery](https://real-world-plantuml.com/) * [REAL WORLD PlantUML - Sample Gallery](https://real-world-plantuml.com/)
* [Visualising and documenting software architecture cheat sheets](http://www.codingthearchitecture.com/2017/04/27/visualising_and_documenting_software_architecture_cheat_sheets.html) * [Visualising and documenting software architecture cheat sheets](https://www.codingthearchitecture.com/2017/04/27/visualising_and_documenting_software_architecture_cheat_sheets.html)
* [PlantUML and Structurizr - Create models not diagrams](http://www.codingthearchitecture.com/2016/12/08/plantuml_and_structurizr.html) * [PlantUML and Structurizr - Create models not diagrams](https://www.codingthearchitecture.com/2016/12/08/plantuml_and_structurizr.html)
## License ## License

@ -17,7 +17,7 @@ System_Ext(mbs, "Mainframe Banking System", "Stores all of the core banking info
Container_Boundary(api, "API Application") { Container_Boundary(api, "API Application") {
Component(sign, "Sign In Controller", "MVC Rest Controlle", "Allows users to sign in to the internet banking system") Component(sign, "Sign In Controller", "MVC Rest Controlle", "Allows users to sign in to the internet banking system")
Component(accounts, "Accounts Summary Controller", "MVC Rest Controlle", "Provides customers with a summory of their bank accounts") Component(accounts, "Accounts Summary Controller", "MVC Rest Controller", "Provides customers with a summary of their bank accounts")
Component(security, "Security Component", "Spring Bean", "Provides functionality related to singing in, changing passwords, etc.") Component(security, "Security Component", "Spring Bean", "Provides functionality related to singing in, changing passwords, etc.")
Component(mbsfacade, "Mainframe Banking System Facade", "Spring Bean", "A facade onto the mainframe banking system.") Component(mbsfacade, "Mainframe Banking System Facade", "Spring Bean", "A facade onto the mainframe banking system.")

@ -0,0 +1,51 @@
@startuml
' convert it with additional command line argument -DRELATIVE_INCLUDE="." to use locally
!if %variable_exists("RELATIVE_INCLUDE")
!include ./../C4_Container.puml
!else
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Container.puml
!endif
!define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons
!define FONTAWESOME https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/font-awesome-5
' uncomment the following line and comment the first to use locally
' !include C4_Container.puml
!include DEVICONS/angular.puml
!include DEVICONS/dotnet.puml
!include DEVICONS/java.puml
!include DEVICONS/msql_server.puml
!include FONTAWESOME/server.puml
!include FONTAWESOME/envelope.puml
' LAYOUT_TOP_DOWN()
' LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND()
title Container diagram for Internet Banking System
Person(customer, Customer, "A customer of the bank, with personal bank accounts")
System_Boundary(c1, "Internet Banking") {
Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA", "java")
Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser", "angular")
Container(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device", "dotnet")
ContainerDb(database, "Database", "SQL Database", "Stores user registraion information, hased auth credentials, access logs, etc.", "msql_server")
Container(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API", "server")
}
System_Ext(email_system, "E-Mail System", "The internal Microsoft Exchange system", "envelope")
System_Ext(banking_system, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
Rel(customer, web_app, "Uses", "HTTPS")
Rel(customer, spa, "Uses", "HTTPS")
Rel(customer, mobile_app, "Uses")
Rel_Neighbor(web_app, spa, "Delivers")
Rel(spa, backend_api, "Uses", "async, JSON/HTTPS")
Rel(mobile_app, backend_api, "Uses", "async, JSON/HTTPS")
Rel_Back_Neighbor(database, backend_api, "Reads from and writes to", "sync, JDBC")
Rel_Back(customer, email_system, "Sends e-mails to")
Rel_Back(email_system, backend_api, "Sends e-mails using", "sync, SMTP")
Rel_Neighbor(backend_api, banking_system, "Uses", "sync/async, XML/HTTPS")
@enduml

@ -6,8 +6,8 @@
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Container.puml !include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Container.puml
!endif !endif
LAYOUT_TOP_DOWN() ' LAYOUT_TOP_DOWN()
'LAYOUT_AS_SKETCH() ' LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND() LAYOUT_WITH_LEGEND()
title Container diagram for Internet Banking System title Container diagram for Internet Banking System
@ -18,7 +18,7 @@ System_Boundary(c1, "Internet Banking") {
Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA") Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA")
Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser") Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser")
Container(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device") Container(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device")
ContainerDb(database, "Database", "SQL Database", "Stores user registraion information, hased auth credentials, access logs, etc.") ContainerDb(database, "Database", "SQL Database", "Stores user registration information, hashed auth credentials, access logs, etc.")
Container(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API") Container(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API")
} }

@ -1,4 +1,4 @@
@startuml @startuml "messagebus"
' convert it with additional command line argument -DRELATIVE_INCLUDE="." to use locally ' convert it with additional command line argument -DRELATIVE_INCLUDE="." to use locally
!if %variable_exists("RELATIVE_INCLUDE") !if %variable_exists("RELATIVE_INCLUDE")
!include ./../C4_Container.puml !include ./../C4_Container.puml
@ -13,6 +13,7 @@ LAYOUT_TOP_DOWN()
'LAYOUT_AS_SKETCH() 'LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND() LAYOUT_WITH_LEGEND()
Person(customer, Customer, "A customer") Person(customer, Customer, "A customer")
System_Boundary(c1, "Customer Information") { System_Boundary(c1, "Customer Information") {

@ -36,11 +36,11 @@ Rel(anonymous_user, web_app, "Uses", "HTTPS")
Rel(aggregated_user, web_app, "Uses", "HTTPS") Rel(aggregated_user, web_app, "Uses", "HTTPS")
Rel(administration_user, web_app, "Uses", "HTTPS") Rel(administration_user, web_app, "Uses", "HTTPS")
Rel(web_app, rel_db, "Reads from and writes to", "SQL/JDBC, post 3306") Rel(web_app, rel_db, "Reads from and writes to", "SQL/JDBC, port 3306")
Rel(web_app, filesystem, "Reads from") Rel(web_app, filesystem, "Reads from")
Rel(web_app, nosql, "Reads from", "MongoDB wire protocol, port 27017") Rel(web_app, nosql, "Reads from", "MongoDB wire protocol, port 27017")
Rel_U(updater, rel_db, "Reads from and writes data to", "SQL/JDBC, post 3306") Rel_U(updater, rel_db, "Reads from and writes data to", "SQL/JDBC, port 3306")
Rel_U(updater, filesystem, "Writes to") Rel_U(updater, filesystem, "Writes to")
Rel_U(updater, nosql, "Reads from and writes to", "MongoDB wire protocol, port 27017") Rel_U(updater, nosql, "Reads from and writes to", "MongoDB wire protocol, port 27017")

@ -1,4 +1,4 @@
@startuml @startuml "enterprise"
' convert it with additional command line argument -DRELATIVE_INCLUDE="." to use locally ' convert it with additional command line argument -DRELATIVE_INCLUDE="." to use locally
!if %variable_exists("RELATIVE_INCLUDE") !if %variable_exists("RELATIVE_INCLUDE")
!include ./../C4_Context.puml !include ./../C4_Context.puml

@ -6,10 +6,12 @@
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Deployment.puml !include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Deployment.puml
!endif !endif
AddTagSupport("fallback", $bgColor="#c0c0c0") AddElementTag("fallback", $bgColor="#c0c0c0")
AddRelTag("fallback", $textColor="#c0c0c0", $lineColor="#438DD5")
WithoutPropertyHeader() WithoutPropertyHeader()
' dynamic legend is used (activated in last line) ' calculated legend is used (activated in last line)
' LAYOUT_WITH_LEGEND() ' LAYOUT_WITH_LEGEND()
title Deployment Diagram for Internet Banking System - Live title Deployment Diagram for Internet Banking System - Live
@ -61,7 +63,7 @@ Rel(mobile, api, "Makes API calls to", "json/HTTPS")
Rel(spa, api, "Makes API calls to", "json/HTTPS") Rel(spa, api, "Makes API calls to", "json/HTTPS")
Rel_U(web, spa, "Delivers to the customer's web browser") Rel_U(web, spa, "Delivers to the customer's web browser")
Rel(api, db, "Reads from and writes to", "JDBC") Rel(api, db, "Reads from and writes to", "JDBC")
Rel(api, db2, "Reads from and writes to", "JDBC") Rel(api, db2, "Reads from and writes to", "JDBC", $tags="fallback")
Rel_R(db, db2, "Replicates data to") Rel_R(db, db2, "Replicates data to")
SHOW_LEGEND() SHOW_LEGEND()

@ -6,9 +6,10 @@
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Deployment.puml !include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Deployment.puml
!endif !endif
AddTagSupport("fallback", $bgColor="#c0c0c0") AddElementTag("fallback", $bgColor="#c0c0c0")
AddRelTag("fallback", $textColor="#c0c0c0", $lineColor="#438DD5")
' dynamic legend is used (activated in last line) ' calculated legend is used (activated in last line)
' LAYOUT_WITH_LEGEND() ' LAYOUT_WITH_LEGEND()
title Deployment Diagram for Internet Banking System - Live title Deployment Diagram for Internet Banking System - Live
@ -50,7 +51,7 @@ Rel(mobile, api, "Makes API calls to", "json/HTTPS")
Rel(spa, api, "Makes API calls to", "json/HTTPS") Rel(spa, api, "Makes API calls to", "json/HTTPS")
Rel_U(web, spa, "Delivers to the customer's web browser") Rel_U(web, spa, "Delivers to the customer's web browser")
Rel(api, db, "Reads from and writes to", "JDBC") Rel(api, db, "Reads from and writes to", "JDBC")
Rel(api, db2, "Reads from and writes to", "JDBC") Rel(api, db2, "Reads from and writes to", "JDBC", $tags="fallback")
Rel_R(db, db2, "Replicates data to") Rel_R(db, db2, "Replicates data to")
SHOW_LEGEND() SHOW_LEGEND()

@ -3,7 +3,7 @@
!if %variable_exists("RELATIVE_INCLUDE") !if %variable_exists("RELATIVE_INCLUDE")
!include ./../C4_Component.puml !include ./../C4_Component.puml
!else !else
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Component.puml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
!endif !endif
SHOW_PERSON_SPRITE(person2) SHOW_PERSON_SPRITE(person2)
@ -11,19 +11,19 @@ SHOW_PERSON_SPRITE(person2)
UpdateElementStyle("system", $bgColor="chocolate", $fontColor="orange", $borderColor="orange") UpdateElementStyle("system", $bgColor="chocolate", $fontColor="orange", $borderColor="orange")
UpdateRelStyle(black, black) UpdateRelStyle(black, black)
AddTagSupport("role1", $bgColor="green", $fontColor="white", $borderColor="#d73027", $shadowing="false") AddElementTag("role1", $bgColor="green", $fontColor="white", $borderColor="#d73027", $shadowing="false")
AddTagSupport("role2", $fontColor="#d73027", $shadowing="true") AddElementTag("role2", $fontColor="#d73027", $shadowing="true")
AddTagSupport("role3", $bgColor="orange") AddElementTag("role3", $bgColor="orange")
AddTagSupport("role4", $borderColor="blue") AddElementTag("role4", $borderColor="blue")
AddTagSupport("unusedRole") AddElementTag("unusedRole")
AddRelTagSupport("line1", $lineColor="green", $textColor="blue") AddRelTag("line1", $lineColor="green", $textColor="blue")
AddRelTagSupport("line2", $lineColor="blue", $textColor="green") AddRelTag("line2", $lineColor="blue", $textColor="green")
AddRelTagSupport("line3", $textColor="orange") AddRelTag("line3", $textColor="orange")
AddRelTagSupport("line4", $lineColor="orange") AddRelTag("line4", $lineColor="orange")
' PlantUML cannot combine line styles, a combination has to be added as workaround as first additional tag ' PlantUML cannot combine line styles, a combination has to be added as workaround as first additional tag
AddRelTagSupport("line3&line4", $lineColor="orange", $textColor="orange") AddRelTag("line3&line4", $lineColor="orange", $textColor="orange")
AddRelTagSupport("unusedLine", $lineColor="red", $textColor="red") AddRelTag("unusedLine", $lineColor="red", $textColor="red")
Person(person, "Person") Person(person, "Person")
Person(person1, "Person1", $tags="role1") Person(person1, "Person1", $tags="role1")

@ -3,7 +3,7 @@
!if %variable_exists("RELATIVE_INCLUDE") !if %variable_exists("RELATIVE_INCLUDE")
!include ./../C4_Component.puml !include ./../C4_Component.puml
!else !else
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Component.puml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
!endif !endif
System(RelFrom, RelFrom) System(RelFrom, RelFrom)

@ -3,7 +3,7 @@
!if %variable_exists("RELATIVE_INCLUDE") !if %variable_exists("RELATIVE_INCLUDE")
!include ./../C4_Dynamic.puml !include ./../C4_Dynamic.puml
!else !else
!include https://raw.githubusercontent.com/kirchsth/C4-PlantUML/extended/C4_Dynamic.puml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml
!endif !endif
System(RelFrom, RelFrom) System(RelFrom, RelFrom)

@ -1,6 +1,6 @@
# C4 Model Diagrams # C4 Model Diagrams
The following samples are reproductions with C4-PlantUML from [C4 model core diagrams](http://c4model.com/#coreDiagrams) created by [Simon Brown](http://simonbrown.je/). The following samples are reproductions with C4-PlantUML from [C4 model core diagrams](https://c4model.com/#coreDiagrams) created by [Simon Brown](https://simonbrown.je/).
## Core Diagrams ## Core Diagrams
@ -8,14 +8,14 @@ The following samples are reproductions with C4-PlantUML from [C4 model core dia
Source: [C4_Context Diagram Sample - bigbankplc.puml](C4_Context%20Diagram%20Sample%20-%20bigbankplc.puml) Source: [C4_Context Diagram Sample - bigbankplc.puml](C4_Context%20Diagram%20Sample%20-%20bigbankplc.puml)
![System Context diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/VL7DZjfC4BpxAVhZyh4I2vUSSjfTWfALO8C2ACh9QiOD7Z4_QBeTuEtJDiQ1iCdDqrrLNLL-Oi4abNVPVpOOLnK4fSYUFuv62G_3hPMoMbTCoSGW56HeeX_jR38bIpaQVtYSEmoocar7TDHzGOKEyx62zJtSryB_GnMKvPKDKX9iedFnOCCMd0q460guMTl4-XL1huAB1fqxgKPdxq_vRFhyu-jgcNz_NNx9fvFFaxTF_OSi4okEO75Y8Gyj0GgBsuHUBIHurL4A9F22OQTkMcoMpIbn37rJiKHFQG2zymHT1nstkvukd-62XBXf4gmLDO23LWVxbjdC08s9LH0UzXwoyxN--goOS_DKkR_OQYxLlN5tZkkIVbewW0qQoAFO603NiMgAjEdswA1fskEEO8ydJwsFraW-EKhVetM_dKmUwpTmTt-fsMnZJmFDh4cHuqPWSZGbXYq1NHEwZ9rqs6Zrf3gpo_Sx6HSI4p6WSvSsZGwWhUcTf5qRWwkaaZ0mcXgcBnBJ9Fr6xkgltZM_OcA5AIf_GRExWjxsig1GS1kMGMBBUIExBTSntVtIVx2RnBFb_2nnp-nAwzmzARtoxXS0 "System Context diagram for Internet Banking System") ![System Context diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/VL7DZjfC4BpxAVhZyh4I2vUSSjfTWfALO8C2ACh9QiOD7Z4_QBeTuEtJDiQ1iCdDqrrLNLL-Oi4abNVPVpOOLnK4fSYUFuv62G_3hPMoMbTCoSGW56HeeX_jR38bIpaQVtYSEmoocar7TDHzGOKEyx62zJtSryB_GnMKvPKDKX9iedFnOCCMd0q460guMTl4-XL1huAB1fqxgKPdxq_vRFhyu-jgcNz_NNx9fvFFaxTF_OSi4okEO75Y8Gyj0GgBsuHUBIHurL4A9F22OQTkMcoMpIbn37rJiKHFQG2zymHT1nstkvukd-62XBXf4gmLDO23LWVxbjdC08s9LH0UzXwoyxN--goOS_DKkR_OQYxLlN5tZkkIVbewW0qQoAFO603NiMgAjEdswA1fskEEO8ydJwsFraW-EKhVetM_dKmUwpTmTt-fsMnZJmFDh4cHuqPWSZGbXYq1NHEwZ9rqs6Zrf3gpo_Sx6HSI4p6WSvSsZGwWhUcTf5qRWwkaaZ0mcXgcBnBJ9Fr6xkgltZM_OcA5AIf_GRExWjxsig1GS1kMGMBBUIExBTSntVtIVx2RnBFb_2nnp-nAwzmzARtoxXS0 "System Context diagram for Internet Banking System")
### Container Diagram ### Container Diagram
Source: [C4_Container Diagram Sample - bigbankplc.puml](C4_Container%20Diagram%20Sample%20-%20bigbankplc.puml) Source: [C4_Container Diagram Sample - bigbankplc.puml](C4_Container%20Diagram%20Sample%20-%20bigbankplc.puml)
![Container diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/bLJ1RkCs4BtxAwRfeLv0YL6WfvxMiOqcMpjHLqwpFGaZQYmHeKY1fEmOHV-zGqMHB7k1j3VfQUQznpT3VNOUhMygDVb1Qg6QdA3qldQ_pcOM3pU5z6MJDOwiCDgJzZV2LBCNQKNfV3bR_78TAzJ-QREUqIj_pobdC5rmCKfDzgOEr3z1excludxm9S7EA6KEKXUWk0XGvp3wBAtZ9mEi2ye8LEh87Bt1Im7-kfx_zVYqJRUFSRfyV7wOVXgmUP8clw-sYpi6E-ZvVdkNhbU_hHwM34wyz8gW9uLSOc6nOgCMxhKdgyd3BUgNu3avEa_LP1AJTKPFHUEygSX6iEYVhkRm3eFPjOVAk3k20-S9TTk8giK0XJ2DzkwAVRnHfxSCv6YFK_4pSvqRkFe4Vqy0OF0xFL2MObrpyJDbCAzh9GLwQVGLGrzmZn4ajGtcDtyk0hOa9VTiexNcFDSAw2RSZYF0lMxsVl1upYR7ogv6faluiwBh60iAwk-gYR2ozX7CTT4ej06EhTdBd1oWKjzNsV6k1Ekef3-6BH1D6wI3lSJG8YtmUI6pvk38NZYgJ2OLTN5imallQV5Z1D-mGavYx0MKhAId75oJEV8yi__ipLsOUpC0EUsbe7DxosoQeySC7OKnT8_1JVB76aRltbZs5kuUM2gaynPP6gJchQpQwKPGecFNsFWIXAMSj9UeN1IMYfm3PGf-8IzkBcBAKBoGpZad6VOrll_-sYmDbzcXRvJR1_c4I9YOfV_fLtlrwgTKeLIfQm6cMrrl-BsxLe5_oz7BbXeLRAImnfcTXzMhA54N16-TJ7l2sJaOM9bJxonMT7PlXsZR5UmcBHZeJt6IC61c6Z-CEUglQmJUedROddS8UVALrCalORYOJuvSqBxRRkE42yTrhiOFQxh57kWwkVI1P55cPlWDj7J39U-OMd0qzbuGtL6B2BuaZm-pK_51ydzsfhTSFHWRLdxCyfKmTx2pfch_EWShFJdm9Z1tnClR1LFsd2TvdArHmhGEw3gWBSTWPBHnvnx6VOtZ3HZaayqsPg9HogFsyTuDmRJziowTRvjr7yvdRcqgzIy0 "Container diagram for Internet Banking System") ![Container diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/bLJ1RkCs4BtxAwRfeLv0YL6WfvxMiOqcMpjHLqwpFGaZQYmHeKY1fEmOHV-zGqMHB7k1j3VfQUQznpT3VNOUhMygDVb1Qg6QdA3qldQ_pcOM3pU5z6MJDOwiCDgJzZV2LBCNQKNfV3bR_78TAzJ-QREUqIj_pobdC5rmCKfDzgOEr3z1excludxm9S7EA6KEKXUWk0XGvp3wBAtZ9mEi2ye8LEh87Bt1Im7-kfx_zVYqJRUFSRfyV7wOVXgmUP8clw-sYpi6E-ZvVdkNhbU_hHwM34wyz8gW9uLSOc6nOgCMxhKdgyd3BUgNu3avEa_LP1AJTKPFHUEygSX6iEYVhkRm3eFPjOVAk3k20-S9TTk8giK0XJ2DzkwAVRnHfxSCv6YFK_4pSvqRkFe4Vqy0OF0xFL2MObrpyJDbCAzh9GLwQVGLGrzmZn4ajGtcDtyk0hOa9VTiexNcFDSAw2RSZYF0lMxsVl1upYR7ogv6faluiwBh60iAwk-gYR2ozX7CTT4ej06EhTdBd1oWKjzNsV6k1Ekef3-6BH1D6wI3lSJG8YtmUI6pvk38NZYgJ2OLTN5imallQV5Z1D-mGavYx0MKhAId75oJEV8yi__ipLsOUpC0EUsbe7DxosoQeySC7OKnT8_1JVB76aRltbZs5kuUM2gaynPP6gJchQpQwKPGecFNsFWIXAMSj9UeN1IMYfm3PGf-8IzkBcBAKBoGpZad6VOrll_-sYmDbzcXRvJR1_c4I9YOfV_fLtlrwgTKeLIfQm6cMrrl-BsxLe5_oz7BbXeLRAImnfcTXzMhA54N16-TJ7l2sJaOM9bJxonMT7PlXsZR5UmcBHZeJt6IC61c6Z-CEUglQmJUedROddS8UVALrCalORYOJuvSqBxRRkE42yTrhiOFQxh57kWwkVI1P55cPlWDj7J39U-OMd0qzbuGtL6B2BuaZm-pK_51ydzsfhTSFHWRLdxCyfKmTx2pfch_EWShFJdm9Z1tnClR1LFsd2TvdArHmhGEw3gWBSTWPBHnvnx6VOtZ3HZaayqsPg9HogFsyTuDmRJziowTRvjr7yvdRcqgzIy0 "Container diagram for Internet Banking System")
### Component Diagram ### Component Diagram
@ -23,7 +23,7 @@ Source: [C4_Container Diagram Sample - bigbankplc.puml](C4_Container%20Diagram%2
Source: [C4_Component Diagram Sample - bigbankplc.puml](C4_Component%20Diagram%20Sample%20-%20bigbankplc.puml) Source: [C4_Component Diagram Sample - bigbankplc.puml](C4_Component%20Diagram%20Sample%20-%20bigbankplc.puml)
![Component diagram for Internet Banking System - API Application](http://www.plantuml.com/plantuml/png/fPLDRnit48Rl-okcFhGou5YNddgABBkD0piH8hiV9s6M76lPy6D1pbeHYlxt3YbvATb6OI0dSScNCy-yCxjwdnWZ3yusFnYlxA09EkO-_JATHjoShmrtGpiaYYfu9i_dAhZfLnDLbxYRpdz-jx3e-VxsPahVv5oJbitLFBW--2plS-YVOF1opya6S4Vm4AmD6-FNO8qdGA_XwDZ49Ai0aXTiK6ZjLcACW2yJD3UplpxVtwt-kBxxiBgv-ktgq-Naj6dOi2KOjQ0DhYCwoH_XsZD5JmmNwBzcbEKsCJbu1xF5DSpwtXg5R89lchcKZW8Q9wd7CpXPYbpYBd1DXy8JEVeR7p6fQ7ekLQ5V3nPZFbd4y6Wq9P1gIfNc2Q3T0po8IJaEMiFRNBuQ4WT7CS6ZmNp7HDXG2sqCcqJn_EJq0CrbijlG6bkWSie_qM4q_ZWxMECCauOqj4co1_uE6bVoFVreUZIAZh0ksubk9VybChQOABDy8OkxoF2q3KlLaSDykkGGXJEF74HQcyIng8LGskRA-WmwJ1rfm44uFEyR02gIpezeqncWKfGIsB2M1sALkNOzNbrzuubhKpOC9Mn4Hy_6e9AKVeM7OfAIZT6W0nx0DWnS7Ih9m-1PLeBl4nOhAqSrQ7KXEernEy7UID9dmtTo2lyq0527U9BCscSw-P4XXXmf1ckfJDdjxtFuGedhTjwTvTTjvsdAhSmXX5-Mh_S-xJmuVPPvB4eYxfUm79mJ-hTWr26iexGnt052aYWXRlS-crX8HXDVW2HIGvInp3Rib_MqjAwFkOuBmkFfFnxgc0UHT754vBkcde7gSFVGOqgR47Njsp66ZD03AjJqFuC4lnR5Ar0ps5s6uFTzS6ECuqRap2Mrl3dxzXyuS9z871hFQvCgtWjHlQxRyaQYXXzX8ri473BTnykBURrmMAeizm7BDqQ-_1_kxXPB4V_RD5bRFf85iye-BZz_6dMZgBA-BYnAzuPexWt1tfFN-R_YFm00 "Component diagram for Internet Banking System - API Application") ![Component diagram for Internet Banking System - API Application](https://www.plantuml.com/plantuml/png/fPLDRnit48Rl-okcFhGou5YNddgABBkD0piH8hiV9s6M76lPy6D1pbeHYlxt3YbvATb6OI0dSScNCy-yCxjwdnWZ3yusFnYlxA09EkO-_JATHjoShmrtGpiaYYfu9i_dAhZfLnDLbxYRpdz-jx3e-VxsPahVv5oJbitLFBW--2plS-YVOF1opya6S4Vm4AmD6-FNO8qdGA_XwDZ49Ai0aXTiK6ZjLcACW2yJD3UplpxVtwt-kBxxiBgv-ktgq-Naj6dOi2KOjQ0DhYCwoH_XsZD5JmmNwBzcbEKsCJbu1xF5DSpwtXg5R89lchcKZW8Q9wd7CpXPYbpYBd1DXy8JEVeR7p6fQ7ekLQ5V3nPZFbd4y6Wq9P1gIfNc2Q3T0po8IJaEMiFRNBuQ4WT7CS6ZmNp7HDXG2sqCcqJn_EJq0CrbijlG6bkWSie_qM4q_ZWxMECCauOqj4co1_uE6bVoFVreUZIAZh0ksubk9VybChQOABDy8OkxoF2q3KlLaSDykkGGXJEF74HQcyIng8LGskRA-WmwJ1rfm44uFEyR02gIpezeqncWKfGIsB2M1sALkNOzNbrzuubhKpOC9Mn4Hy_6e9AKVeM7OfAIZT6W0nx0DWnS7Ih9m-1PLeBl4nOhAqSrQ7KXEernEy7UID9dmtTo2lyq0527U9BCscSw-P4XXXmf1ckfJDdjxtFuGedhTjwTvTTjvsdAhSmXX5-Mh_S-xJmuVPPvB4eYxfUm79mJ-hTWr26iexGnt052aYWXRlS-crX8HXDVW2HIGvInp3Rib_MqjAwFkOuBmkFfFnxgc0UHT754vBkcde7gSFVGOqgR47Njsp66ZD03AjJqFuC4lnR5Ar0ps5s6uFTzS6ECuqRap2Mrl3dxzXyuS9z871hFQvCgtWjHlQxRyaQYXXzX8ri473BTnykBURrmMAeizm7BDqQ-_1_kxXPB4V_RD5bRFf85iye-BZz_6dMZgBA-BYnAzuPexWt1tfFN-R_YFm00 "Component diagram for Internet Banking System - API Application")
## Supplementary Diagrams ## Supplementary Diagrams
@ -32,28 +32,28 @@ Source: [C4_Component Diagram Sample - bigbankplc.puml](C4_Component%20Diagram%2
Source: [C4_Context Diagram Sample - bigbankplc-landscape.puml](C4_Context%20Diagram%20Sample%20-%20bigbankplc-landscape.puml) Source: [C4_Context Diagram Sample - bigbankplc-landscape.puml](C4_Context%20Diagram%20Sample%20-%20bigbankplc-landscape.puml)
![System Landscape diagram for Big Bank plc](http://www.plantuml.com/plantuml/png/TLHDSy963BtxLwXSGcO8zD1JJ-63QJA5a0amcPuyorh6EwnttTKwXEdqlrThRDS4kB7Ia_IUzCmpUU5ycUle5sMaBXE4pFk2VX-Dd3WEzyfdvQuaTD8QZyOFfSr71-LaHZuRJNzxUjV2-EroCS9lpYUOS32UCfZVmo8qVe3IS5NErU0pXDHgRO_Ax44hWo1C0XTfvOX_MU2feAqKMf-uHqllP_leOJ7-QxNTn9lLUpnRVRxr7zlGU1sl_vnlfYySgqEVhvkNU37_O_usus3abTS8wnDvp671N4YA0Y5HOkz4pbmTJDGU9i8SeD0oYjxHaJLzMPAtERe1zCuHeIjGa3MjSprEZg51WaqhVJj63U38YuMYgGmn45BQqdWQzfZNd1MwmYd2UCBHHBXJN_xA3RjiUe_mJmG0DV_-xamWfkh9uDVGnQ1lgDN0YbWu0hNiA6pyI-4Hb67HkV3A6X0xMrPNKUwIuw0wMouE28KuvLZJxf29vz--BtmUHcsMzoQ6DIHiD922Ckxmiq4kbFvVplmfl85Q4PiCGLKQXOQbaiwIJJtClsKcp1u1kmMt27BQf4xaoCsMpUyRsrfxwv10QDsSKN80weNVs5chSj3PcNV2a901nY_qigLqzb15gQcC2TsNae5POoXOdqEmzY9DUzrC3GOAcMgjohHsup4_f-o4FCGsJSy39lo25R-wlST9hemYxsfT9W4gYy8wVt_Alr7qWJf-GxNFTjPrFfChRsu9YIi2_AE3Erlci_O5LSQ0ahYq1WUk7VobGzPe4ghF7Wp6DLSJRYnuJ0U2lqkaeBIg2-P2ZKLc3JPDPbSVsFtXNSeylLBLDLjN_MNR-y3PbJVkGhVjWU-XeeKuSSUAsENyormpyh4ARhjVP3VvpDh3l_5_ "System Landscape diagram for Big Bank plc") ![System Landscape diagram for Big Bank plc](https://www.plantuml.com/plantuml/png/TLHDSy963BtxLwXSGcO8zD1JJ-63QJA5a0amcPuyorh6EwnttTKwXEdqlrThRDS4kB7Ia_IUzCmpUU5ycUle5sMaBXE4pFk2VX-Dd3WEzyfdvQuaTD8QZyOFfSr71-LaHZuRJNzxUjV2-EroCS9lpYUOS32UCfZVmo8qVe3IS5NErU0pXDHgRO_Ax44hWo1C0XTfvOX_MU2feAqKMf-uHqllP_leOJ7-QxNTn9lLUpnRVRxr7zlGU1sl_vnlfYySgqEVhvkNU37_O_usus3abTS8wnDvp671N4YA0Y5HOkz4pbmTJDGU9i8SeD0oYjxHaJLzMPAtERe1zCuHeIjGa3MjSprEZg51WaqhVJj63U38YuMYgGmn45BQqdWQzfZNd1MwmYd2UCBHHBXJN_xA3RjiUe_mJmG0DV_-xamWfkh9uDVGnQ1lgDN0YbWu0hNiA6pyI-4Hb67HkV3A6X0xMrPNKUwIuw0wMouE28KuvLZJxf29vz--BtmUHcsMzoQ6DIHiD922Ckxmiq4kbFvVplmfl85Q4PiCGLKQXOQbaiwIJJtClsKcp1u1kmMt27BQf4xaoCsMpUyRsrfxwv10QDsSKN80weNVs5chSj3PcNV2a901nY_qigLqzb15gQcC2TsNae5POoXOdqEmzY9DUzrC3GOAcMgjohHsup4_f-o4FCGsJSy39lo25R-wlST9hemYxsfT9W4gYy8wVt_Alr7qWJf-GxNFTjPrFfChRsu9YIi2_AE3Erlci_O5LSQ0ahYq1WUk7VobGzPe4ghF7Wp6DLSJRYnuJ0U2lqkaeBIg2-P2ZKLc3JPDPbSVsFtXNSeylLBLDLjN_MNR-y3PbJVkGhVjWU-XeeKuSSUAsENyormpyh4ARhjVP3VvpDh3l_5_ "System Landscape diagram for Big Bank plc")
### Dynamic Diagram ### Dynamic Diagram
Source: [C4_Dynamic Diagram Sample - bigbankplc.puml](C4_Dynamic%20Diagram%20Sample%20-%20bigbankplc.puml) Source: [C4_Dynamic Diagram Sample - bigbankplc.puml](C4_Dynamic%20Diagram%20Sample%20-%20bigbankplc.puml)
![C4_Dynamic Diagram Sample - bigbankplc](http://www.plantuml.com/plantuml/png/NP9BRnCn4CVl-HH3Jmbg4m4z8I6QHqMB-eYQ5CGfclLETgrwxTLut10XlZlZJQjqkOqzZ__F__5556H9ZHkyizwuL1BK8ctyF9amxiQLbJeLAHARu8MyZ4re9a-MJHsbdipFpvOElJpUtapej-PBAlLoizXxRAmPjtdmu6Rww_vnlVbvlRxQt5n-kxnR34U3mLm7elN4Ys9epa_XP8621KOwqVY178eD7XsyNiFArDHWpguaC4N8MC1KsIZSLOFrsy1D5vz2ZR6c4Z19hU3M74eCKvcFwE8fe34K8xXGwO74Z4z6HwwX-P2rhAySdIsn8fYshNkPap6-upEk3DjM07q9KrybXvmpImxFjbH4T0x25fG0hhqGUn8eq3_fKDWcRmvljB872M1IbD0GHtYsc7iimuuAA3Zi8d4FRZCBoPV8-s6XUjFbTGzk17y60FFGjC6Jbw7vb5z29h5A7UyxBrlEC3D2toFlqtNxe39JHblvt67LObEZh_AXnHXtWSkZZJtvZrb8-zG4o4_Wu1pn6_dR7tFLYF9VTkfSs1qM7L-rLLZ3lgMp5qjN-oZKPFc_0qNUF7GxFCYdeh4It-vVntHhNDtVJQxMw-LA-xIhm-qScwFJAXkdnoz4vN04sU7N-LhN_Tv8Zep0UzXoQ5w8TpKnTR77Xk0BVEtq5hEvzb-GBrFZ_W40 "C4_Dynamic Diagram Sample - bigbankplc") ![C4_Dynamic Diagram Sample - bigbankplc](https://www.plantuml.com/plantuml/png/NP9BRnCn4CVl-HH3Jmbg4m4z8I6QHqMB-eYQ5CGfclLETgrwxTLut10XlZlZJQjqkOqzZ__F__5556H9ZHkyizwuL1BK8ctyF9amxiQLbJeLAHARu8MyZ4re9a-MJHsbdipFpvOElJpUtapej-PBAlLoizXxRAmPjtdmu6Rww_vnlVbvlRxQt5n-kxnR34U3mLm7elN4Ys9epa_XP8621KOwqVY178eD7XsyNiFArDHWpguaC4N8MC1KsIZSLOFrsy1D5vz2ZR6c4Z19hU3M74eCKvcFwE8fe34K8xXGwO74Z4z6HwwX-P2rhAySdIsn8fYshNkPap6-upEk3DjM07q9KrybXvmpImxFjbH4T0x25fG0hhqGUn8eq3_fKDWcRmvljB872M1IbD0GHtYsc7iimuuAA3Zi8d4FRZCBoPV8-s6XUjFbTGzk17y60FFGjC6Jbw7vb5z29h5A7UyxBrlEC3D2toFlqtNxe39JHblvt67LObEZh_AXnHXtWSkZZJtvZrb8-zG4o4_Wu1pn6_dR7tFLYF9VTkfSs1qM7L-rLLZ3lgMp5qjN-oZKPFc_0qNUF7GxFCYdeh4It-vVntHhNDtVJQxMw-LA-xIhm-qScwFJAXkdnoz4vN04sU7N-LhN_Tv8Zep0UzXoQ5w8TpKnTR77Xk0BVEtq5hEvzb-GBrFZ_W40 "C4_Dynamic Diagram Sample - bigbankplc")
### Deployment Diagram ### Deployment Diagram
Source: [C4_Deployment Diagram Sample - bigbankplc.puml](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc.puml) Source: [C4_Deployment Diagram Sample - bigbankplc.puml](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc.puml)
![Deployment Diagram for Internet Banking System - Live](http://www.plantuml.com/plantuml/png/pLPXJoCt4FsUNp5DAnqW812XwbJff0i9FK24H6meFQbID6jFDYvUUsLx0sbr_xtZtN1X8UYWz-KIALhFpdipyyPZvwCFw4APwzPFoWXTIe9v28N_hTDnUBUVgJ0lqzAJ4zO4Cc5VsBnpgvoO-p3lz8_snXfDk1vUTEYUtqkIR9mEgD1scKV_8dA_Wz8mC1eWp0bcLcjxfqm6MXa2D18QhvNp_6I10uEs0hLUCiVN33T4QFMad62Mb4LXNTXgpnYJehXjxy8lQTQtsheFxP_5GVosjrlC9fS6SoL0KqOSN_aOJS8MYg0M68XD1ZJwKEMupOYBtkVHzMHwSpOvdLwSV3gv76mnKr114wppWO72p67EHJeuOz6SeG37Q6vZlSdI1yfX3oxKWbgjDMnwQILj5LhiGljOPHK0UDb-iWQ90K5G96vl_zi2_ZnbaOP1gSfInknXeNPsTluAz-yZrNLQcb32uQ_x1qTmCKaUA3RHO85YJWpgLGymiRd0q7vgWFVxzpND-jEt9Y3BvfX4HS3u37f5eHNxAsiYnpakiEfyKhYepF2FVZIFdLqeIVwvTBFIY0X6hS8I5ehHS9wCBZkdayau0GwnpvrzoE1Bg_xTLDXA6faU73uIAYxVAf5rA7IKQ5GzS5_7JkNebksrxR0hNfHda6x9b5q76315Jn5sHHhhEk7130dBdMDycmJhgDgh3XnboWTNUOCoC-lowdaNvkZd907BCETSLwg3S2JZ4hNV1HI2l0TjCrvG46yNhziKhxjHF9w_W9d_i9x8RVYMdjt7WYOah97F9NsPUBFAtHz5vkU9lrBuzB7WTvJMOttq_yQw-vrppV4PS4FfA-TwG5ejoFdgWFU1tGMixfJe7StFHzxpZoOeC2F0TPXDM_NByyCqjp75Vkc3pSczyy06nNII5afGNM-XEUme0UkWPwIpIiQIcwNMC7OVrdX6HV2Vc2DNs3Yq4BJALRmyV9bw2c1diR9l7MR1WbYbwUF95Z7ADVFbeZSLAMnUDAkCbZBU3Z5ZvOJrTXRWHXbfxtnCgAuwHp5ANhf1KiU-v5OTFgvNaV2JjR4Z_RcpEKiojFyehH5-LuvczdvtnPtW39sAeWwLS7K29pAZXt1DVNs1SUBgNeyneqrRAX5E5VLMwPcirEYQmclzVLhpVePLrQpqUbDTaVww0UgxR8Yt733UQ8AZUYQCcVpjhQbl8aP745VrDiJqkXug1ZRcnLPLYNM37wMwYbM5aMbrgg7qC7CshwIwSohGGy3pmN6_2UY-6Z6zuYDq3QdRGxx-Dn8iExMIqz7DTF3viZSyww__7tqa8yjS_mS0 "Deployment Diagram for Internet Banking System - Live") ![Deployment Diagram for Internet Banking System - Live](https://www.plantuml.com/plantuml/png/pLP_Rzis4FtVd-AgRQXJE7RhPKCn840TssiIsB4HESq6331Ev5dcGea2IJd9Xdxt7ILdZcCNJTP_fW26UBftFnxVaVdWF5fVPhhn6eJ9LsGzA0-toYy1fLHUcHmrVyeop2LebHEWJSkCSW-7WylXg3Sx-pISdrtqHrU3uN7KZi0RA1s1DWArlc-yKWluOOLMOQ9fJdVAUTUCdYAZWmR0AvKBNKg2TgVTxlIFvWCgjBaFoTf5AF8LQKUF7PVU5-wNJiVYRJlbeik4Krlkn0SCbzsvKLOidLzokCEfnjnVZKSTkkFlakJ-7BbKYqQZ9-LGKx3FC6r62sucGN4JjU3x9EqRRUnnz9ru6_wuUFQ-9BtZwJdJ4r-s1XeVh4S_lXyCVk88OGTGYrAZ9sQQKgu3b0jSIcYYy6fLVL4vQ7I-sei31erwlq-kPlFhizdfV3JyEBmOD3cOLruJR7g3WSBKOWOBO-6CwR4vUJZ1_4RbASJtpbC6Xp1IAseqDh3vXP7KBBHeGNIYqWe0l8oUh46YHn0K0aS7VpU0dwTHPCwWHAK9OmwnK6_UlFd3txqFeQwIClSblFkv_VO8HhFu8SI-C5YWM1A3UjKBp4mcq4TF3V2-VLU7sJnzrWKoRPQ3g02Oda6lABGI68GUOfpZ2Y58FIviO6RygH_CKsjMIfBRfMvHvgAU4kNlOQKO3UVnvA9pEfjDO-0KxQ3jzVEvKVtkvMTDZKpUldj4L5Y-b29ZKUX0qQHwuNsTMfMXlOysjdTTyKLw1abJ9kmwG8y9EWemLZVMVSA36MAcEyFmDVR6KgLL2vPIvRojl47bBBYiUc_14jsI963fbrphcdKGbcHOedOjG278ET0cvGLvyNBokjlaTVUI5qOJKtUy6TO3-1gVtSU4nYHCBdSftH_uoont_oSqxnR-NEAJnuJVKbAFzT5_6-lkDyurvsV0DINFdEi1QRKYwu2f0kVPNS3wzWZUmRmxyev_D461AG5kqkoJwkVTmpGpeSH-wRp9oBvsm0R5uIIjbAWq44hdj9COZ8LUBgrHChIytMeDO_TnZMTK0F-66NA7MuSMWbQP2fU7AnD77imYTFQrmymR4EioNJZP0aRPxNgvwNrD2fCLsrq6InbkXr2nii8ui_1mhN9fRbqegEuwGp49EjclDSk-PDSxV5AlGi2FneGTwIyjPsl1sFobj4RuLLbQcBlMEdQC2wOca3fMmjO536LA8Tskb5o1OUBglPvYIlia5GkhYbeglJmjDTfjuhN-DgvPpx3kcfdUYEgIzBy2gE-oCTvmmd2Z2SxgE62ev4zdylecOdG0SLSlGyolwg5YuDQycAehiTdWHwMkSrLfP5ATQYWTB7XtAgfkhVBqaF1ySDBV1dIVWzXtNeLoB_bGtGIfDuoH4Zqod9qQyUdaUlEVqWVAPPdfVm00 "Deployment Diagram for Internet Banking System - Live")
**with details** **with details**
Source: [C4_Deployment Diagram Sample - bigbankplc-details.puml](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc-details.puml) Source: [C4_Deployment Diagram Sample - bigbankplc-details.puml](C4_Deployment%20Diagram%20Sample%20-%20bigbankplc-details.puml)
![Deployment Diagram for Internet Banking System - Live with details](http://www.plantuml.com/plantuml/png/vLT_Rzj63FtVduBp1ZGfd1ynqg4OKA2EdJKfuYI8dAO51WJK7ItVSheJxavElA7VVJn9hktOQLfi60RC0Ho98ldu-2XAVki3kb3cklM3CaANac0IGk5_sTjpUB-RgJ0fqzAJ4zO4Cc5Ns7plJZanyM6orp_SkTHemlNmR8yU-BeaoSRR0HNQplBeNyJSBw0q71WD42O4OwkrlLSc0wqC0He9AvULytnaWO51Mu5QppZ7bmet8BHwKeumIygYi2vijSSSawAuQtVWfpJhMstTc_QFOZ_-jRTRDypBbk7IsO9Sc9qGId9Rsor6aJE3kHAWAMC-e7oiGi8MYg2c68XD1ZJwKDM-pH5dlKyNrwFRczFHoUtPyRlZyq7C55JG18iwOQ0mSvWpUGUd9f0p5E08pLtiGpBpWNBOWJCrfLPh4NPxRYLj5Lfqe1sljVd_aSggG63putEG6104HO3szfyju0_tPivqgtrc1GPb3GVoiP7MLFs_8fHS2FScHZp2lptRaeRzKvMbZBE3XNhvykLluU5rp7ATbYQKSF3pxluXd8sIQEl1FQNWoKt9WIElOd9G9kgxV6cCBky02a4-Tdcg47vz1KUdxtPEBpdNqE_EIQmHUOzJX0_aV4FcDTU-qV5Z_X2llphe3fzsyT7bOBzxkF3Pr0OiK4me4gmEO6HpWQ7zs02lTnygem66CE1jwGH1LVBnyL83LkZ5Jz-QWCgGOoWLCroUGgyej5geLcM9cYM5YrqTVkX7CxEPAab-VRZ6fH4n6BKAiwh72E-JY_Ezaz7eCW66s5qY_RdLV3y_EKzEIpCeCjq_M1gRUFhKm8ouTqmdHpUhHZX5JsizseXb7GeT9Rce3c07BkiyxONje2iUWNH0goaje9wJOv1koPHJ39g0cEwADDPzXRaP4Xw27EFL95X7rVQ8Tq2cV72LDoWpjYwlZZimGJyX2LY62NDgL0RXICPJr7v-Tu2s6PzG4DyjrjVlxQibjRghQdM_ffOdOOtSg1SltO2PVxDOmzlmj8HNZOJTPGsJUVPr5NiBw0xuW4QcQpLqwgqTT-qObRPiWg9qXVNamHezUwx8TV6x_nNrrmjVcuT_QEtpQAJB8y5xgzxxX_-llN_LxFtklxBusOapt53wZOj_G76LEL_rs0Ts5z2yhaNlQ5v_9dZ-qWG5PWIuWDcqMpwllu_aDfROBtsmERaN7jYWE9sagH9KTwNG37kHW7NGCz9P9IFbLQfr6BiFwtYEYi4VCKTckF9KGz0gLu4a-3BrpCIE8xFdddR1WcZAz77COenog_KowKqaXSsBLPRHKZ9SErQidB3UZWFSA2FjlOy5rQnp51V9dEpZhAbZNtADmaVrMKpupjgeI7_Y6Aq3G_k7qffl2-LeR1ywJUu4n-XKREfG2LSNS2mpYd3he-GBZBkerlgIjTuqKebmggX7fMUoKgDRRRpMVw_NSUWRrjpfnL3n0lqo0FNBpX3l632-yWX6zPmmLlAxjwP-LU7e6CIilY_Yzhg-gJXmvNwn5Ikn47Yfr0QhWf5fynJrC6PrgbRTEnLe3lX-SDHV3UX-SmHl5vakGcfvoDSlyi6oKoivkRYv7NmwxmrF-ukV66_9o3BNVm40 "Deployment Diagram for Internet Banking System - Live with details") ![Deployment Diagram for Internet Banking System - Live with details](https://www.plantuml.com/plantuml/png/vLTXRnf74FtEhvZGLi4HnZPrAgjIf62WiIEmBS1nAbL2Uxi3RBstUzhTmtQh_FVEt441dvqcQbLLgYrXRdPcthnvStFdjo4A7_FKr5w2T7Q9FeAESAVZ0eHIEcfdXQ6ZD1LMWT4MGVXvdgADiDyRzGUToVc7_lJyeZkuxlNVr5jrY0xoW62S5COyr5xe6Not55wBnE0KxtM8eL5_75dVgm6yq5QQN26q3bgjW-xnj8UPSGyCriguo1Te0cuxBcBCmey71rxSjUPKT9uGj2ScaMEex8DRxUKYn0MbsxyomiRhuU00x-bSeNeQmoezgzKwIlKDidqYvetwZCWaGjxMc_1jCkywu_oR-ZVoa7-fUF8UeQbuHaBQzMKhjt5jFVx-fDTxJHbgDrI_o-ELTndw-726Gg5lq0598upCZOYemE2S2WGTkCaA6a96lInEj0KZGYn4sgEWGUVdo-l9zEPySZOTzD_rBtgSBEfe43QaeQV5t8iKPix3kOteBKOu5VPMspcC7qB45FPXe9TOgst2fXTEOICpiWbrFglJtrCzBmA1p8-lGOaeG283rFT-9mq1g6Thietwm4d1qyQ10sULiy0JDqAXg91YF00UuKy73MN9Fz7pX73sHQPVlNhrIxm_uIpNIMvZ3aS_j0wFOJ0Piwq3TvX0G4-J3Xw3vkJSkRZ0xQEPy6aJX9GOkCjBBU2drt1w_cx__8fo3KDhJQ92vBrO2lY0Fgp8d9IrLnq_flTy_lgeFNpU9R3BqM7xUDkdsWQH2Rb09bXyWObBfOZrnmOuQTqNHWi4OI6ut4k4ekH-Vwi1E_Juf-ji5DgY9oZD6QxEePDbHczKAxAmPkFCSrU77xfi9ZPBhJ1KXskMMrak61qVYXuBU3--l3Wucqokna0GhItIdsh5vvTCphFJiXeKbHmUROqDNputC1Fg7T59XNyeHZWH0P_gKHNBUI4DIt9PV85zk2hpr3UsexPy1D84evTOWNfMZbxIK0cbwAq2EDq8ZLWjxhKPnZG4gU3JSNGUUNiKTy1SX-WBRz1svdnQV6_2GeG5AX1vN12dbSeWFIg-52QixmumRauN6ELNY_NvUtkqfLPxLwtsvzGAA9rLJ-h52rdCmvlDYjw3voKShIHiRsiuNcUlgjZPG3SXH65LKgcXMMvjthKpeOqZ4sIvprp00CwQXxygiYf--x-YVhNmwZpyCskVHYFP7WdQM-NUF_v_xVtHQk-t_vN5JqwKuGQJBrpyFUHLvaFHun39NSBgpOozsLnz9WJwC0YPc2E83SnJk-LJzNqaTLnYDm_HfUXV1Y23fdGAbreY5yMb4-pb69o7ZbNUQSMKTwcMOUG-BECfYeC_YbGGmvsdcW2ZKnrHGSYJW17ShCgi-hIB3kIgpC1ZnZ7QxzPBf9yYALsQxR9aIqvmTQvOU-c2cqMuqLQvky05bQnJ8I_7QxAFioQUVD6l53ujhpZXE-TOaUx24reJXkutRGpT5jhZpDqtLxd7OYQyvgOEjVHb0NqrHuQhZbB81E-YKkihqlgfaHfBhxDoL3fsdXlXTnjlpD_hDG_zYZLrUZDK8pH_3a3viZCKjmJ8hpoIK0Cbv4f-3SwMhoeKJK7CwkiYfjVbJKM1E_UBArZ9ZS1RfQwm2XYLh9wY0MQaJj6gEwyZhW7Vzqwxkm7jBuceRlAot5539PiafM0OobVxwCYfDZwxlDdyi_4MhSfJymS0 "Deployment Diagram for Internet Banking System - Live with details")
## Icons ## Icons
Source: [C4_Container Diagram Sample - bigbankplc-icons.puml](C4_Container%20Diagram%20Sample%20-%20bigbankplc-icons.puml) Source: [C4_Container Diagram Sample - bigbankplc-icons.puml](C4_Container%20Diagram%20Sample%20-%20bigbankplc-icons.puml)
![Container diagram for Internet Banking System](http://www.plantuml.com/plantuml/png/hLHDS-D44BtxLpJXWBVAZee2BfpMiGt94d-mSZRBITMIslQGqOoO7jb9KVntUXH5YfnDPQdYfkcFrqzlNizxzkXyLUZ1Dyfakie9zjwN_7CKEJoUxvJVLsd5v39hF1b_djaYkbCksxFVHzCVnskDnjyihYEwbtnEkGIJgHIZCkJEonewfwsSO3R_T3LTBUEl6E6h4dFtGrG6UC4OAycEjr8nvj8fJnmLo9vSbDCXvBYTyijgkPdSpkFLOlw_3gfZU2Is1Or_6dm7bH60Ge30xmcsLcjxL6O7Eh10aqClhHpBbmKX0DfcgFM3OBIglrIjINMoHMXsbSPNqxdrXlnhsJ_nWA_b2lvB9qpkS3Ax9sRqPW6P0sbRqcE9_Dtrv8_LpIRPhDR9R7Mx7BxhOfCuYN-RRwQN4cn2jrURo-Hw_kjyEPFWm2kl2LfH85UuSrY8q0wkZ2TdoCC5chkWUVp0deh1O4sEhHbc5NjRa1l1jFqwcy1J6EoslfHKkaTm56D0MJUYhcE0MMOhu_bCU3n29nSIoD4z3BFl1UkKmDax-7i001tVuP7I1CjIYcyfXKbPQfMXLzQSIUW37d04SUa2-SMdQOZDI2iHc6jgxAKsWyQgjPr2k9sRFltuUX9wm-qAsJu3Bb5IiPHf6gznHu75q_GuSwhq8vWycYg4ryuUL4uCgFMNfst5yru5dPH_26xEgbfGXeF2qA8So7z3wkoHgGPjJFk2N65JfQbHQ14EBRtfjoFuZ0MAE7rQe5MXFEN0LShamMw_cYQ_uFb80EhtWyASn_qv9JfBXpbwJ94ft57p6UhZtw-XT_RM4OS5T-1efzWx51AWZ5Ysm41e17ifpW4hiLpcA2VZ5MeU1SSHCsYxamFvx3mWTdlvKhyKipiokGYeWhVNLr-ssCnAcUlwUeA-8LpGIe13IqlYdtOXvlT-I0KgOLW7f6e-NiYvMSRGjjaJg7e8QbYep5csMm_p-smllY3WjlBfxP0Hp_0RNjq4mJTRXmMTR7wdVp3lap4o2RJ_zkmQ05DR-SuLetRXH-0T6iPQXUOcmYFmaVIpHwLRxHic3hClDvjrB8NzEYxnpPhU7eJIPboo9BNRfxPzI1guzfbeaEfWpmpjGEG7autWGxnQHi-7ToF_OsTo8TKjiNOlJb4-4kOCMsUB-jqwEkM9mTk0t03FBgO2sM8-q-F4Kh70Cj0uH6kCZiY9-_eS-dqLYmEwyV5YinQWdigzzbFVjSA4_gXHv_FYkXNdlRHMXVuN "Container diagram for Internet Banking System") ![Container diagram for Internet Banking System](https://www.plantuml.com/plantuml/png/hLHDS-D44BtxLpJXWBVAZee2BfpMiGt94d-mSZRBITMIslQGqOoO7jb9KVntUXH5YfnDPQdYfkcFrqzlNizxzkXyLUZ1Dyfakie9zjwN_7CKEJoUxvJVLsd5v39hF1b_djaYkbCksxFVHzCVnskDnjyihYEwbtnEkGIJgHIZCkJEonewfwsSO3R_T3LTBUEl6E6h4dFtGrG6UC4OAycEjr8nvj8fJnmLo9vSbDCXvBYTyijgkPdSpkFLOlw_3gfZU2Is1Or_6dm7bH60Ge30xmcsLcjxL6O7Eh10aqClhHpBbmKX0DfcgFM3OBIglrIjINMoHMXsbSPNqxdrXlnhsJ_nWA_b2lvB9qpkS3Ax9sRqPW6P0sbRqcE9_Dtrv8_LpIRPhDR9R7Mx7BxhOfCuYN-RRwQN4cn2jrURo-Hw_kjyEPFWm2kl2LfH85UuSrY8q0wkZ2TdoCC5chkWUVp0deh1O4sEhHbc5NjRa1l1jFqwcy1J6EoslfHKkaTm56D0MJUYhcE0MMOhu_bCU3n29nSIoD4z3BFl1UkKmDax-7i001tVuP7I1CjIYcyfXKbPQfMXLzQSIUW37d04SUa2-SMdQOZDI2iHc6jgxAKsWyQgjPr2k9sRFltuUX9wm-qAsJu3Bb5IiPHf6gznHu75q_GuSwhq8vWycYg4ryuUL4uCgFMNfst5yru5dPH_26xEgbfGXeF2qA8So7z3wkoHgGPjJFk2N65JfQbHQ14EBRtfjoFuZ0MAE7rQe5MXFEN0LShamMw_cYQ_uFb80EhtWyASn_qv9JfBXpbwJ94ft57p6UhZtw-XT_RM4OS5T-1efzWx51AWZ5Ysm41e17ifpW4hiLpcA2VZ5MeU1SSHCsYxamFvx3mWTdlvKhyKipiokGYeWhVNLr-ssCnAcUlwUeA-8LpGIe13IqlYdtOXvlT-I0KgOLW7f6e-NiYvMSRGjjaJg7e8QbYep5csMm_p-smllY3WjlBfxP0Hp_0RNjq4mJTRXmMTR7wdVp3lap4o2RJ_zkmQ05DR-SuLetRXH-0T6iPQXUOcmYFmaVIpHwLRxHic3hClDvjrB8NzEYxnpPhU7eJIPboo9BNRfxPzI1guzfbeaEfWpmpjGEG7autWGxnQHi-7ToF_OsTo8TKjiNOlJb4-4kOCMsUB-jqwEkM9mTk0t03FBgO2sM8-q-F4Kh70Cj0uH6kCZiY9-_eS-dqLYmEwyV5YinQWdigzzbFVjSA4_gXHv_FYkXNdlRHMXVuN "Container diagram for Internet Banking System")

@ -3,10 +3,12 @@
' uncomment the following line and comment the first to use locally ' uncomment the following line and comment the first to use locally
' !include C4_Deployment.puml ' !include C4_Deployment.puml
AddTagSupport("fallback", $bgColor="#c0c0c0") AddElementTag("fallback", $bgColor="#c0c0c0")
AddRelTag("fallback", $textColor="#c0c0c0", $lineColor="#438DD5")
WithoutPropertyHeader() WithoutPropertyHeader()
' dynamic legend is used (activated in last line) ' calculated legend is used (activated in last line)
' LAYOUT_WITH_LEGEND() ' LAYOUT_WITH_LEGEND()
title Deployment Diagram for Internet Banking System - Live title Deployment Diagram for Internet Banking System - Live
@ -58,8 +60,8 @@ Rel(mobile, api, "Makes API calls to", "json/HTTPS")
Rel(spa, api, "Makes API calls to", "json/HTTPS") Rel(spa, api, "Makes API calls to", "json/HTTPS")
Rel_U(web, spa, "Delivers to the customer's web browser") Rel_U(web, spa, "Delivers to the customer's web browser")
Rel(api, db, "Reads from and writes to", "JDBC") Rel(api, db, "Reads from and writes to", "JDBC")
Rel(api, db2, "Reads from and writes to", "JDBC", $descr="only in case of a problem", $sprite="person", $tags="fallback") Rel(api, db2, "Reads from and writes to", "JDBC", $tags="fallback")
Rel_R(db, db2, "Replicates data to", "message" , $descr="only in case of a problem only in case of a problem", $sprite="&envelope-closed", $tags="fallback") Rel_R(db, db2, "Replicates data to")
SHOW_LEGEND() SHOW_LEGEND()
@enduml @enduml

@ -3,9 +3,10 @@
' uncomment the following line and comment the first to use locally ' uncomment the following line and comment the first to use locally
' !include C4_Deployment.puml ' !include C4_Deployment.puml
AddTagSupport("fallback", $bgColor="#c0c0c0") AddElementTag("fallback", $bgColor="#c0c0c0")
AddRelTag("fallback", $textColor="#c0c0c0", $lineColor="#438DD5")
' dynamic legend is used (activated in last line) ' calculated legend is used (activated in last line)
' LAYOUT_WITH_LEGEND() ' LAYOUT_WITH_LEGEND()
title Deployment Diagram for Internet Banking System - Live title Deployment Diagram for Internet Banking System - Live
@ -47,7 +48,7 @@ Rel(mobile, api, "Makes API calls to", "json/HTTPS")
Rel(spa, api, "Makes API calls to", "json/HTTPS") Rel(spa, api, "Makes API calls to", "json/HTTPS")
Rel_U(web, spa, "Delivers to the customer's web browser") Rel_U(web, spa, "Delivers to the customer's web browser")
Rel(api, db, "Reads from and writes to", "JDBC") Rel(api, db, "Reads from and writes to", "JDBC")
Rel(api, db2, "Reads from and writes to", "JDBC") Rel(api, db2, "Reads from and writes to", "JDBC", $tags="fallback")
Rel_R(db, db2, "Replicates data to") Rel_R(db, db2, "Replicates data to")
SHOW_LEGEND() SHOW_LEGEND()

Loading…
Cancel
Save