{"id":11677,"date":"2026-05-22T08:35:52","date_gmt":"2026-05-22T00:35:52","guid":{"rendered":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/"},"modified":"2026-05-30T15:18:40","modified_gmt":"2026-05-30T07:18:40","slug":"architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study","status":"publish","type":"post","link":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/","title":{"rendered":"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0"},"content":{"rendered":"<h2 data-nodeid=\"6185\">Gi\u1edbi thi\u1ec7u<\/h2>\n<p data-nodeid=\"6186\">Ph\u1ea7n m\u1ec1m doanh nghi\u1ec7p hi\u1ec7n \u0111\u1ea1i hi\u1ebfm khi t\u1ed3n t\u1ea1i d\u01b0\u1edbi d\u1ea1ng m\u1ed9t kh\u1ed1i \u0111\u01a1n nh\u1ea5t. Khi c\u00e1c h\u1ec7 th\u1ed1ng m\u1edf r\u1ed9ng th\u00e0nh c\u00e1c ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n, \u0111a module, c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ch\u1eafc ch\u1eafn ph\u1ea3i \u0111\u1ed1i m\u1eb7t v\u1edbi nh\u1eefng th\u00e1ch th\u1ee9c nh\u01b0\u00a0<strong data-nodeid=\"6274\">\u00f4 nhi\u1ec5m kh\u00f4ng gian t\u00ean<\/strong>,\u00a0<strong data-nodeid=\"6275\">s\u1ef1 lan r\u1ed9ng c\u1ee7a c\u00e1c ph\u1ee5 thu\u1ed9c truy\u1ec1n d\u1eabn<\/strong>, v\u00e0\u00a0<strong data-nodeid=\"6276\">s\u1ef1 li\u00ean k\u1ebft v\u00f4 \u00fd<\/strong>. Kh\u00f4ng c\u00f3 c\u00e1c ki\u1ec3m so\u00e1t ranh gi\u1edbi r\u00f5 r\u00e0ng, m\u1ed9t thay \u0111\u1ed5i trong m\u1ed9t g\u00f3i ti\u1ec7n \u00edch n\u1ec1n t\u1ea3ng c\u00f3 th\u1ec3 lan truy\u1ec1n m\u1ed9t c\u00e1ch kh\u00f4ng l\u01b0\u1eddng tr\u01b0\u1edbc qua c\u00e1c l\u1edbp middleware v\u00e0 giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng, bi\u1ebfn c\u00e1c thay \u0111\u1ed5i th\u00f4ng th\u01b0\u1eddng th\u00e0nh c\u00e1c thao t\u00e1c mang r\u1ee7i ro cao.<\/p>\n<p data-nodeid=\"6187\">UML 2.0 gi\u1ea3i quy\u1ebft nh\u1eefng \u0111i\u1ec3m y\u1ebfu v\u1ec1 c\u1ea5u tr\u00fac n\u00e0y th\u00f4ng qua m\u1ed9t c\u00e1ch ti\u1ebfp c\u1eadn ch\u00ednh x\u00e1c, d\u1ef1a tr\u00ean quy t\u1eafc \u0111\u1ec3 ki\u1ec3m so\u00e1t kh\u1ea3 n\u0103ng nh\u00ecn th\u1ea5y gi\u1eefa c\u00e1c g\u00f3i. B\u1eb1ng c\u00e1ch ph\u00e2n bi\u1ec7t gi\u1eefa\u00a0<strong data-nodeid=\"6294\">Nh\u1eadp ph\u1ea7n t\u1eed<\/strong>,\u00a0<strong data-nodeid=\"6295\">Nh\u1eadp g\u00f3i<\/strong>, v\u00e0 s\u1ef1 ph\u00e2n bi\u1ec7t h\u00e0nh vi gi\u1eefa\u00a0<code data-backticks=\"1\" data-nodeid=\"6286\">\u00abimport\u00bb<\/code>\u00a0(c\u00f4ng khai) so v\u1edbi\u00a0<code data-backticks=\"1\" data-nodeid=\"6288\">\u00abaccess\u00bb<\/code>\u00a0(ri\u00eang t\u01b0), c\u00e1c ki\u1ebfn tr\u00fac s\u01b0 c\u00f3 th\u1ec3 m\u00f4 h\u00ecnh h\u00f3a ch\u00ednh x\u00e1c c\u00e1ch c\u00e1c kh\u00f4ng gian t\u00ean \u0111\u01b0\u1ee3c chia s\u1ebb, t\u00e1ch bi\u1ec7t ho\u1eb7c xu\u1ea5t l\u1ea1i. D\u1ef1a tr\u00ean c\u00e1c c\u01a1 ch\u1ebf \u0111\u01b0\u1ee3c m\u00f4 t\u1ea3 chi ti\u1ebft trong cu\u1ed1n\u00a0<em data-nodeid=\"6296\">Fast Track UML 2.0<\/em>, nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p n\u00e0y minh h\u1ecda c\u00e1ch m\u1ed9t \u0111\u1ed9i k\u1ef9 thu\u1eadt FinTech quy m\u00f4 trung b\u00ecnh \u0111\u00e3 \u00e1p d\u1ee5ng c\u00e1c c\u1ea5u tr\u00fac UML 2.0 n\u00e0y \u0111\u1ec3 bi\u1ebfn m\u1ed9t c\u01a1 s\u1edf m\u00e3 y\u1ebfu, c\u00f3 li\u00ean k\u1ebft ch\u1eb7t ch\u1ebd th\u00e0nh m\u1ed9t ki\u1ebfn tr\u00fac b\u1ec1n b\u1ec9, \u0111\u01b0\u1ee3c ki\u1ec3m so\u00e1t theo l\u1edbp.<\/p>\n<hr data-nodeid=\"6188\"\/>\n<h2 data-nodeid=\"6189\">B\u1ed1i c\u1ea3nh nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u00e0 nh\u1eefng th\u00e1ch th\u1ee9c ban \u0111\u1ea7u<\/h2>\n<p data-nodeid=\"6190\"><strong data-nodeid=\"6323\">T\u1ed5 ch\u1ee9c:<\/strong>\u00a0NexusPay (N\u1ec1n t\u1ea3ng thanh to\u00e1n s\u1ed1 v\u00e0 th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed)<br \/>\n<strong data-nodeid=\"6324\">Tr\u1ea1ng th\u00e1i ban \u0111\u1ea7u:<\/strong>\u00a0M\u1ed9t ki\u1ebfn tr\u00fac kh\u1ed1i c\u1ed5 \u0111i\u1ec3n d\u1ea7n \u0111\u01b0\u1ee3c ph\u00e2n t\u00e1ch th\u00e0nh c\u00e1c g\u00f3i ph\u1eb3ng, \u0111\u01b0\u1ee3c ph\u00e2n c\u1ea5p theo chi\u1ec1u ngang (<code data-backticks=\"1\" data-nodeid=\"6311\">Thanh to\u00e1n<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"6313\">Kho h\u00e0ng<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"6315\">Giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"6317\">L\u00f5i<\/code>).<br \/>\n<strong data-nodeid=\"6325\">Tri\u1ec7u ch\u1ee9ng c\u1ee7a n\u1ee3 c\u1ea5u tr\u00fac:<\/strong><\/p>\n<ol data-nodeid=\"6191\">\n<li data-nodeid=\"6192\">\n<p data-nodeid=\"6193\"><strong data-nodeid=\"6336\">Xung \u0111\u1ed9t kh\u00f4ng gian t\u00ean:<\/strong>\u00a0Nhi\u1ec1u \u0111\u1ed9i ng\u0169 \u0111\u1ecbnh ngh\u0129a \u0111\u1ed9c l\u1eadp\u00a0<code data-backticks=\"1\" data-nodeid=\"6330\">Danh m\u1ee5c<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"6332\">Ng\u01b0\u1eddi d\u00f9ng<\/code>, v\u00e0\u00a0<code data-backticks=\"1\" data-nodeid=\"6334\">Phi\u00ean<\/code>\u00a0l\u1edbp. B\u1ed9 d\u1ecbch th\u01b0\u1eddng n\u00e9m l\u1ed7i m\u01a1 h\u1ed3 trong qu\u00e1 tr\u00ecnh t\u00edch h\u1ee3p.<\/p>\n<\/li>\n<li data-nodeid=\"6194\">\n<p data-nodeid=\"6195\"><strong data-nodeid=\"6343\">R\u00f2 r\u1ec9 b\u1eafc c\u1ea7u:<\/strong>\u00a0C\u00e1c g\u00f3i middleware s\u1eed d\u1ee5ng r\u1ed9ng\u00a0<code data-backticks=\"1\" data-nodeid=\"6341\">\u00abimport\u00bb<\/code>\u00a0ph\u1ee5 thu\u1ed9c \u0111\u1ec3 k\u00e9o c\u00e1c th\u01b0 vi\u1ec7n n\u1ec1n t\u1ea3ng. \u0110i\u1ec1u n\u00e0y v\u00f4 t\u00ecnh l\u00e0m l\u1ed9 c\u00e1c ti\u1ec7n \u00edch m\u00e3 h\u00f3a c\u1ea5p th\u1ea5p v\u00e0 b\u1ed9 k\u1ebft n\u1ed1i c\u01a1 s\u1edf d\u1eef li\u1ec7u cho c\u00e1c m\u00f4-\u0111un ph\u00eda tr\u01b0\u1edbc, vi ph\u1ea1m ranh gi\u1edbi b\u1ea3o m\u1eadt.<\/p>\n<\/li>\n<li data-nodeid=\"6196\">\n<p data-nodeid=\"6197\"><strong data-nodeid=\"6352\">Li\u00ean k\u1ebft ng\u1ea7m:<\/strong>\u00a0Kh\u00f4ng c\u00f3 quy t\u1eafc hi\u1ec3n th\u1ecb r\u00f5 r\u00e0ng, c\u00e1c tr\u1ee3 gi\u00fap n\u1ed9i b\u1ed9 \u0111\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u l\u00e0 \u201cchi ti\u1ebft tri\u1ec3n khai\u201d \u0111\u00e3 \u0111\u01b0\u1ee3c tham chi\u1ebfu t\u1ef1 do qua c\u00e1c ranh gi\u1edbi g\u00f3i, khi\u1ebfn vi\u1ec7c tri\u1ec3n khai t\u00e1ch bi\u1ec7t g\u1ea7n nh\u01b0 kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c.<\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"6198\"><strong data-nodeid=\"6357\">M\u1ee5c ti\u00eau:<\/strong>\u00a0T\u00e1i ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng ng\u1eef ngh\u0129a import\/truy c\u1eadp c\u1ee7a UML 2.0 \u0111\u1ec3 th\u1ef1c thi s\u1ef1 ph\u00e2n l\u1edbp nghi\u00eam ng\u1eb7t, gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t t\u00ean v\u00e0 thi\u1ebft l\u1eadp c\u00e1c h\u1ee3p \u0111\u1ed3ng ph\u1ee5 thu\u1ed9c r\u00f5 r\u00e0ng, d\u1ec5 b\u1ea3o tr\u00ec.<\/p>\n<hr data-nodeid=\"6199\"\/>\n<h2 data-nodeid=\"6200\">T\u00e1i c\u1ea5u tr\u00fac ki\u1ebfn tr\u00fac: \u00c1p d\u1ee5ng import v\u00e0 truy c\u1eadp UML 2.0<\/h2>\n<h3 data-nodeid=\"6201\">1. \u0110\u1ecbnh tuy\u1ebfn ph\u1ee5 thu\u1ed9c theo l\u1edbp:\u00a0<code data-backticks=\"1\" data-nodeid=\"6362\">\u00abaccess\u00bb<\/code>\u00a0so v\u1edbi\u00a0<code data-backticks=\"1\" data-nodeid=\"6364\">\u00abimport\u00bb<\/code><\/h3>\n<p data-nodeid=\"6202\">\u0110\u1ed9i ng\u0169 \u0111\u00e3 thi\u1ebft l\u1eadp m\u1ed9t ki\u1ebfn tr\u00fac ba t\u1ea7ng nghi\u00eam ng\u1eb7t:\u00a0<code data-backticks=\"1\" data-nodeid=\"6366\">\u1ee8ng d\u1ee5ng kh\u00e1ch h\u00e0ng<\/code>\u00a0\u2192\u00a0<code data-backticks=\"1\" data-nodeid=\"6368\">D\u1ecbch v\u1ee5 h\u00f3a \u0111\u01a1n<\/code>\u00a0\u2192\u00a0<code data-backticks=\"1\" data-nodeid=\"6370\">C\u1ed5ng thanh to\u00e1n<\/code>. Quy\u1ebft \u0111\u1ecbnh c\u1ed1t l\u00f5i xoay quanh vi\u1ec7c middleware n\u00ean ti\u00eau th\u1ee5 h\u1ea1 t\u1ea7ng n\u1ec1n t\u1ea3ng nh\u01b0 th\u1ebf n\u00e0o.<\/p>\n<p data-nodeid=\"6203\">Thay v\u00ec c\u00f4ng khai r\u1ed9ng r\u00e3i ph\u1ea7n\u00a0<code data-backticks=\"1\" data-nodeid=\"6373\">C\u1ed5ng thanh to\u00e1n<\/code>n\u1ed9i b\u1ed9, c\u00e1c ki\u1ebfn tr\u00fac s\u01b0 \u0111\u00e3 m\u00f4 h\u00ecnh h\u00f3a m\u1ed9t\u00a0<strong data-nodeid=\"6393\">Truy c\u1eadp g\u00f3i ri\u00eang t\u01b0 (<code data-backticks=\"1\" data-nodeid=\"6378\">\u00abtruy c\u1eadp\u00bb<\/code>)<\/strong>\u00a0m\u1ed1i quan h\u1ec7. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p\u00a0<code data-backticks=\"1\" data-nodeid=\"6382\">D\u1ecbch v\u1ee5 h\u00f3a \u0111\u01a1n<\/code>\u00a0t\u1eadn d\u1ee5ng to\u00e0n b\u1ed9 c\u00e1c th\u00e0nh ph\u1ea7n c\u00f4ng khai nh\u01b0\u00a0<code data-backticks=\"1\" data-nodeid=\"6384\">+TransactionProcessor<\/code>\u00a0trong khi v\u1eabn gi\u1eef ch\u00fang ho\u00e0n to\u00e0n \u1ea9n kh\u1ecfi c\u00e1c ng\u01b0\u1eddi ti\u00eau d\u00f9ng ph\u00eda d\u01b0\u1edbi. C\u00e1c ti\u1ec7n \u00edch ri\u00eang t\u01b0 c\u1ee7a\u00a0<code data-backticks=\"1\" data-nodeid=\"6386\">C\u1ed5ng thanh to\u00e1n<\/code>n\u1ed9i b\u1ed9 (v\u00ed d\u1ee5 nh\u01b0\u00a0<code data-backticks=\"1\" data-nodeid=\"6389\">-EncryptionKeys<\/code>) v\u1eabn ho\u00e0n to\u00e0n t\u00e1ch bi\u1ec7t, v\u00ec UML 2.0 \u0111\u1ea3m b\u1ea3o r\u1eb1ng\u00a0<code data-backticks=\"1\" data-nodeid=\"6391\">-<\/code>\u00a0t\u00ednh hi\u1ec3n th\u1ecb s\u1ebd kh\u00f4ng bao gi\u1edd b\u1ecb vi ph\u1ea1m b\u1edfi c\u01a1 ch\u1ebf nh\u1eadp hay truy c\u1eadp n\u00e0o.<\/p>\n<p id=\"GDArTFw\"><img alt=\"\" class=\"alignnone size-full wp-image-24699\" decoding=\"async\" height=\"326\" loading=\"lazy\" sizes=\"auto, (max-width: 1736px) 100vw, 1736px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e.png 1736w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e-300x56.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e-1030x193.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e-768x144.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e-1536x288.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e-150x28.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eee9b1232e-400x75.png 400w\" width=\"1736\"\/><\/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#plantuml:TPDDRi8m58JtaNA79vQfu0088UYleWgAL3Z0mtab5euTsIPjLFL4FK9tdAosSH0Ws4IEytayCtOcngAskqgaYTboMQF62enj1RcdvkpmIT271Qj0yqrfeU2QcELAfacQM6uTkq2snGr1NjLAMsZC0AQCaJ4m8rQYvCnuk8vORu5jHTB22rhwnBO7QBenZ4RFIXIansFuJXC09j3fzEwM6gN1iF52Ao-kT5XuV3kX-q-IwRRsy2kr9d1-a2O_PqRkkH1SRk2TTCCP1QwRksKaburox0obapXOY5ENwW-2-vJJkXQSeJSJw3XzG_yHJRbMg8jL7kXL7cKxNuD-VtniQmZxNmnLx__IH2fBe2GuRkibisoXUUFGU1p3BFFJdH932Jj3SBNRmIdvC9tFtvO1lgWsOCkIeEuM0ZVWOKrz-lBtWGe7aIp0s_D9OW4XIBU33yB3zRaHPBTs9SOR5dD47H_3a8jnVZA34oJw3zIriE3PDJ7q2JjBXrwf06vTkj2ZQC-YJDpG_I7_\" 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#plantuml:VPDFQzim6CRl1d-7bnmpaWzGIYXDjowKbHtQ3w39cYNiIa5Iifgnquux3RR3s6LX14QtGY4xnOn1DV8zz4tsodN-4lSYEzQZvttyUvmZOucsewiyZamcv91eSWN65Zd3LGlwi9MprnQi0YrIRY4Hcb4hb8oZEBB2ehQ_c03bVluNpd6z7KBgPWACWh4llugDxGizAe06IJWy93GZAODMtvUVPGgM4ybna9l85X03fyIoDwI0myDdAa-OxlNWRHm1q9mO0wqd5vf8GweiBxMYp1YbguEhNnlgpbD9TJ4CuZDMc4eNRkBetLQM4rz-e3madm9tCmB_FYxgFCSYpmNcRCepa6CbA7j193ez9AaVxGxnvG_qIN06NZBk9ZYHksyohGxrSy6aRHfpGWn_fOXEBWUL-d9Gko_ZTJkTtehT0Tp_j2lgzsKSIMKPA0cepO9jkxrk1IjsDw69nTr1knrsz-C0wcPObo_VW_7bxV9DzZRIVSJcxBdxT7wwnscdhShZs9TVu3g8SlSdKFkDGlIvy-Lt2jSZFvzQoFry8b3EP0BXJGEOccV5PGafS96ycKdz8TDgICQ9g7aqDhU11DVvj82Txw7x-F4j54k7VJmX-8pThoQcwxP1Lf6OmcnXqBhSBK17U8l_y_y0\" \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\" data-nodeid=\"6204\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\nleft to right direction\r\n\r\ntitle C\u01a1 ch\u1ebf Nh\u1eadp g\u00f3i so v\u1edbi C\u01a1 ch\u1ebf Truy c\u1eadp\r\n\r\npackage \"C\u1ed5ng thanh to\u00e1n\" as Gateway &lt;&lt;Folder&gt;&gt; {\r\n  class \"+TransactionProcessor\" as Processor\r\n  class \"-EncryptionKeys\" as Keys\r\n}\r\n\r\npackage \"D\u1ecbch v\u1ee5 h\u00f3a \u0111\u01a1n\" as Billing &lt;&lt;Folder&gt;&gt; {\r\n  class \"+InvoiceManager\" as Invoice\r\n}\r\n\r\npackage \"\u1ee8ng d\u1ee5ng kh\u00e1ch h\u00e0ng\" as Client &lt;&lt;Folder&gt;&gt; {\r\n  class \"DashboardUI\" as UI\r\n}\r\n\r\nBilling .--&gt; Gateway : \u00abtruy c\u1eadp\u00bb\r\nnote on link\r\n  **Truy c\u1eadp ri\u00eang t\u01b0:**\r\n  D\u1ecbch v\u1ee5 h\u00f3a \u0111\u01a1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng +TransactionProcessor.\r\n  D\u1ecbch v\u1ee5 h\u00f3a \u0111\u01a1n KH\u00d4NG th\u1ec3 s\u1eed d\u1ee5ng -EncryptionKeys.\r\n  B\u1ed9 x\u1eed l\u00fd kh\u00f4ng \u0111\u01b0\u1ee3c xu\u1ea5t l\u1ea1i.\r\nend note\r\n\r\nClient .--&gt; Billing : \u00abnh\u1eadp\u00bb\r\nnote on link\r\n  **Nh\u1eadp c\u00f4ng khai:**\r\n  \u1ee8ng d\u1ee5ng kh\u00e1ch h\u00e0ng c\u00f3 th\u1ec3 th\u1ea5y +InvoiceManager.\r\n  \u1ee8ng d\u1ee5ng kh\u00e1ch h\u00e0ng KH\u00d4NG th\u1ec3 th\u1ea5y +TransactionProcessor \r\n  v\u00ec D\u1ecbch v\u1ee5 h\u00f3a \u0111\u01a1n truy c\u1eadp n\u00f3 theo c\u00e1ch ri\u00eang t\u01b0.\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:VPDFQzim6CRl1d-7bnmpaWzGIYXDjowKbHtQ3w39cYNiIa5Iifgnquux3RR3s6LX14QtGY4xnOn1DV8zz4tsodN-4lSYEzQZvttyUvmZOucsewiyZamcv91eSWN65Zd3LGlwi9MprnQi0YrIRY4Hcb4hb8oZEBB2ehQ_c03bVluNpd6z7KBgPWACWh4llugDxGizAe06IJWy93GZAODMtvUVPGgM4ybna9l85X03fyIoDwI0myDdAa-OxlNWRHm1q9mO0wqd5vf8GweiBxMYp1YbguEhNnlgpbD9TJ4CuZDMc4eNRkBetLQM4rz-e3madm9tCmB_FYxgFCSYpmNcRCepa6CbA7j193ez9AaVxGxnvG_qIN06NZBk9ZYHksyohGxrSy6aRHfpGWn_fOXEBWUL-d9Gko_ZTJkTtehT0Tp_j2lgzsKSIMKPA0cepO9jkxrk1IjsDw69nTr1knrsz-C0wcPObo_VW_7bxV9DzZRIVSJcxBdxT7wwnscdhShZs9TVu3g8SlSdKFkDGlIvy-Lt2jSZFvzQoFry8b3EP0BXJGEOccV5PGafS96ycKdz8TDgICQ9g7aqDhU11DVvj82Txw7x-F4j54k7VJmX-8pThoQcwxP1Lf6OmcnXqBhSBK17U8l_y_y0\" \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#plantuml:TPDDRi8m58JtaNA79vQfu0088UYleWgAL3Z0mtab5euTsIPjLFL4FK9tdAosSH0Ws4IEytayCtOcngAskqgaYTboMQF62enj1RcdvkpmIT271Qj0yqrfeU2QcELAfacQM6uTkq2snGr1NjLAMsZC0AQCaJ4m8rQYvCnuk8vORu5jHTB22rhwnBO7QBenZ4RFIXIansFuJXC09j3fzEwM6gN1iF52Ao-kT5XuV3kX-q-IwRRsy2kr9d1-a2O_PqRkkH1SRk2TTCCP1QwRksKaburox0obapXOY5ENwW-2-vJJkXQSeJSJw3XzG_yHJRbMg8jL7kXL7cKxNuD-VtniQmZxNmnLx__IH2fBe2GuRkibisoXUUFGU1p3BFFJdH932Jj3SBNRmIdvC9tFtvO1lgWsOCkIeEuM0ZVWOKrz-lBtWGe7aIp0s_D9OW4XIBU33yB3zRaHPBTs9SOR5dD47H_3a8jnVZA34oJw3zIriE3PDJ7q2JjBXrwf06vTkj2ZQC-YJDpG_I7_\" 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 data-nodeid=\"6205\"><em data-nodeid=\"6404\">T\u00e1c \u0111\u1ed9ng ki\u1ebfn tr\u00fac:<\/em>\u00a0M\u1ed1i quan h\u1ec7\u00a0<code data-backticks=\"1\" data-nodeid=\"6398\">\u00abtruy c\u1eadp\u00bb<\/code>\u00a0\u0111\u00e3 ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t b\u1ee9c t\u01b0\u1eddng l\u1eeda. C\u00e1c g\u00f3i ph\u00eda d\u01b0\u1edbi ch\u1ec9 t\u01b0\u01a1ng t\u00e1c v\u1edbi h\u1ee3p \u0111\u1ed3ng c\u00f4ng khai c\u1ee7a l\u1edbp li\u1ec1n k\u1ec1, lo\u1ea1i b\u1ecf c\u00e1c ph\u1ee5 thu\u1ed9c chuy\u1ec3n ti\u1ebfp s\u00e2u v\u00e0 gi\u1ea3m \u0111\u1ed9 li\u00ean k\u1ebft th\u1eddi gian bi\u00ean d\u1ecbch kho\u1ea3ng 40%.<\/p>\n<h3 data-nodeid=\"6206\">2. Gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t kh\u00f4ng gian t\u00ean th\u00f4ng qua Nh\u1eadp ph\u1ea7n t\u1eed v\u00e0 \u0110\u1eb7t t\u00ean thay th\u1ebf<\/h3>\n<p data-nodeid=\"6207\">Trong qu\u00e1 tr\u00ecnh t\u00edch h\u1ee3p,\u00a0<code data-backticks=\"1\" data-nodeid=\"6409\">\u1ee8ng d\u1ee5ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed<\/code>\u00a0g\u00f3i c\u1ea7n thi\u1ebft \u0111\u1ec3 \u0111\u1ed3ng b\u1ed9 h\u00f3a d\u1eef li\u1ec7u s\u1ea3n ph\u1ea9m v\u1edbi h\u1ec7 th\u1ed1ng t\u1ed3n kho c\u0169. C\u1ea3 hai g\u00f3i \u0111\u1ec1u \u0111\u1ecbnh ngh\u0129a \u0111\u1ed9c l\u1eadp m\u1ed9t\u00a0<code data-backticks=\"1\" data-nodeid=\"6411\">Danh m\u1ee5c<\/code>\u00a0l\u1edbp, g\u00e2y ra s\u1ef1 m\u01a1 h\u1ed3 trong tr\u00ecnh bi\u00ean d\u1ecbch.<\/p>\n<p data-nodeid=\"6208\">Thay v\u00ec \u0111\u1ed5i t\u00ean c\u00e1c l\u1edbp n\u1ed9i b\u1ed9 (m\u1ed9t thay \u0111\u1ed5i r\u1ee7i ro cao), nh\u00f3m \u0111\u00e3 \u00e1p d\u1ee5ng\u00a0<strong data-nodeid=\"6420\">Nh\u1eadp ph\u1ea7n t\u1eed<\/strong>\u00a0v\u1edbi m\u1ed9t\u00a0<code data-backticks=\"1\" data-nodeid=\"6418\">{t\u00ean_alias}<\/code>\u00a0tham s\u1ed1. \u0110i\u1ec1u n\u00e0y ch\u1ec9 k\u00e9o l\u1edbp b\u00ean ngo\u00e0i c\u1ea7n thi\u1ebft v\u00e0o kh\u00f4ng gian t\u00ean c\u1ee5c b\u1ed9 d\u01b0\u1edbi m\u1ed9t t\u00ean gi\u1ea3 c\u00f3 th\u1ec3 d\u1ef1 \u0111o\u00e1n \u0111\u01b0\u1ee3c.<\/p>\n<p id=\"zSOthvo\"><img alt=\"\" class=\"alignnone size-full wp-image-24700\" decoding=\"async\" height=\"471\" loading=\"lazy\" sizes=\"auto, (max-width: 1097px) 100vw, 1097px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png 1097w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de-300x129.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de-1030x442.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de-768x330.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de-150x64.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de-400x172.png 400w\" width=\"1097\"\/><\/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#plantuml:ZLB1QkD03BqR_0yYnomOjdiBtT3GRI4Gzf3ss8ioKHsHcP6PaJUOq2_QJ-YjNzOPnxHnsqClnYCzFRqdwIeg1csTBOkuPzzWG0THEqlf6zYSKcMXh2bqOycHLrYwHeB2WNK7Ap5eOM4P8_iwOniqUwm99YkgqNImzFzIaOGExbfMcW1665ANbxTYjnJcSpYM1O2n62DChb7HIds6728d5C2F0mRQIHjfBOSuIosKQWev-NJ6SwTYzaibrpFrhx9u6ccykHRdA1Y2HTDODgWileUdzxVqPV-VvD7c3yV6OXPEjGIcf7B5KGU9lOZSeQhc7opEuEK_zmD-UNxmHyoJXTy3w6sM0xhdyQ846r4L1_AOXUSkq-bVT1IJKu8rHR5jjjOlZJrywNisdURAdnNSTqtQvfdJG8yKo1kAq4aRHhQhN7JnNlIrr167xcXik-VuLOrsnX6IDK2JAY9lqW5ko61QEd0wFZnbJwEYRI8WlyqXAekhz9ikznK0\" 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#plantuml:ZPD1QzH05CVlWNo7nnvN2AYtfIvLYrAe7jGly7PscWoRpCIPoTQbzEJ1WoVn95vSIgbQ2miAGkQmqEX-Z_aclibkTLSjz3AJP5v-x___vsNRMDIsAl8uCYCXIzHOWB6JdDEg1LiUnP4LbXuzpdnzNa99swa4wzqvZBrxBw2PoWnU-7eAFzvuzngfP35RJ6KQtYsHZJ3bqBddtJjWpJUP0lFk903UIXXb2jZFJnr00tiyHJQ1hQq7AXzotU_3OHm1i1oDWSuEKfU2tcHhnVVHOgxIPI70ZGFKF5ELuK_KWUd1hhGyvJeS7gsX7ldwkuMi-K1QVijegK-jOgCuEjfGxjr7AXnIQzgUhRoHb7egoB7mxjKoZfPmjoolwq0npFynm0SxmfGv1ciyLLfmyh4dZ5sPQAM59adI_ok47boSYQ9KsbuuUOYve2PtLZMxSiobLVgokCL8PJaCbBMg0BKVf8SctUv3uUjZ0S-hYQ_dbi9flrega7msdsdHYkwl6qklsmtOcydb16q4OJEQEPPHntaLvgUUoyraQ5XE4GQ4bKdWtFh3-R-rAvZhKRMWsycLax1oR3FlNfBRQa8gGiTnymLayvNOYnaIUJ7pxfY1RFKGbCiXX53ZQ9ikwU_v1G00\" \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\" data-nodeid=\"6209\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\n\r\ntitle Nh\u1eadp ph\u1ea7n t\u1eed v\u1edbi \u00e1nh x\u1ea1 \u0111\u1ecba ph\u01b0\u01a1ng\r\n\r\npackage \"B\u1ed9 c\u00f4ng c\u1ee5 t\u1ed3n kho c\u0169\" as Legacy &lt;&lt;Folder&gt;&gt; {\r\n  class \"Danh m\u1ee5c\" as LegacyCatalog {\r\n    +warehouseRows: Integer\r\n  }\r\n  class \"M\u1eb7t h\u00e0ng t\u1ed3n kho\" as Stock\r\n}\r\n\r\npackage \"\u1ee8ng d\u1ee5ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed\" as App &lt;&lt;Folder&gt;&gt; {\r\n  class \"Danh m\u1ee5c\" as LocalCatalog {\r\n    +webDisplayCategories: List\r\n  }\r\n}\r\n\r\nApp ..&gt; LegacyCatalog : \u00abimport\u00bbn{alias = LegacyInventoryCatalog}\r\n\r\nnote bottom of App\r\n  **Gi\u1ea3i quy\u1ebft kh\u00f4ng gian t\u00ean trong \u1ee8ng d\u1ee5ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed:**\r\n  1. Nh\u1eadp \"Danh m\u1ee5c\" tham chi\u1ebfu \u0111\u1ebfn LocalCatalog c\u1ee7a b\u1ea1n.\r\n  2. Nh\u1eadp \"LegacyInventoryCatalog\" tham chi\u1ebfu \u0111\u1ebfn LegacyCatalog.\r\n  3. \"M\u1eb7t h\u00e0ng t\u1ed3n kho\" kh\u00f4ng th\u1ec3 truy c\u1eadp v\u00ec n\u00f3 ch\u01b0a \u0111\u01b0\u1ee3c nh\u1eadp.\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:ZPD1QzH05CVlWNo7nnvN2AYtfIvLYrAe7jGly7PscWoRpCIPoTQbzEJ1WoVn95vSIgbQ2miAGkQmqEX-Z_aclibkTLSjz3AJP5v-x___vsNRMDIsAl8uCYCXIzHOWB6JdDEg1LiUnP4LbXuzpdnzNa99swa4wzqvZBrxBw2PoWnU-7eAFzvuzngfP35RJ6KQtYsHZJ3bqBddtJjWpJUP0lFk903UIXXb2jZFJnr00tiyHJQ1hQq7AXzotU_3OHm1i1oDWSuEKfU2tcHhnVVHOgxIPI70ZGFKF5ELuK_KWUd1hhGyvJeS7gsX7ldwkuMi-K1QVijegK-jOgCuEjfGxjr7AXnIQzgUhRoHb7egoB7mxjKoZfPmjoolwq0npFynm0SxmfGv1ciyLLfmyh4dZ5sPQAM59adI_ok47boSYQ9KsbuuUOYve2PtLZMxSiobLVgokCL8PJaCbBMg0BKVf8SctUv3uUjZ0S-hYQ_dbi9flrega7msdsdHYkwl6qklsmtOcydb16q4OJEQEPPHntaLvgUUoyraQ5XE4GQ4bKdWtFh3-R-rAvZhKRMWsycLax1oR3FlNfBRQa8gGiTnymLayvNOYnaIUJ7pxfY1RFKGbCiXX53ZQ9ikwU_v1G00\" \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#plantuml:ZLB1QkD03BqR_0yYnomOjdiBtT3GRI4Gzf3ss8ioKHsHcP6PaJUOq2_QJ-YjNzOPnxHnsqClnYCzFRqdwIeg1csTBOkuPzzWG0THEqlf6zYSKcMXh2bqOycHLrYwHeB2WNK7Ap5eOM4P8_iwOniqUwm99YkgqNImzFzIaOGExbfMcW1665ANbxTYjnJcSpYM1O2n62DChb7HIds6728d5C2F0mRQIHjfBOSuIosKQWev-NJ6SwTYzaibrpFrhx9u6ccykHRdA1Y2HTDODgWileUdzxVqPV-VvD7c3yV6OXPEjGIcf7B5KGU9lOZSeQhc7opEuEK_zmD-UNxmHyoJXTy3w6sM0xhdyQ846r4L1_AOXUSkq-bVT1IJKu8rHR5jjjOlZJrywNisdURAdnNSTqtQvfdJG8yKo1kAq4aRHhQhN7JnNlIrr167xcXik-VuLOrsnX6IDK2JAY9lqW5ko61QEd0wFZnbJwEYRI8WlyqXAekhz9ikznK0\" 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 data-nodeid=\"6210\"><em data-nodeid=\"6429\">T\u00e1c \u0111\u1ed9ng ki\u1ebfn tr\u00fac:<\/em>\u00a0B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng Nh\u1eadp ph\u1ea7n t\u1eed thay v\u00ec Nh\u1eadp g\u00f3i, nh\u00f3m \u0111\u00e3 tr\u00e1nh k\u00e9o c\u00e1c l\u1edbp c\u0169 kh\u00f4ng c\u1ea7n thi\u1ebft (nh\u01b0\u00a0<code data-backticks=\"1\" data-nodeid=\"6425\">M\u1eb7t h\u00e0ng t\u1ed3n kho<\/code>). Th\u1ebb\u00a0<code data-backticks=\"1\" data-nodeid=\"6427\">{alias = LegacyInventoryCatalog}<\/code>\u00a0\u0111\u00e3 gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t m\u1ed9t c\u00e1ch r\u00f5 r\u00e0ng, duy tr\u00ec t\u00ednh t\u01b0\u01a1ng th\u00edch ng\u01b0\u1ee3c \u0111\u1ed3ng th\u1eddi bu\u1ed9c ph\u1ea3i \u0111\u1ecbnh tuy\u1ebfn tham chi\u1ebfu r\u00f5 r\u00e0ng.<\/p>\n<h3 data-nodeid=\"6211\">3. Th\u1ef1c thi quy\u1ec1n truy c\u1eadp v\u00e0 k\u1ef7 lu\u1eadt kh\u00f4ng gian t\u00ean<\/h3>\n<p data-nodeid=\"6212\">Quy t\u1eafc quy\u1ec1n truy c\u1eadp c\u1ee7a UML 2.0 (<code data-backticks=\"1\" data-nodeid=\"6436\">+<\/code>\u00a0c\u00f4ng khai,\u00a0<code data-backticks=\"1\" data-nodeid=\"6438\">-<\/code>\u00a0ri\u00eang t\u01b0) \u0111\u00e3 \u0111\u01b0\u1ee3c quy \u0111\u1ecbnh nghi\u00eam ng\u1eb7t v\u00e0o quy tr\u00ecnh xem x\u00e9t ki\u1ebfn tr\u00fac c\u1ee7a nh\u00f3m:<\/p>\n<ul data-nodeid=\"6213\">\n<li data-nodeid=\"6214\">\n<p data-nodeid=\"6215\"><strong data-nodeid=\"6448\">C\u00f4ng khai (<code data-backticks=\"1\" data-nodeid=\"6444\">+<\/code>)<\/strong>\u00a0c\u00e1c ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c gi\u1edbi h\u1ea1n nghi\u00eam ng\u1eb7t ch\u1ec9 c\u00e1c API \u1ed5n \u0111\u1ecbnh, \u0111\u01b0\u1ee3c t\u00e0i li\u1ec7u h\u00f3a, nh\u1eb1m m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng ch\u00e9o gi\u1eefa c\u00e1c g\u00f3i.<\/p>\n<\/li>\n<li data-nodeid=\"6216\">\n<p data-nodeid=\"6217\"><strong data-nodeid=\"6459\">Ri\u00eang t\u01b0 (<code data-backticks=\"1\" data-nodeid=\"6451\">-<\/code>)<\/strong>c\u00e1c th\u00e0nh ph\u1ea7n \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i n\u1ed9i b\u1ed9, c\u00e1c thao t\u00e1c m\u00e3 h\u00f3a v\u00e0 c\u00e1c b\u1ed9 chuy\u1ec3n \u0111\u1ed5i \u0111\u1eb7c th\u00f9 khung l\u00e0m vi\u1ec7c. D\u00f9 g\u00f3i kh\u00e1c c\u00f3 c\u1ed1 g\u1eafng th\u1ebf n\u00e0o \u0111i n\u1eefa th\u00ec<code data-backticks=\"1\" data-nodeid=\"6455\">\u00abimport\u00bb<\/code>\u00a0ho\u1eb7c\u00a0<code data-backticks=\"1\" data-nodeid=\"6457\">\u00abaccess\u00bb<\/code>\u00a0ch\u00fang, ng\u1eef ngh\u0129a UML \u0111\u1ea3m b\u1ea3o ch\u00fang v\u1eabn \u0111\u01b0\u1ee3c \u0111\u00f3ng g\u00f3i k\u00edn.<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"6218\"\/>\n<h2 data-nodeid=\"6219\">M\u00f4 h\u00ecnh h\u00f3a ki\u1ebfn tr\u00fac: H\u01b0\u1edbng d\u1eabn tri\u1ec3n khai PlantUML<\/h2>\n<p data-nodeid=\"6220\">\u0110\u1ec3 \u0111\u1ea3m b\u1ea3o c\u00e1c s\u01a1 \u0111\u1ed3 UML ph\u1ee5c v\u1ee5 nh\u01b0 t\u00e0i li\u1ec7u ki\u1ebfn tr\u00fac s\u1ed1ng \u0111\u1ed9ng thay v\u00ec nh\u1eefng t\u1ea5m \u00e1p ph\u00edch t\u0129nh, \u0111\u1ed9i ng\u0169 NexusPay \u0111\u00e3 chu\u1ea9n h\u00f3a m\u1ed9t s\u1ed1 th\u1ef1c h\u00e0nh PlantUML:<\/p>\n<ol data-nodeid=\"6221\">\n<li data-nodeid=\"6222\">\n<p data-nodeid=\"6223\"><strong data-nodeid=\"6468\">Th\u1ef1c hi\u1ec7n \u0111\u1ecbnh h\u01b0\u1edbng r\u00f5 r\u00e0ng:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"6466\">h\u01b0\u1edbng t\u1eeb tr\u00e1i sang ph\u1ea3i<\/code>\u00a0\u0111\u01b0\u1ee3c y\u00eau c\u1ea7u b\u1eaft bu\u1ed9c trong t\u1ea5t c\u1ea3 s\u01a1 \u0111\u1ed3 g\u00f3i \u0111\u1ec3 \u0111\u1ed3ng b\u1ed9 lu\u1ed3ng ph\u1ee5 thu\u1ed9c v\u1edbi lu\u1ed3ng d\u1eef li\u1ec7u logic, ng\u0103n ng\u1eeba s\u1ef1 lan r\u1ed9ng ch\u1ed3ng ch\u1ea5t theo chi\u1ec1u d\u1ecdc.<\/p>\n<\/li>\n<li data-nodeid=\"6224\">\n<p data-nodeid=\"6225\"><strong data-nodeid=\"6479\">Gi\u1ea3m kho\u1ea3ng c\u00e1ch b\u1ed1 c\u1ee5c:<\/strong>\u00a0c\u00e1c \u0111\u01b0\u1eddng ph\u1ee5 thu\u1ed9c ch\u1ec9 c\u00f3 m\u1ed9t ch\u1ea5m (<code data-backticks=\"1\" data-nodeid=\"6473\">.&gt;<\/code>) v\u00e0 c\u00e1c th\u1ebb h\u01b0\u1edbng r\u00f5 r\u00e0ng (<code data-backticks=\"1\" data-nodeid=\"6475\">.down.&gt;<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"6477\">.right.&gt;<\/code>) gi\u00fap c\u00e1c bi\u00ean gi\u1edbi g\u00f3i \u0111\u01b0\u1ee3c si\u1ebft ch\u1eb7t v\u1ec1 m\u1eb7t th\u1ecb gi\u00e1c v\u00e0 gi\u1ea3m thi\u1ec3u c\u00e1c \u0111\u01b0\u1eddng ch\u00e9o nhau.<\/p>\n<\/li>\n<li data-nodeid=\"6226\">\n<p data-nodeid=\"6227\"><strong data-nodeid=\"6494\">T\u00e0i li\u1ec7u r\u00e0ng bu\u1ed9c ngay t\u1ea1i ch\u1ed7:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"6484\">ghi ch\u00fa tr\u00ean li\u00ean k\u1ebft<\/code>\u00a0c\u00e1c kh\u1ed1i \u0111\u01b0\u1ee3c g\u1eafn tr\u1ef1c ti\u1ebfp v\u00e0o\u00a0<code data-backticks=\"1\" data-nodeid=\"6486\">\u00abimport\u00bb<\/code>\u00a0v\u00e0\u00a0<code data-backticks=\"1\" data-nodeid=\"6488\">\u00abaccess\u00bb<\/code>\u00a0c\u00e1c m\u1ed1i quan h\u1ec7 \u0111\u1ec3 n\u00eau r\u00f5 r\u00e0ng\u00a0<em data-nodeid=\"6495\">t\u1ea1i sao<\/em>\u00a0m\u1ed9t ph\u1ee5 thu\u1ed9c \u0111\u01b0\u1ee3c \u0111\u1ecbnh tuy\u1ebfn theo c\u00e1ch nh\u1ea5t \u0111\u1ecbnh, gi\u00fap \u00fd \u0111\u1ecbnh ki\u1ebfn tr\u00fac tr\u1edf n\u00ean r\u00f5 r\u00e0ng ngay l\u1eadp t\u1ee9c \u0111\u1ed1i v\u1edbi c\u00e1c k\u1ef9 s\u01b0 m\u1edbi.<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"6228\"\/>\n<h2 data-nodeid=\"6229\">K\u1ebft qu\u1ea3 &amp; Th\u1ef1c h\u00e0nh t\u1ed1t nh\u1ea5t<\/h2>\n<p data-nodeid=\"6230\">Sau khi th\u1ef1c hi\u1ec7n c\u1ea3i ti\u1ebfn import\/access theo UML 2.0, NexusPay b\u00e1o c\u00e1o nh\u1eefng c\u1ea3i thi\u1ec7n \u0111\u00e1ng k\u1ec3 v\u1ec1 t\u1ed1c \u0111\u1ed9 ph\u00e1t tri\u1ec3n, \u0111\u1ed9 \u1ed5n \u0111\u1ecbnh h\u1ec7 th\u1ed1ng v\u00e0 hi\u1ec7u qu\u1ea3 \u0111\u00e0o t\u1ea1o nh\u00e2n s\u1ef1 m\u1edbi. Kinh nghi\u1ec7m n\u00e0y \u0111\u00e3 l\u00e0m r\u00f5 b\u1ed1n th\u1ef1c h\u00e0nh t\u1ed1t nh\u1ea5t b\u1ec1n v\u1eefng:<\/p>\n<table data-nodeid=\"6232\">\n<thead data-nodeid=\"6233\">\n<tr data-nodeid=\"6234\">\n<th align=\"left\" data-nodeid=\"6236\">Th\u1ef1c h\u00e0nh<\/th>\n<th align=\"left\" data-nodeid=\"6237\">L\u00fd do<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"6240\">\n<tr data-nodeid=\"6241\">\n<td align=\"left\" data-nodeid=\"6242\"><strong data-nodeid=\"6507\">1. M\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng\u00a0<code data-backticks=\"1\" data-nodeid=\"6504\">\u00abaccess\u00bb<\/code>\u00a0cho c\u00e1c ph\u1ee5 thu\u1ed9c n\u1ed9i b\u1ed9<\/strong><\/td>\n<td align=\"left\" data-nodeid=\"6243\">Truy c\u1eadp ri\u00eang t\u01b0 \u0111\u1ea3m b\u1ea3o t\u00ednh \u0111\u00f3ng g\u00f3i ch\u1eb7t ch\u1ebd. C\u00e1c g\u00f3i ph\u00eda d\u01b0\u1edbi ch\u1ec9 th\u1ea5y c\u00e1c h\u1ee3p \u0111\u1ed3ng \u0111\u01b0\u1ee3c c\u00f4ng khai r\u00f5 r\u00e0ng, ng\u0103n ng\u1eeba vi\u1ec7c k\u1ebf th\u1eeba v\u00f4 t\u00ecnh c\u00e1c ph\u1ee5 thu\u1ed9c s\u00e2u, truy\u1ec1n d\u1eabn.<\/td>\n<\/tr>\n<tr data-nodeid=\"6244\">\n<td align=\"left\" data-nodeid=\"6245\"><strong data-nodeid=\"6512\">2. B\u1ea3o v\u1ec7 c\u00e1c mi\u1ec1n c\u1ed1t l\u00f5i<\/strong><\/td>\n<td align=\"left\" data-nodeid=\"6246\">C\u00e1c g\u00f3i logic kinh doanh kh\u00f4ng bao gi\u1edd \u0111\u01b0\u1ee3c\u00a0<code data-backticks=\"1\" data-nodeid=\"6514\">\u00abimport\u00bb<\/code>\u00a0ho\u1eb7c\u00a0<code data-backticks=\"1\" data-nodeid=\"6516\">\u00abaccess\u00bb<\/code>\u00a0c\u00e1c khung c\u00f4ng ngh\u1ec7 giao h\u00e0ng (giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng, l\u01b0u tr\u1eef, tin nh\u1eafn). C\u00e1c ph\u1ee5 thu\u1ed9c ph\u1ea3i lu\u00f4n ch\u1ea3y t\u1eeb ngo\u00e0i v\u00e0o trong h\u01b0\u1edbng t\u1edbi l\u00f5i \u1ed5n \u0111\u1ecbnh.<\/td>\n<\/tr>\n<tr data-nodeid=\"6247\">\n<td align=\"left\" data-nodeid=\"6248\"><strong data-nodeid=\"6523\">3. Gi\u1eef c\u00e1c bi\u1ec7t danh d\u1ec5 \u0111\u1ecdc v\u00e0 tr\u00ean to\u00e0n h\u1ec7 th\u1ed1ng<\/strong><\/td>\n<td align=\"left\" data-nodeid=\"6249\">S\u1eed d\u1ee5ng ti\u1ec1n t\u1ed1 c\u00f3 th\u1ec3 d\u1ef1 \u0111o\u00e1n \u0111\u01b0\u1ee3c (v\u00ed d\u1ee5:\u00a0<code data-backticks=\"1\" data-nodeid=\"6525\">{alias = LegacyInventoryCatalog}<\/code>\u00a0ho\u1eb7c\u00a0<code data-backticks=\"1\" data-nodeid=\"6527\">{alias = RegistryUser}<\/code>). Tr\u00e1nh c\u00e1c ch\u1eef vi\u1ebft t\u1eaft kh\u00f3 hi\u1ec3u l\u00e0m m\u1edd \u0111i ngu\u1ed3n g\u1ed1c th\u1ef1c s\u1ef1 c\u1ee7a l\u1edbp n\u1ec1n t\u1ea3ng.<\/td>\n<\/tr>\n<tr data-nodeid=\"6250\">\n<td align=\"left\" data-nodeid=\"6251\"><strong data-nodeid=\"6532\">4. T\u1eadn d\u1ee5ng PlantUML \u0111\u1ec3 t\u00e0i li\u1ec7u h\u00f3a m\u1ee5c \u0111\u00edch<\/strong><\/td>\n<td align=\"left\" data-nodeid=\"6252\">Bi\u1ec3u \u0111\u1ed3 l\u00e0 c\u00f4ng c\u1ee5 giao ti\u1ebfp. S\u1eed d\u1ee5ng c\u00e1c \u0111i\u1ec1u khi\u1ec3n \u0111\u1ecbnh h\u01b0\u1edbng, c\u00e1c \u0111o\u1ea1n ng\u1eafn l\u1ea1i v\u00e0 ghi ch\u00fa trong d\u00f2ng \u0111\u1ec3 l\u00e0m r\u00f5 c\u00e1c ranh gi\u1edbi ki\u1ebfn tr\u00fac v\u00e0 l\u00fd do v\u1ec1 ph\u1ee5 thu\u1ed9c.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"6253\"\/>\n<h2 data-nodeid=\"6254\">K\u1ebft lu\u1eadn<\/h2>\n<p data-nodeid=\"6255\">C\u01a1 ch\u1ebf nh\u1eadp g\u00f3i v\u00e0 truy c\u1eadp c\u1ee7a UML 2.0 kh\u00f4ng ch\u1ec9 \u0111\u01a1n thu\u1ea7n l\u00e0 c\u00fa ph\u00e1p v\u1ebd bi\u1ec3u \u0111\u1ed3; ch\u00fang l\u00e0 m\u1ed9t\u00a0<strong data-nodeid=\"6546\">b\u1ea3n thi\u1ebft k\u1ebf cho vi\u1ec7c \u0111\u00f3ng g\u00f3i theo m\u00f4-\u0111un<\/strong>. B\u1eb1ng c\u00e1ch ch\u1ee7 \u00fd l\u1ef1a ch\u1ecdn gi\u1eefa\u00a0<code data-backticks=\"1\" data-nodeid=\"6540\">\u00abimport\u00bb<\/code>\u00a0(truy\u1ec1n d\u1eabn, t\u00e1i xu\u1ea5t c\u00f4ng khai) v\u00e0\u00a0<code data-backticks=\"1\" data-nodeid=\"6542\">\u00abaccess\u00bb<\/code>\u00a0(\u0111\u00f3ng g\u00f3i, ti\u00eau th\u1ee5 ri\u00eang t\u01b0), c\u00e1c ki\u1ebfn tr\u00fac s\u01b0 c\u00f3 th\u1ec3 \u0111\u1ecbnh r\u00f5 ch\u00ednh x\u00e1c c\u00e1ch c\u00e1c kh\u00f4ng gian t\u00ean lan truy\u1ec1n qua h\u1ec7 th\u1ed1ng. Khi k\u1ebft h\u1ee3p v\u1edbi Nh\u1eadp ph\u1ea7n t\u1eed c\u00f3 m\u1ee5c ti\u00eau,\u00a0<code data-backticks=\"1\" data-nodeid=\"6544\">{alias}<\/code>\u00a0gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t, v\u00e0 k\u1ef7 lu\u1eadt hi\u1ec3n th\u1ecb nghi\u00eam ng\u1eb7t, c\u00e1c c\u1ea5u tr\u00fac n\u00e0y bi\u1ebfn c\u00e1c ph\u1ee5 thu\u1ed9c gi\u1eefa c\u00e1c g\u00f3i t\u1eeb m\u1ed9t ngu\u1ed3n b\u1ea5t \u1ed5n th\u00e0nh m\u1ed9t l\u1edbp \u0111\u1ecbnh tuy\u1ebfn \u0111\u01b0\u1ee3c ki\u1ec3m so\u00e1t, c\u00f3 th\u1ec3 d\u1ef1 \u0111o\u00e1n.<\/p>\n<p class=\"\" data-nodeid=\"6256\">Nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p NexusPay cho th\u1ea5y kh\u1ea3 n\u0103ng ph\u1ee5c h\u1ed3i ki\u1ebfn tr\u00fac kh\u00f4ng \u0111\u00f2i h\u1ecfi c\u00e1c d\u1ecbch v\u1ee5 vi m\u00f4 ph\u1ee9c t\u1ea1p hay chi ph\u00ed overhead l\u1edbn t\u1eeb khung c\u00f4ng t\u00e1c. N\u00f3 \u0111\u00f2i h\u1ecfi<strong data-nodeid=\"6556\">thi\u1ebft k\u1ebf ranh gi\u1edbi c\u00f3 ch\u1ee7 \u00fd<\/strong>. Khi c\u00e1c h\u1ec7 th\u1ed1ng ti\u1ebfp t\u1ee5c m\u1edf r\u1ed9ng v\u1ec1 quy m\u00f4 v\u00e0 ph\u00e2n b\u1ed1 \u0111\u1ed9i ng\u0169, vi\u1ec7c n\u1eafm v\u1eefng ng\u1eef ngh\u0129a nh\u1eadp v\u00e0 truy c\u1eadp c\u1ee7a UML 2.0 cung c\u1ea5p m\u1ed9t b\u1ed9 t\u1eeb v\u1ef1ng n\u1ec1n t\u1ea3ng \u0111\u1ec3 x\u00e2y d\u1ef1ng ph\u1ea7n m\u1ec1m v\u1eabn duy tr\u00ec \u0111\u01b0\u1ee3c kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec, an to\u00e0n v\u00e0 t\u00e1ch r\u1eddi r\u00f5 r\u00e0ng theo th\u1eddi gian.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gi\u1edbi thi\u1ec7u Ph\u1ea7n m\u1ec1m doanh nghi\u1ec7p hi\u1ec7n \u0111\u1ea1i hi\u1ebfm khi t\u1ed3n t\u1ea1i d\u01b0\u1edbi d\u1ea1ng m\u1ed9t kh\u1ed1i \u0111\u01a1n nh\u1ea5t. Khi c\u00e1c h\u1ec7 th\u1ed1ng m\u1edf r\u1ed9ng th\u00e0nh c\u00e1c ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n, \u0111a module, c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ch\u1eafc ch\u1eafn ph\u1ea3i \u0111\u1ed1i m\u1eb7t v\u1edbi nh\u1eefng th\u00e1ch th\u1ee9c nh\u01b0\u00a0\u00f4 nhi\u1ec5m kh\u00f4ng gian t\u00ean,\u00a0s\u1ef1 lan r\u1ed9ng c\u1ee7a c\u00e1c ph\u1ee5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11678,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-11677","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","loop-entry","clr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0 - Visual Paradigm Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0 - Visual Paradigm Blog\" \/>\n<meta property=\"og:description\" content=\"Gi\u1edbi thi\u1ec7u Ph\u1ea7n m\u1ec1m doanh nghi\u1ec7p hi\u1ec7n \u0111\u1ea1i hi\u1ebfm khi t\u1ed3n t\u1ea1i d\u01b0\u1edbi d\u1ea1ng m\u1ed9t kh\u1ed1i \u0111\u01a1n nh\u1ea5t. Khi c\u00e1c h\u1ec7 th\u1ed1ng m\u1edf r\u1ed9ng th\u00e0nh c\u00e1c ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n, \u0111a module, c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ch\u1eafc ch\u1eafn ph\u1ea3i \u0111\u1ed1i m\u1eb7t v\u1edbi nh\u1eefng th\u00e1ch th\u1ee9c nh\u01b0\u00a0\u00f4 nhi\u1ec5m kh\u00f4ng gian t\u00ean,\u00a0s\u1ef1 lan r\u1ed9ng c\u1ee7a c\u00e1c ph\u1ee5 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/\" \/>\n<meta property=\"og:site_name\" content=\"Visual Paradigm Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-22T00:35:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-30T07:18:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png\" \/><meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1097\" \/>\n\t<meta property=\"og:image:height\" content=\"471\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/\",\"name\":\"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0 - Visual Paradigm Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/05\/img_6a0eef2f2d3de.png\",\"datePublished\":\"2026-05-22T00:35:52+00:00\",\"dateModified\":\"2026-05-30T07:18:40+00:00\",\"author\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#primaryimage\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/05\/img_6a0eef2f2d3de.png\",\"contentUrl\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/05\/img_6a0eef2f2d3de.png\",\"width\":1097,\"height\":471},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.visual-paradigm.com\/vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#website\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/\",\"name\":\"Visual Paradigm Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.visual-paradigm.com\/vn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g\",\"caption\":\"Admin\"},\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/author\/vpadminuser\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0 - Visual Paradigm Blog","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:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/","og_locale":"vi_VN","og_type":"article","og_title":"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0 - Visual Paradigm Blog","og_description":"Gi\u1edbi thi\u1ec7u Ph\u1ea7n m\u1ec1m doanh nghi\u1ec7p hi\u1ec7n \u0111\u1ea1i hi\u1ebfm khi t\u1ed3n t\u1ea1i d\u01b0\u1edbi d\u1ea1ng m\u1ed9t kh\u1ed1i \u0111\u01a1n nh\u1ea5t. Khi c\u00e1c h\u1ec7 th\u1ed1ng m\u1edf r\u1ed9ng th\u00e0nh c\u00e1c ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n, \u0111a module, c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ch\u1eafc ch\u1eafn ph\u1ea3i \u0111\u1ed1i m\u1eb7t v\u1edbi nh\u1eefng th\u00e1ch th\u1ee9c nh\u01b0\u00a0\u00f4 nhi\u1ec5m kh\u00f4ng gian t\u00ean,\u00a0s\u1ef1 lan r\u1ed9ng c\u1ee7a c\u00e1c ph\u1ee5 [&hellip;]","og_url":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/","og_site_name":"Visual Paradigm Blog","article_published_time":"2026-05-22T00:35:52+00:00","article_modified_time":"2026-05-30T07:18:40+00:00","og_image":[{"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png","type":"","width":"","height":""},{"width":1097,"height":471,"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png","type":"image\/png"}],"author":"Admin","twitter_card":"summary_large_image","twitter_image":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0eef2f2d3de.png","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Admin","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"15 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/","url":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/","name":"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0 - Visual Paradigm Blog","isPartOf":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#primaryimage"},"image":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/05\/img_6a0eef2f2d3de.png","datePublished":"2026-05-22T00:35:52+00:00","dateModified":"2026-05-30T07:18:40+00:00","author":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6"},"breadcrumb":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#primaryimage","url":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/05\/img_6a0eef2f2d3de.png","contentUrl":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/05\/img_6a0eef2f2d3de.png","width":1097,"height":471},{"@type":"BreadcrumbList","@id":"https:\/\/blog.visual-paradigm.com\/vn\/architectural-encapsulation-in-practice-a-uml-2-0-package-import-access-case-study\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.visual-paradigm.com\/vn\/"},{"@type":"ListItem","position":2,"name":"Bao b\u1ecdc ki\u1ebfn tr\u00fac trong th\u1ef1c ti\u1ec5n: M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 Nh\u1eadp g\u00f3i v\u00e0 Truy c\u1eadp UML 2.0"}]},{"@type":"WebSite","@id":"https:\/\/blog.visual-paradigm.com\/vn\/#website","url":"https:\/\/blog.visual-paradigm.com\/vn\/","name":"Visual Paradigm Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.visual-paradigm.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6","name":"Admin","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g","caption":"Admin"},"url":"https:\/\/blog.visual-paradigm.com\/vn\/author\/vpadminuser\/"}]}},"modified_by":"Admin","_links":{"self":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts\/11677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/comments?post=11677"}],"version-history":[{"count":0,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts\/11677\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/media\/11678"}],"wp:attachment":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/media?parent=11677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/categories?post=11677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/tags?post=11677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}