{"id":2114,"date":"2026-05-26T07:21:24","date_gmt":"2026-05-26T07:21:24","guid":{"rendered":"https:\/\/www.vpascode.com\/vn\/docs\/uncategorized\/plantuml-component-diagram-syntax-guide\/"},"modified":"2026-05-26T07:21:24","modified_gmt":"2026-05-26T07:21:24","slug":"plantuml-component-diagram-syntax-guide","status":"publish","type":"ld_docs","link":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n PlantUML"},"content":{"rendered":"<h2>S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n l\u00e0 g\u00ec?<\/h2>\n<p>M\u1ed9t <strong>S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n<\/strong> l\u00e0 m\u1ed9t s\u01a1 \u0111\u1ed3 c\u1ea5u tr\u00fac <strong>s\u01a1 \u0111\u1ed3 UML<\/strong> m\u00f4 t\u1ea3 t\u1ed5 ch\u1ee9c m\u00f4-\u0111un c\u1ea5p cao c\u1ee7a m\u1ed9t h\u1ec7 th\u1ed1ng ph\u1ea7n m\u1ec1m. L\u00e0 m\u1ed9t th\u00e0nh ph\u1ea7n quan tr\u1ecdng trong \u0111\u1eb7c t\u1ea3 Ng\u00f4n ng\u1eef M\u00f4 h\u00ecnh h\u00f3a \u0110\u01a1n nh\u1ea5t (UML), lo\u1ea1i s\u01a1 \u0111\u1ed3 UML n\u00e0y<strong>lo\u1ea1i s\u01a1 \u0111\u1ed3 UML<\/strong>tr\u1ef1c quan h\u00f3a c\u00e1ch c\u00e1c m\u00f4-\u0111un m\u00e3 ngu\u1ed3n v\u1eadt l\u00fd, th\u01b0 vi\u1ec7n, microservice, g\u00f3i th\u1ef1c thi v\u00e0 c\u00e1c l\u1edbp c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c nh\u00f3m v\u00e0 k\u1ebft n\u1ed1i v\u1ec1 m\u1eb7t c\u1ea5u tr\u00fac. N\u00f3 chuy\u1ec3n tr\u1ecdng t\u00e2m t\u00e0i li\u1ec7u kh\u1ecfi c\u00e1c \u0111\u1ecbnh ngh\u0129a l\u1edbp chi ti\u1ebft, gi\u00fap c\u00e1c ki\u1ebfn tr\u00fac s\u01b0 ph\u1ea7n m\u1ec1m v\u00e0 k\u1ef9 s\u01b0 ch\u00ednh x\u00e1c minh h\u1ecda r\u00f5 r\u00e0ng c\u00e1c ranh gi\u1edbi t\u00edch h\u1ee3p h\u1ec7 th\u1ed1ng, c\u00e1c \u0111\u01b0\u1eddng d\u1eabn \u0111i\u1ec1u ph\u1ed1i API v\u00e0 c\u00e1c ph\u1ee5 thu\u1ed9c b\u00ean th\u1ee9 ba.<\/p>\n<p>D\u00f9 b\u1ea1n \u0111ang ph\u00e1c th\u1ea3o ki\u1ebfn tr\u00fac microservice hi\u1ec7n \u0111\u1ea1i d\u1ef1a tr\u00ean \u0111\u00e1m m\u00e2y hay minh h\u1ecda c\u00e1ch m\u1ed9t th\u01b0 vi\u1ec7n khung n\u1ed9i b\u1ed9 k\u1ebft n\u1ed1i v\u00e0o l\u00f5i \u1ee9ng d\u1ee5ng c\u0169, b\u1ea3n \u0111\u1ed3 th\u00e0nh ph\u1ea7n UML cung c\u1ea5p c\u00e1i nh\u00ecn r\u00f5 r\u00e0ng v\u00e0 c\u1ea5u tr\u00fac v\u1ec1 c\u00e1c ranh gi\u1edbi h\u1ec7 th\u1ed1ng. V\u1edbi <strong>VPasCode<\/strong>, b\u1ed1 c\u1ee5c th\u00e0nh ph\u1ea7n c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb t\u1ef1 \u0111\u1ed9ng d\u1ef1a tr\u00ean v\u0103n b\u1ea3n khai b\u00e1o, lo\u1ea1i b\u1ecf s\u1ef1 phi\u1ec1n to\u00e1i khi \u0111i\u1ec1u ch\u1ec9nh th\u1ee7 c\u00f4ng c\u00e1c h\u1ed9p b\u1ed1 c\u1ee5c hay d\u00e2y n\u1ed1i.<\/p>\n<h2>H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p c\u1ed1t l\u00f5i: C\u00e1c th\u00e0nh ph\u1ea7n v\u00e0 c\u1ea5u tr\u00fac<\/h2>\n<p>\u0110\u1ec3 thi\u1ebft k\u1ebf m\u1ed9t s\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n UML tinh t\u1ebf v\u00e0 tu\u00e2n th\u1ee7 chu\u1ea9n trong PlantUML, b\u1ea1n c\u1ea7n th\u00e0nh th\u1ea1o c\u00e1c khai b\u00e1o kh\u1ed1i m\u00e3 m\u00f4-\u0111un, c\u01a1 ch\u1ebf k\u1ebft n\u1ed1i giao di\u1ec7n, nh\u00f3m g\u00f3i h\u1ec7 th\u1ed1ng v\u00e0 c\u00e1c tham s\u1ed1 k\u1ebft n\u1ed1i theo h\u01b0\u1edbng.<\/p>\n<h3>1. Khai b\u00e1o c\u00e1c th\u00e0nh ph\u1ea7n ph\u1ea7n m\u1ec1m<\/h3>\n<p>B\u1ea1n khai b\u00e1o m\u1ed9t m\u00f4-\u0111un ph\u1ea7n m\u1ec1m b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng t\u1eeb kh\u00f3a <code>component<\/code> t\u1eeb kh\u00f3a. Thay v\u00e0o \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 bao m\u1ed9t \u0111\u1ecbnh danh v\u0103n b\u1ea3n s\u1ea1ch b\u00ean trong d\u1ea5u ngo\u1eb7c vu\u00f4ng (<code>[T\u00ean th\u00e0nh ph\u1ea7n]<\/code>), \u0111\u00f3ng vai tr\u00f2 nh\u01b0 m\u1ed9t k\u00fd hi\u1ec7u vi\u1ebft t\u1eaft to\u00e0n c\u1ee5c:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:IyxFBSZFIyqhKGX8hCm5qgvvwPbvgRnSqOwb9HaAmQb5PPd9gR4AYSKA804e7m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:IyxFBSZFIyqhKGX8hCm5qgvvwPbvgRnSqOwb9HaAmQb5PPd9gR4AYSKA804e7m00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">component PaymentEngine\r\n[Auth Service] as AuthService<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:IyxFBSZFIyqhKGX8hCm5qgvvwPbvgRnSqOwb9HaAmQb5PPd9gR4AYSKA804e7m00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:IyxFBSZFIyqhKGX8hCm5qgvvwPbvgRnSqOwb9HaAmQb5PPd9gR4AYSKA804e7m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"kuAYxGJ\"><img alt=\"\" class=\"alignnone size-full wp-image-584\" decoding=\"async\" height=\"48\" sizes=\"(max-width: 315px) 100vw, 315px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png 315w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724-300x46.png 300w\" width=\"315\"\/><\/p>\n<p><em>M\u1eb9o chuy\u00ean gia:<\/em>Lu\u00f4n k\u1ebft h\u1ee3p c\u00e1c chu\u1ed7i th\u00e0nh ph\u1ea7n d\u00e0i v\u1edbi m\u1ed9t <code>as<\/code>\u0111\u1ecbnh danh (v\u00ed d\u1ee5 nh\u01b0 <code>as AuthService<\/code>) \u0111\u1ec3 gi\u1eef c\u00e1c \u0111\u01b0\u1eddng quan h\u1ec7 s\u1ea1ch s\u1ebd v\u00e0 d\u1ec5 \u0111\u1ecdc.<\/p>\n<h3>2. X\u00e1c \u0111\u1ecbnh c\u1ed5ng v\u00e0 giao di\u1ec7n<\/h3>\n<p>C\u00e1c th\u00e0nh ph\u1ea7n t\u01b0\u01a1ng t\u00e1c v\u1edbi nhau th\u00f4ng qua c\u00e1c \u0111i\u1ec3m v\u00e0o c\u1ea5u tr\u00fac. B\u1ea1n c\u00f3 th\u1ec3 m\u00f4 h\u00ecnh h\u00f3a r\u00f5 r\u00e0ng c\u00e1c giao di\u1ec7n UML chu\u1ea9n (\u0111\u01b0\u1ee3c bi\u1ec3u di\u1ec5n tr\u1ef1c quan b\u1eb1ng bi\u1ec3u t\u01b0\u1ee3ng h\u00ecnh tr\u00f2n ki\u1ec3u &#8220;k\u1eb9o m\u00fat&#8221; s\u1ea1ch s\u1ebd) b\u1eb1ng t\u1eeb kh\u00f3a<code>giao di\u1ec7n<\/code>t\u1eeb kh\u00f3a:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:oymhIIrAIqnELL0ASWqEKN0Cy5GeCr9II2nM24zD0l9ukQ8TIqioWbEBoZAJKsCLT7KrDA5I2bOAIgaL1Vd5gSLA0000\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:IyzCp5T8oNoukprFGId8DJX4mJ70Kw7CI4aXiLWXF3K9oEFbYdOiBSa8JYqgoqnEZLNGrTNGX4efM2ae9PVcfIiaFzorj4090000\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">giao di\u1ec7n \"REST API v2\" as WebAPI\r\n[AuthService] --() WebAPI : \"cung c\u1ea5p\"<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:IyzCp5T8oNoukprFGId8DJX4mJ70Kw7CI4aXiLWXF3K9oEFbYdOiBSa8JYqgoqnEZLNGrTNGX4efM2ae9PVcfIiaFzorj4090000\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:oymhIIrAIqnELL0ASWqEKN0Cy5GeCr9II2nM24zD0l9ukQ8TIqioWbEBoZAJKsCLT7KrDA5I2bOAIgaL1Vd5gSLA0000\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"xsCdMaO\"><img alt=\"\" class=\"alignnone size-full wp-image-585\" decoding=\"async\" height=\"188\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19000321f0e.png\" width=\"132\"\/><\/p>\n<h3>3. B\u1ea3n \u0111\u1ed3 h\u00f3a c\u00e1c ph\u1ee5 thu\u1ed9c th\u00e0nh ph\u1ea7n<\/h3>\n<p>\u0110\u1ec3 th\u1ec3 hi\u1ec7n r\u1eb1ng m\u1ed9t m\u00f4-\u0111un h\u1ec7 th\u1ed1ng ph\u1ee5 thu\u1ed9c v\u00e0o ho\u1eb7c giao ti\u1ebfp v\u1edbi m\u1ed9t m\u00f4-\u0111un kh\u00e1c, h\u00e3y s\u1eed d\u1ee5ng c\u00e1c m\u0169i t\u00ean \u0111\u1ecbnh h\u01b0\u1edbng (<code>--&gt;<\/code>). B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c \u0111\u01b0\u1eddng ph\u1ee5 thu\u1ed9c \u0111i\u1ec3m chu\u1ea9n (<code>..&gt;<\/code>) \u0111\u1ec3 bi\u1ec3u di\u1ec5n c\u00e1c m\u1ed1i quan h\u1ec7 l\u1ecfng l\u1ebbo h\u01a1n, nh\u01b0 c\u00e1c m\u1eabu ti\u00eau th\u1ee5 h\u00e0ng \u0111\u1ee3i tin nh\u1eafn ho\u1eb7c c\u00e1c l\u1eddi g\u1ecdi th\u1eddi gian ch\u1ea1y t\u1ea1m th\u1eddi:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:YtOhoiyhISrBKN0iA8XLqDMrKmXFJN8CyEJbWj0AUdfs2j4kYIM9IOd5gGgkUUcPUQcn2bOAIi61FWg1fQb5cQd5IW00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:YtwuUqLUkaBAmzrBWPHRKNvUIMfUIgo2hgwTGdXgacE09oyNX5RGqxDJY7O-jb2X-E7k-I0TwnLoCX_kRY-DLR1IK0efAgrKA7kuQscUGd2WZn80\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">[\u1ee8ng d\u1ee5ng Frontend] --&gt; WebAPI\r\nWebAPI ..&gt; [C\u01a1 s\u1edf d\u1eef li\u1ec7u] : \"Truy v\u1ea5n SQL\"<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:YtwuUqLUkaBAmzrBWPHRKNvUIMfUIgo2hgwTGdXgacE09oyNX5RGqxDJY7O-jb2X-E7k-I0TwnLoCX_kRY-DLR1IK0efAgrKA7kuQscUGd2WZn80\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:YtOhoiyhISrBKN0iA8XLqDMrKmXFJN8CyEJbWj0AUdfs2j4kYIM9IOd5gGgkUUcPUQcn2bOAIi61FWg1fQb5cQd5IW00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"vJvNXkh\"><img alt=\"\" class=\"alignnone size-full wp-image-586\" decoding=\"async\" height=\"290\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19000fc072e.png\" width=\"162\"\/><\/p>\n<h3>4. T\u1ed5 ch\u1ee9c c\u00e1c ranh gi\u1edbi b\u1eb1ng g\u00f3i<\/h3>\n<p>\u0110\u1ec3 thi\u1ebft l\u1eadp c\u00e1c ranh gi\u1edbi h\u1ec7 th\u1ed1ng con r\u00f5 r\u00e0ng ho\u1eb7c ph\u00e2n lo\u1ea1i c\u00e1c th\u00e0nh ph\u1ea7n d\u1ef1a tr\u00ean m\u00f4i tr\u01b0\u1eddng tri\u1ec3n khai, h\u00e3y bao b\u1ecdc c\u00e1c kh\u1ed1i m\u00f4-\u0111un c\u1ee7a b\u1ea1n b\u00ean trong c\u00e1c bao b\u1ecdc c\u1ea5u tr\u00fac<code>g\u00f3i<\/code> ho\u1eb7c <code>m\u00e2y<\/code> bao b\u1ecdc:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:AqXCpavCJrLG2avDBYtABAbKSCxFAqcjA55IgERbKW22QCVIaWo5uDIYiipar5YeM4X-TcgUGbXYJcPAOab-4L2u5W00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Ip-yELD1oUdXxecP2iaFTotEor1m0bBv2haFTwqjKLAevkLI089ebuUxkvCp5CeUxbwg475uOR92ISR3tHkJOw7I8KM7rm2rLY1a54BoirFpWFAr0000\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">g\u00f3i \"B\u1ed1i c\u1ea3nh B\u1ea3o m\u1eadt\" {\r\n    [D\u1ecbch v\u1ee5 X\u00e1c th\u1ef1c]\r\n    [Tr\u00ecnh x\u00e1c th\u1ef1c Token]\r\n}<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Ip-yELD1oUdXxecP2iaFTotEor1m0bBv2haFTwqjKLAevkLI089ebuUxkvCp5CeUxbwg475uOR92ISR3tHkJOw7I8KM7rm2rLY1a54BoirFpWFAr0000\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:AqXCpavCJrLG2avDBYtABAbKSCxFAqcjA55IgERbKW22QCVIaWo5uDIYiipar5YeM4X-TcgUGbXYJcPAOab-4L2u5W00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"wDwUGVq\"><img loading=\"lazy\" alt=\"\" class=\"alignnone size-full wp-image-587\" decoding=\"async\" height=\"99\" loading=\"lazy\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19001aed261.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19001aed261.png 349w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19001aed261-300x85.png 300w\" width=\"349\"\/><\/p>\n<h2>C\u00e1c th\u1ef1c h\u00e0nh t\u1ed1t nh\u1ea5t cho c\u00e1c h\u1ec7 th\u1ed1ng con th\u00e0nh ph\u1ea7n s\u1ea1ch s\u1ebd<\/h2>\n<ul>\n<li><strong>Gi\u1eef t\u00ean n\u00fat \u1edf c\u1ea5p \u0111\u1ed9 cao:<\/strong> Tr\u00e1nh \u0111\u1eb7t t\u00ean c\u00e1c th\u00e0nh ph\u1ea7n theo c\u00e1c t\u1ec7p ho\u1eb7c th\u01b0 m\u1ee5c m\u00e3 n\u1ed9i b\u1ed9 c\u1ee5 th\u1ec3. S\u1eed d\u1ee5ng c\u00e1c t\u00ean ch\u1ee9c n\u0103ng, c\u1ea5p cao nh\u01b0 <code>[B\u1ed9 \u0111\u1ecbnh tuy\u1ebfn th\u00f4ng b\u00e1o]<\/code> ho\u1eb7c <code>[L\u1edbp b\u1ed9 nh\u1edb \u0111\u1ec7m]<\/code>.<\/li>\n<li><strong>T\u1eadn d\u1ee5ng k\u00fd hi\u1ec7u Lollipop:<\/strong> Thay v\u00ec v\u1ebd c\u00e1c \u0111\u01b0\u1eddng th\u1eb3ng gi\u1eefa c\u00e1c h\u1ed9p, h\u00e3y \u0111\u1ecbnh tuy\u1ebfn c\u00e1c k\u1ebft n\u1ed1i th\u00f4ng qua c\u00e1c n\u00fat <code>giao di\u1ec7n<\/code> n\u00fat. \u0110i\u1ec1u n\u00e0y r\u00f5 r\u00e0ng ph\u00e2n bi\u1ec7t *giao di\u1ec7n n\u00e0o* \u0111ang \u0111\u01b0\u1ee3c c\u00f4ng khai so v\u1edbi *ai* \u0111ang s\u1eed d\u1ee5ng n\u00f3.<\/li>\n<li><strong>Ki\u1ec3m so\u00e1t m\u1edf r\u1ed9ng b\u1ed1 c\u1ee5c:<\/strong> C\u00e1c b\u1ea3n \u0111\u1ed3 th\u00e0nh ph\u1ea7n m\u1edf r\u1ed9ng nhanh ch\u00f3ng khi theo d\u00f5i nhi\u1ec1u h\u1ec7 th\u1ed1ng con. S\u1eed d\u1ee5ng c\u00e1c c\u1edd kh\u00f4ng gian b\u00ean trong c\u00e1c m\u0169i t\u00ean ph\u1ee5 thu\u1ed9c c\u1ee7a b\u1ea1n (v\u00ed d\u1ee5 nh\u01b0 <code>-ph\u1ea3i-&gt;<\/code> ho\u1eb7c <code>-xu\u1ed1ng-&gt;<\/code>) \u0111\u1ec3 s\u1eafp x\u1ebfp c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a b\u1ea1n m\u1ed9t c\u00e1ch g\u1ecdn g\u00e0ng tr\u00ean l\u01b0\u1edbi b\u1ea3ng v\u1ebd.<\/li>\n<\/ul>\n<h2>C\u00e1c v\u00ed d\u1ee5 v\u1ec1 s\u01a1 \u0111\u1ed3 \u0111\u1ed1i t\u01b0\u1ee3ng PlantUML trong th\u1ebf gi\u1edbi th\u1ef1c<\/h2>\n<h3>V\u00ed d\u1ee5 1: M\u1ea1ng l\u01b0\u1edbi c\u1ed5ng API c\u1ed1t l\u00f5i (Giao di\u1ec7n &amp; Nh\u00f3m g\u00f3i)<\/h3>\n<p>B\u1ea3n m\u1eabu n\u00e0y minh h\u1ecda m\u1ed9t c\u1ea5u h\u00ecnh web h\u1ec7 th\u1ed1ng \u0111a t\u1ea7ng ti\u00eau chu\u1ea9n, nh\u1ea5n m\u1ea1nh c\u00e1ch m\u1ed9t \u1ee9ng d\u1ee5ng ng\u01b0\u1eddi d\u00f9ng c\u00f4ng khai k\u1ebft n\u1ed1i v\u1edbi c\u00e1c d\u1ecbch v\u1ee5 vi m\u00f4 n\u1ed9i b\u1ed9 th\u00f4ng qua c\u00e1c giao di\u1ec7n API REST c\u00f3 c\u1ea5u tr\u00fac.<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLBBJiCm4Bn7oZ-iUk7KNq1zg2eLL5XAKGu88ITPWaLYLxO3YX3_plfH9pnoMi-EPtRMMHdBjHtwBi_El7xZBSA23LKdQc0Q3KhBhL0IxlY8UW6VUGRqFPPOGS7MiEq4KPw06wXz6Vj7LOaEGTmNSqhlqJpxohEPtPeTOCyjVl0HYg4oex7O9oiXBUeNNXFnvdHYHQBkP7DMr5quPTTwtfVH_LR95cQothmDzM_thT886pgXRA10_IvgDF-vFnZKSEIIRlKKoEbxQuTJ_OU_4LqdmXoU5y-96cSzD2Gcx7ZnzhFomRx6FkEZjsDQqM36AUvaAsGWLa4qXhg2Kb2Qy_pXh9gIXoU2vV9wMbXuavzOB0YSxYRrY3ZXAgujfJPvTcaxmRIQEJZVGvv5YhCAeQUsmrA-5VdGN_eD\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLF1IiD04Bq7yWz3Bvxw2zAgOAM2bLOgYCWsZSdIT5FIhLh4WtZmuAKzU10HMiIRWe8Ux28zfFG_za-SRBP9MfhB3hDlvxrvCobqEGbuh-sPHeTOBUBOaDkNuha3F0ZVcGkDSDG7A_nc3hHSGdDmRHg0tqdP3SUM2suumgkwtO1gfNWAf0kMHst6rw6Q56P3APumf0TL1Mxx3UhPfd5Z6Xa59IdkWRjI315gIV68Hx6obv1JnktWd5W8dGse57TjQCd9b0F39tJnebIhLQgvY2MApdRhMjDsKX3AFdEK3eTm-vBqLuNiIF60yY-aU8jgtpBWSl8QYnfoyC8VkavKLFgm5o4HyWVCcNzAyKAX6VuoHoawwje1ejQ-hBa4ZUT-E6OAkqKzZp8dWUisijgEqMLbs9UbsY4zxchOR10xRit7S2N5XrB4Kmg5RyGKklqDA6VSp2u2ZcyoPTfWquX73VdyPcfnFD7bd0umcHgzIgE7jc286d8eyN5fS1dOalkceQiebiJAR3BhcMbeICGVEvDUHxca-uBDclWl_0C0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\npackage \"L\u1edbp tr\u00ecnh b\u00e0y c\u00f4ng khai\" {\r\n    [Kh\u00e1ch h\u00e0ng Web SPA] as client\r\n    [Kh\u00e1ch h\u00e0ng di \u0111\u1ed9ng iOS] as mobile\r\n}\r\n\r\npackage \"H\u1ec7 th\u1ed1ng c\u1ed5ng API\" {\r\n    interface \"\u0110i\u1ec3m k\u1ebft n\u1ed1i c\u1ed5ng HTTPS\" as HTTP_GW\r\n    [C\u1ed5ng API Kong] as gateway\r\n}\r\n\r\npackage \"D\u1ecbch v\u1ee5 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i\" {\r\n    interface \"API Qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng\" as UserAPI\r\n    interface \"API Thanh to\u00e1n\" as BillingAPI\r\n    \r\n    [D\u1ecbch v\u1ee5 X\u00e1c th\u1ef1c] as auth\r\n    [\u0110\u1ed9ng c\u01a1 x\u1eed l\u00fd thanh to\u00e1n] as billing\r\n}\r\n\r\n' K\u1ebft n\u1ed1i tr\u00ecnh b\u00e0y \u0111\u1ebfn c\u1ed5ng\r\nclient --&gt; HTTP_GW\r\nmobile --&gt; HTTP_GW\r\nHTTP_GW -- gateway\r\n\r\n' K\u1ebft n\u1ed1i c\u1ed5ng \u0111\u1ebfn c\u00e1c giao di\u1ec7n n\u1ec1n t\u1ea3ng\r\ngateway --&gt; UserAPI\r\ngateway --&gt; BillingAPI\r\n\r\nUserAPI -- auth\r\nBillingAPI -- billing\r\n@enduml<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLF1IiD04Bq7yWz3Bvxw2zAgOAM2bLOgYCWsZSdIT5FIhLh4WtZmuAKzU10HMiIRWe8Ux28zfFG_za-SRBP9MfhB3hDlvxrvCobqEGbuh-sPHeTOBUBOaDkNuha3F0ZVcGkDSDG7A_nc3hHSGdDmRHg0tqdP3SUM2suumgkwtO1gfNWAf0kMHst6rw6Q56P3APumf0TL1Mxx3UhPfd5Z6Xa59IdkWRjI315gIV68Hx6obv1JnktWd5W8dGse57TjQCd9b0F39tJnebIhLQgvY2MApdRhMjDsKX3AFdEK3eTm-vBqLuNiIF60yY-aU8jgtpBWSl8QYnfoyC8VkavKLFgm5o4HyWVCcNzAyKAX6VuoHoawwje1ejQ-hBa4ZUT-E6OAkqKzZp8dWUisijgEqMLbs9UbsY4zxchOR10xRit7S2N5XrB4Kmg5RyGKklqDA6VSp2u2ZcyoPTfWquX73VdyPcfnFD7bd0umcHgzIgE7jc286d8eyN5fS1dOalkceQiebiJAR3BhcMbeICGVEvDUHxca-uBDclWl_0C0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLBBJiCm4Bn7oZ-iUk7KNq1zg2eLL5XAKGu88ITPWaLYLxO3YX3_plfH9pnoMi-EPtRMMHdBjHtwBi_El7xZBSA23LKdQc0Q3KhBhL0IxlY8UW6VUGRqFPPOGS7MiEq4KPw06wXz6Vj7LOaEGTmNSqhlqJpxohEPtPeTOCyjVl0HYg4oex7O9oiXBUeNNXFnvdHYHQBkP7DMr5quPTTwtfVH_LR95cQothmDzM_thT886pgXRA10_IvgDF-vFnZKSEIIRlKKoEbxQuTJ_OU_4LqdmXoU5y-96cSzD2Gcx7ZnzhFomRx6FkEZjsDQqM36AUvaAsGWLa4qXhg2Kb2Qy_pXh9gIXoU2vV9wMbXuavzOB0YSxYRrY3ZXAgujfJPvTcaxmRIQEJZVGvv5YhCAeQUsmrA-5VdGN_eD\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"IPoKTLn\"><img loading=\"lazy\" alt=\"\" class=\"alignnone size-full wp-image-588\" decoding=\"async\" height=\"577\" loading=\"lazy\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19002718bf6.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19002718bf6.png 472w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19002718bf6-245x300.png 245w\" width=\"472\"\/><\/p>\n<p><strong>Ph\u00e2n t\u00edch c\u00fa ph\u00e1p:<\/strong> B\u1eb1ng c\u00e1ch nh\u00fang c\u00e1c m\u00f4-\u0111un b\u00ean trong c\u00e1c bi\u00ean gi\u1edbi <code>package<\/code> r\u00f5 r\u00e0ng, b\u1ed9 \u0111\u1ed9ng l\u1ef1c b\u1ed1 c\u1ee5c t\u1ef1 \u0111\u1ed9ng t\u1ea1o ra nh\u1eefng khu v\u1ef1c r\u00f5 r\u00e0ng v\u00e0 \u0111\u1eb9p m\u1eaft. C\u00e1c kh\u00e1ch h\u00e0ng tr\u00ecnh b\u00e0y k\u1ebft n\u1ed1i ri\u00eang bi\u1ec7t v\u1edbi c\u1ed5ng <code>HTTP_GW<\/code> c\u1ed5ng \u0111\u01b0\u1ee3c c\u00f4ng khai, sau \u0111\u00f3 qu\u1ea3n l\u00fd \u0111\u1ecbnh tuy\u1ebfn l\u01b0u l\u01b0\u1ee3ng n\u1ed9i b\u1ed9 \u0111\u1ebfn c\u00e1c l\u1edbp d\u1ecbch v\u1ee5 vi m\u00f4 n\u1ec1n t\u1ea3ng chuy\u00ean bi\u1ec7t ph\u00eda d\u01b0\u1edbi.<\/p>\n<h3>V\u00ed d\u1ee5 2: D\u00f2ng x\u1eed l\u00fd d\u1eef li\u1ec7u \u0111\u00e1m m\u00e2y (\u0110\u00e1m m\u00e2y b\u1ea5t \u0111\u1ed3ng b\u1ed9 &amp; H\u00e0ng \u0111\u1ee3i)<\/h3>\n<p>B\u1ea3n thi\u1ebft k\u1ebf doanh nghi\u1ec7p n\u00e2ng cao n\u00e0y m\u00f4 ph\u1ecfng m\u1ed9t ki\u1ebfn tr\u00fac d\u1eef li\u1ec7u \u0111\u00e1m m\u00e2y b\u1ea5t \u0111\u1ed3ng b\u1ed9 th\u1ef1c t\u1ebf, theo d\u00f5i c\u00e1c d\u00f2ng \u0111\u1ea7u v\u00e0o, c\u00e1c m\u00e1y ch\u1ee7 tin nh\u1eafn t\u00e1ch bi\u1ec7t v\u00e0 c\u00e1c \u0111i\u1ec3m cu\u1ed1i l\u01b0u tr\u1eef v\u1eadt l\u00fd.<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:HLAnRkCm3DqD-1y8BpUb7RfrADfBCnokQ0EuW8UY0sCpjc1PT2dfqhIuVp_AYd6Q2F7nyRqdtVk04k9aowAr73ke7feQjalvJE74Ci9FZgv3ELVmNHQWv-sNwya7mmuQEWpCupkWXrEkC-OZKYHbcx4T27xZSKIbZJwGL0by41v9Bdnr4C89zi8jUSy2kp_a0ZIwdIHpBsM6TnZmW3wnJ_Yb8keRUDGxUCAH5d8VMB2dilXR5cNn7xzbcRKJAECR51eu-ZmarFd174CQ-R5gCQw7sSnaZICuMZx1HEs0phI-BDvsdsh7eLLd9Wb-cETts6pkrYZW5ghzI_qAru4iJHGqnB9Ocnin_H0KdRDOmF5WZHz0y0IMUrybCPVsrTNT9OQ4tBBpSI88F9jsYKHTfnJJWenAGYv9f8b6Z1flUPf5ZL47UnHzfG17OoblMj5frHf76drEGkqPTgzFK9zTEmWxyuNf1-ZSFRbEVz0_\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:LL8nRzGm5DuZvJzyoi9qPM1Zg7fKYA6Lg7GdTQWwE1TVR2Mn3ySH5CI065X1J8YbHrK1bIgAO3eBCUHq_yF_XEVaGY5IuZpx-zxtlVUyLrjcR5ELSJGhTPCXUI3RAuLSUlTHelAhfSfHRcwwSFskNLQesazd61zF4ho88z1pSinJeNK1Anfw_UfwSGfMusc_tOEUDBpXIFRBfhRSOBnWCy5nmEO5Im8uDRhWPaYe3GLuvjqrolONQk--eo1FRnJAnhltAkyLEbnFofXbAQj9ut1pGpwCTz-GXKyPY0t65Nkk5IRtEhtQQiDo7aSluoYERia7Gl_7oZHJ0YeN8LnqLCEpMiYv3SGxsDyiCQEYVm_ERcqlv8ANKf78YNTVw8GINz9IY7Ov4qX3frMkstDvYj5eTsWOxYCvUZoPugxb9Q-uDMT970s78oDpOGdTToo0rs_NhocjzQiB2HK6O56GlXNjpoIut49tTdQtBGkiAKswcvUx_6lztygfAFUPPkxTgo3VyuBDRUj2ZaT2OYvBZYDcQC8MglsgEia153I7XlLUUwNKkmyGxG-6XzD3-ZcdFRfVLnMnzxZAw4x-0G00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\ncloud \"Bi\u00ean gi\u1edbi m\u1ea1ng l\u01b0\u1edbi \u0111\u00e1m m\u00e2y AWS\" {\r\n    [Webhook thu th\u1eadp] as webhook\r\n    queue \"Cluster Apache Kafka\" as broker\r\n    [Worker x\u1eed l\u00fd s\u1ef1 ki\u1ec7n lu\u1ed3ng] as worker\r\n    database \"L\u01b0u tr\u1eef d\u1eef li\u1ec7u Amazon S3\" as storage\r\n}\r\n\r\ndatabase \"Kho d\u1eef li\u1ec7u doanh nghi\u1ec7p\" as redshift\r\n\r\n' C\u01a1 ch\u1ebf lu\u1ed3ng x\u1eed l\u00fd pipeline\r\n[\u1ee8ng d\u1ee5ng kh\u00e1ch b\u00ean ngo\u00e0i] --&gt; webhook : \"POST \/telemetry\"\r\nwebhook -right-&gt; broker : \"\u0110\u0103ng t\u1ea3i nh\u1eadt k\u00fd th\u00f4\"\r\n\r\nbroker ..&gt; worker : \"Ti\u00eau th\u1ee5 lu\u1ed3ng d\u1eef li\u1ec7u ch\u1ee7 \u0111\u1ec1\"\r\nworker --&gt; storage : \"Ghi file Parquet n\u00e9n\"\r\n\r\nstorage ..&gt; redshift : \"\u0110\u1ed3ng b\u1ed9 h\u00f3a ETL h\u00e0ng \u0111\u00eam\"\r\n@enduml<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:LL8nRzGm5DuZvJzyoi9qPM1Zg7fKYA6Lg7GdTQWwE1TVR2Mn3ySH5CI065X1J8YbHrK1bIgAO3eBCUHq_yF_XEVaGY5IuZpx-zxtlVUyLrjcR5ELSJGhTPCXUI3RAuLSUlTHelAhfSfHRcwwSFskNLQesazd61zF4ho88z1pSinJeNK1Anfw_UfwSGfMusc_tOEUDBpXIFRBfhRSOBnWCy5nmEO5Im8uDRhWPaYe3GLuvjqrolONQk--eo1FRnJAnhltAkyLEbnFofXbAQj9ut1pGpwCTz-GXKyPY0t65Nkk5IRtEhtQQiDo7aSluoYERia7Gl_7oZHJ0YeN8LnqLCEpMiYv3SGxsDyiCQEYVm_ERcqlv8ANKf78YNTVw8GINz9IY7Ov4qX3frMkstDvYj5eTsWOxYCvUZoPugxb9Q-uDMT970s78oDpOGdTToo0rs_NhocjzQiB2HK6O56GlXNjpoIut49tTdQtBGkiAKswcvUx_6lztygfAFUPPkxTgo3VyuBDRUj2ZaT2OYvBZYDcQC8MglsgEia153I7XlLUUwNKkmyGxG-6XzD3-ZcdFRfVLnMnzxZAw4x-0G00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:HLAnRkCm3DqD-1y8BpUb7RfrADfBCnokQ0EuW8UY0sCpjc1PT2dfqhIuVp_AYd6Q2F7nyRqdtVk04k9aowAr73ke7feQjalvJE74Ci9FZgv3ELVmNHQWv-sNwya7mmuQEWpCupkWXrEkC-OZKYHbcx4T27xZSKIbZJwGL0by41v9Bdnr4C89zi8jUSy2kp_a0ZIwdIHpBsM6TnZmW3wnJ_Yb8keRUDGxUCAH5d8VMB2dilXR5cNn7xzbcRKJAECR51eu-ZmarFd174CQ-R5gCQw7sSnaZICuMZx1HEs0phI-BDvsdsh7eLLd9Wb-cETts6pkrYZW5ghzI_qAru4iJHGqnB9Ocnin_H0KdRDOmF5WZHz0y0IMUrybCPVsrTNT9OQ4tBBpSI88F9jsYKHTfnJJWenAGYv9f8b6Z1flUPf5ZL47UnHzfG17OoblMj5frHf76drEGkqPTgzFK9zTEmWxyuNf1-ZSFRbEVz0_\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"prQSjVe\"><img loading=\"lazy\" alt=\"\" class=\"alignnone size-full wp-image-589\" decoding=\"async\" height=\"562\" loading=\"lazy\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190035a60b3.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190035a60b3.png 559w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190035a60b3-298x300.png 298w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190035a60b3-150x150.png 150w\" width=\"559\"\/><\/p>\n<p><strong>Ph\u00e2n t\u00edch c\u00fa ph\u00e1p:<\/strong> V\u00ed d\u1ee5 n\u00e0y gi\u1edbi thi\u1ec7u c\u00e1c h\u00ecnh d\u1ea1ng chuy\u00ean d\u1ee5ng <code>cloud<\/code> v\u00e0 <code>queue<\/code> h\u00ecnh d\u1ea1ng, cung c\u1ea5p cho c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n t\u00edn hi\u1ec7u tr\u1ef1c quan ngay l\u1eadp t\u1ee9c v\u1ec1 c\u1ea5u tr\u00fac topo. Vi\u1ec7c s\u1eed d\u1ee5ng l\u1ec7nh ghi \u0111\u00e8 m\u0169i t\u00ean ngang <code>-right-&gt;<\/code> \u0111\u1ea3m b\u1ea3o lu\u1ed3ng d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o tr\u00f4i ch\u1ea3y t\u1eeb tr\u00e1i sang ph\u1ea3i qua l\u01b0\u1edbi m\u1ea1ng, trong khi c\u00e1c m\u1ed1i ph\u1ee5 thu\u1ed9c \u0111i\u1ec3m (<code>..&gt;<\/code>) ch\u00ednh x\u00e1c th\u1ec3 hi\u1ec7n c\u00e1c giao ti\u1ebfp kh\u00f4ng li\u00ean k\u1ebft, b\u1ea5t \u0111\u1ed3ng b\u1ed9.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n l\u00e0 g\u00ec? M\u1ed9t S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n l\u00e0 m\u1ed9t s\u01a1 \u0111\u1ed3 c\u1ea5u tr\u00fac s\u01a1 \u0111\u1ed3 UML m\u00f4 t\u1ea3 t\u1ed5 ch\u1ee9c m\u00f4-\u0111un c\u1ea5p cao c\u1ee7a m\u1ed9t h\u1ec7 th\u1ed1ng ph\u1ea7n m\u1ec1m. L\u00e0 m\u1ed9t th\u00e0nh ph\u1ea7n quan tr\u1ecdng trong&#8230;<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":7,"template":"","meta":{"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"ld_collection":[14],"class_list":["post-2114","ld_docs","type-ld_docs","status-publish","hentry","ld_collection-vpascode-docs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PlantUML Component Diagram | VPasCode Text to Diagram Guide<\/title>\n<meta name=\"description\" content=\"Document software sub-systems and module relationships with PlantUML component diagrams in VPasCode, a free diagram-as-code tool.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PlantUML Component Diagram | VPasCode Text to Diagram Guide\" \/>\n<meta property=\"og:description\" content=\"Document software sub-systems and module relationships with PlantUML component diagrams in VPasCode, a free diagram-as-code tool.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"VPasCode\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/\",\"name\":\"PlantUML Component Diagram | VPasCode Text to Diagram Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.vpascode.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img_6a18fff7df724.png\",\"datePublished\":\"2026-05-26T07:21:24+00:00\",\"description\":\"Document software sub-systems and module relationships with PlantUML component diagrams in VPasCode, a free diagram-as-code tool.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img_6a18fff7df724.png\",\"contentUrl\":\"https:\\\/\\\/www.vpascode.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img_6a18fff7df724.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-component-diagram-syntax-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lean Docs\",\"item\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/%ld_collection%\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n PlantUML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#website\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\",\"name\":\"VPasCode\",\"description\":\"by Visual Paradigm\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#organization\",\"name\":\"VPasCode\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/06\\\/cropped-vp-online-logo-v1.png\",\"contentUrl\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/06\\\/cropped-vp-online-logo-v1.png\",\"width\":128,\"height\":138,\"caption\":\"VPasCode\"},\"image\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PlantUML Component Diagram | VPasCode Text to Diagram Guide","description":"Document software sub-systems and module relationships with PlantUML component diagrams in VPasCode, a free diagram-as-code tool.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/","og_locale":"vi_VN","og_type":"article","og_title":"PlantUML Component Diagram | VPasCode Text to Diagram Guide","og_description":"Document software sub-systems and module relationships with PlantUML component diagrams in VPasCode, a free diagram-as-code tool.","og_url":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/","og_site_name":"VPasCode","og_image":[{"url":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"4 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/","url":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/","name":"PlantUML Component Diagram | VPasCode Text to Diagram Guide","isPartOf":{"@id":"https:\/\/www.vpascode.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png","datePublished":"2026-05-26T07:21:24+00:00","description":"Document software sub-systems and module relationships with PlantUML component diagrams in VPasCode, a free diagram-as-code tool.","breadcrumb":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/#primaryimage","url":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png","contentUrl":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a18fff7df724.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-component-diagram-syntax-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vpascode.com\/vn\/"},{"@type":"ListItem","position":2,"name":"Lean Docs","item":"https:\/\/www.vpascode.com\/vn\/docs\/%ld_collection%\/"},{"@type":"ListItem","position":3,"name":"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n PlantUML"}]},{"@type":"WebSite","@id":"https:\/\/www.vpascode.com\/vn\/#website","url":"https:\/\/www.vpascode.com\/vn\/","name":"VPasCode","description":"by Visual Paradigm","publisher":{"@id":"https:\/\/www.vpascode.com\/vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vpascode.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/www.vpascode.com\/vn\/#organization","name":"VPasCode","url":"https:\/\/www.vpascode.com\/vn\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.vpascode.com\/vn\/#\/schema\/logo\/image\/","url":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/cropped-vp-online-logo-v1.png","contentUrl":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/cropped-vp-online-logo-v1.png","width":128,"height":138,"caption":"VPasCode"},"image":{"@id":"https:\/\/www.vpascode.com\/vn\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_docs\/2114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_docs"}],"about":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/types\/ld_docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/users\/4"}],"wp:attachment":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/media?parent=2114"}],"wp:term":[{"taxonomy":"ld_collection","embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_collection?post=2114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}