1.Cấu trúc dự án
## 1.1. Mục tiêuTiêu chươngChương
Chương này quy định cấu trúc dự án chuẩn và phạm vi quản lý mã nguồnartifact giữa **Core TeamTeam** và các đơn vị Partner**Partner** nhằm:
- -
Đảm bảo tính ổn định của hệ thống
tích - hợp
- Tránh xung đột mãcấu nguồnhình và artifact giữa các đơn vị phát triển
-
Chuẩn hóa cách tổ chức codeintegration artifact trong toàn dự án
-
Dễ dàng bảo trì, mở rộng và tíchtriển hợpkhai hệ thống
---
## 1.2. Khái niệmNiệm / phạmPhạm viVi ápÁp dụngDụng
Tài liệu áp dụng cho:
- -
Tất cả các dự án sử dụng cấunền trúctảng chuẩn**WSO2 củaMicro hệIntegrator thống
(WSO2 MI)**
- -
**Core TeamTeam** (đội phát triển lõi)
lõi — - quản
lý hạ tầng, kết nối, cấu hình)
- **Partner TeamTeam** (đối tác phát triển module)luồng nghiệp vụ)
### Cấu Trúc Dự Án Chuẩn
## 1.1. Mục
- -
Đảm bảo tính ổn định của hệ thống
tích- hợp
- Tránh xung độtmãcấunguồnhình và artifact giữa các đơn vị phát triển Chuẩn hóa cách tổ chức
codeintegration artifact trong toàn dự ánDễ dàng bảo trì, mở rộng và
tíchtriểnhợpkhai hệ thống
## 1.2. Khái niệmNiệm / phạmPhạm viVi ápÁp dụngDụng
- -
Tất cả các dự án sử dụng
(WSO2 MI)**cấunềntrúctảngchuẩn**WSO2củaMicrohệIntegratorthống - -
**Core
lõi —TeamTeam** (đội phát triểnlõi)- quản
lý hạ tầng, kết nối, cấu hình)
- **PartnerTeamTeam** (đối tác phát triểnmodule)luồng nghiệp vụ)
### Cấu Trúc Dự Án Chuẩn - quản
* Root level
.mvn, mvnw, pom.xml
Project build bằng Maven
-
pom.xml→ quản lý dependency, plugin build WSO2 -
.mvn→ config Maven wrapper
+ deployment/
Cấu trúchình dựruntime án& chuẩn:deploy
-
deployment.toml→ config server (port, datasource, kafka...) -
docker/→ chạy container (nếu có) -
libs/→ thêm JAR custom (Kafka client, connector...)
+ docs/
👉 Tài liệu project (thiết kế, API spec...)
* Source chính
+ src/main/java
Nếu có custom Java (hiện tại bạn chưa dùng)
+ src/main/wso2mi ⭐ (QUAN TRỌNG NHẤT)
Đây là toàn bộ logic integration
+ artifacts/ (TRÁI TIM HỆ THỐNG)
+ apis/
API nhận request từ client
-
KafkaProducerApi.xml
→ API nhận request → đẩy vào Kafka (producer) -
PlanningDirectApi.xml
→ API gọi trực tiếp backend (không qua Kafka)
+ inbound-endpoints/
Kafka Consumer (cực kỳ quan trọng)
-
Load_balance_example.xml
→ Lắng nghe Kafka topic
→ Khi có message → trigger sequence xử lý
Đây chính là chỗ load balancing bằng Kafka
+ sequences/
Logic xử lý nghiệp vụ
-
Load_balance_example-inboundSequence.xml
→ Xử lý message lấy từ Kafka
→ gọi backend -
Load_balance_example-inboundErrorSequence.xml
→ xử lý lỗi khi fail
+ endpoints/
Định nghĩa backend service
com.example.demoVí dụ:
-
HTTP endpoint
-
REST API backend
+ local-entries/
Config dùng chung
-
KafkaConnection.xml
→ cấu hình Kafka broker (host, port, topic...)
+ message-stores/
Lưu message (queue trung gian)
├──Dùng common/khi:
-
retry
-
đảm bảo không mất dữ liệu
+ message-processors/
Xử lý message từ store
├──Ví config/dụ:
-
retry gửi lại
-
xử lý batch
+ proxy-services/
Proxy service (cấu hình hệ thống)SOAP/HTTP)
├──Thường modules/dùng khi:
-
wrap service cũ
-
expose service trung gian
+ data-services/
Kết nối database
└──Tạo DemoApplication.javaAPI CRUD trực tiếp DB
Ý nghĩa từng khu vực
| data-sources/
|
|
|
|
|
|
|
|
|
|
|
|
+ resources/
+ resources/👉 Tài nguyên bổ trợ
-
conf/→ config runtime (properties) -
connectors/→ Kafka connector JAR -
api-definitions/→ Swagger/OpenAPI -
metadata/→ metadata của artifact
### Phân quyềnQuyền quảnQuản lýLý codeArtifact
|
Khu vực
|
Đơn vị quản lý
|
Quyền chỉnh sửa
|
|---|---|---|
|
common/`deployment/**
` |
Core Team
|
Partner không**không** được sửa
|
|
config/`artifacts/local-entries/**
` |
Core Team
|
Partner không**không** được sửa
|
|
modules/`resources/conf/**
` | Core Team | Partner **không** được sửa |
| `resources/connectors/**` | Core Team | Partner **không** được sửa |
| `artifacts/apis/**` | Core + Partner |
Được phép phát triển
|
| `artifacts/sequences/**` | Core + Partner | Được phép phát triển |
| `artifacts/inbound-endpoints/**` | Core + Partner | Được phép phát triển |
| `artifacts/endpoints/**` | Core + Partner | Được phép phát triển |
### Quy địnhĐịnh bắtBắt buộcBuộc
Khu vực | | Đơn vị quản lý | | Quyền chỉnh sửa | |
| | Core Team | | Partner | |
| | Core Team | | Partner | |
| | Core Team | Partner **không** được sửa | | `resources/connectors/**` | Core Team | Partner **không** được sửa |
| `artifacts/apis/**` | Core + Partner | | Được phép phát triển |
common/**
config/
- 1.
Tạo yêu cầu thay đổi (**Core Change
Request**)Request) Được Core Team xem xét
và - đánh
giá
## 1.4. Cách thựcThực hiệnHiện / quy trình
Quy trìnhTrình
thay
đổi### codeQuy dùngTrình chungThay Đổi Artifact Dùng Chung
**Bước 1:** Partner phát hiện nhu cầu thay đổi ở khu vực Core quản lý.
**Bước 2:** Tạo ticket vớitrên tiêuhệ đề: các phần mềmthống quản lý công việc liên quan (Jira / Redmine / YouTrack) hoặcvới nộitiêu bộđề:
Quy trìnhTrình
Đổi Artifact Dùng Chung
**Luồng xử lý:**
- Partner tạo ticket
→ →Core Team review
- Cập
→ Core thực hiện → Partner pull code
tháiChuyểnnhật trạngthái:```
**Bảngtrạng thái |ticket:**
| Trạng thái |Ý nghĩa
|---|---| ||`Open`
|Open tạoTicket mới
| |`Under
Review`ReviewCore |CoreTeam đang đánh giá|`Approved` | Approved |Đồng ý thực hiện thay đổi
|`Rejected` lý| Rejected (cóTừ chối
do) | `Implemented`Implemented|| |Core Team đã hoàn thành code
|`Merged` | Merged `develop`Đã merge vào
nhánhdevelop|
- -
Phạm vi ảnh hưởng
đến- các
luồng hiện có
- Rủi rohệkhithống
thay đổi- cấu
hình kết nối Kafka
- Tính cần thiết và tính ổn định của hệ thống
- các
- -
Core Team thực hiện thay đổi
Merge vào nhánh
develop`develop`
---
## 1.5. Ví dụDụ minhMinh họaHọa
### ✅ Trường hợpHợp hợpHợp lệLệ
modules/planning/service/PlanningService.java
sequence Kafka:
Request.
common/security/JwtAuthenticationFilter.java
mới vào connection:
Tạo
CHANGECoreticket:Change`[CORERequestREQUEST] - Thêm
topic planning_topic vào KafkaConnection`
Core Team thực hiện thay đổi
và merge- [
`artifacts/apis/`,Code] Artifact nằm trongmodules/**`artifacts/sequences/`, - `artifacts/inbound-endpoints/`,
hoặc `artifacts/endpoints/`
- [
] Không sửa
`config/`deployment/** - [
] Không sửa `resources/conf/**`
---
**Tình huống:** Partner muốn thay đổi địa chỉ Kafka bootstrap server:
```
deployment/deployment.toml
resources/conf/config.properties
```
→ **Không được** sửa trực tiếp. Phải tạo Core Change Request.
---
## 1.6. Checklist ápÁp dụngDụng
`
