Nhảy đến nội dung chính

TRANG 1: Sơ đồ luồng hoạt động tổng quát (Sequence Diagram)

Hệ thống đồng bộ của LGSP không chạy theo lịch cứng mà chạy theo cơ chế "Quét và Đánh giá" (Scan & Evaluate) dựa trên cấu hình linh hoạt trong Database.

image.png

 

Sau khi Task kích hoạt, hệ thống sẽ đi qua một chuỗi các Sequence có nhiệm vụ chuyên biệt để đảm bảo tính an toàn và linh hoạt.

 

1.1. Bước 1: Quản lý Luồng (ManagerEvaluateTasksSequence)

Đây là sequence "cửa ngõ". Nhiệm vụ chính:

  • Kiểm soát concurrency: Sử dụng dataServiceCall tới bảng sync_lock. Nếu có một tiến trình RunTaskSequence trước đó chưa kết thúc (vẫn đang is_locked=1), nó sẽ dừng ngay lập tức.
  • Phân tách dữ liệu: Sử dụng mediator <iterate> để biến danh sách Task từ Database thành từng gói tin độc lập cho mỗi Task.

1.2. Bước 2: Đánh giá Cron (EvaluateSingleTaskSequence)

Với mỗi Task được tách ra, bộ Evaluator sẽ:

  • Trích xuất cron_expression (ví dụ: 0 */15 * * * ? - chạy mỗi 15 phút).
  • Sử dụng Script Mediator (JavaScript) để tính toán thời gian chạy tiếp theo.
  • Kết quả: Nếu thỏa mãn điều kiện thời gian, nó sẽ nạp biến shouldRun = true vào Message Context.

1.3. Bước 3: Bộ định tuyến động (RunTaskSequence)

Sequence này đóng vai trò là "Cầu giao điện" tổng. Nó thực hiện:

  • Khóa hệ thống: Gọi lockSync để ngăn các Task khác nhảy vào chiếm dụng tài nguyên.
  • Điều hướng (Switch Mediator): Dựa vào tên Sequence lưu trong database (sequence_name), nó sẽ điều hướng tới logic nghiệp vụ thật sự:
    • MultiEndpointSyncSequence: Đồng bộ hóa đa điểm tiêu chuẩn.
    • DongBoDVLTSequence: Đồng bộ dữ liệu dịch vụ lưu trú (Sử dụng BatchInsertMediator để nạp dữ liệu lớn).
    • DongboVBDenEdocSequence: Chuyên trách đồng bộ Văn bản điện tử.
  • Hoàn tất: Sau khi nghiệp vụ chạy xong, nó cập nhật last_run vào DB và thực hiện unlockSync.

sequence_lgsp.jpg