Skip to main content
Publish/Consume là cơ chế chia sẻ dữ liệu giữa các app trong Cleeksy DOP theo mô hình provider → consumer:
  • Provider app chọn dữ liệu cần chia sẻ (publish) dưới dạng một dataset (tập record + field cho phép + điều kiện lọc).
  • Consumer app sử dụng dữ liệu đã publish khi cấu hình Data source loại Connected app và các field như Data Connection / Lookup / Rollup.
Mục tiêu của publish/consume là:
  • Chốt ownershipsource of truth (nguồn dữ liệu chuẩn) theo từng app
  • Cho phép kết nối end-to-end mà vẫn kiểm soát quyền truy cập
  • Giảm việc sao chép dữ liệu giữa các app
Liên quan:

1) Khi nào cần publish/consume?

Publish/consume phù hợp khi:
  • Dữ liệu thuộc ownership của một app khác nhưng cần dùng trong app hiện tại
  • Cần bàn giao công việc giữa các nhóm (ví dụ: Request → Procurement)
  • Cần hiển thị hoặc tổng hợp dữ liệu từ app khác trong dashboard/report
Nếu dữ liệu nằm trong cùng app, thường không cần publish/consume; có thể liên kết nội bộ bằng Data Connection và dùng Lookup/Rollup theo thiết kế.

2) “Dataset” trong publish nghĩa là gì?

Dataset (tập dữ liệu publish) thường bao gồm:
  • Nguồn record: từ một Entity hoặc một tập record theo filter
  • Field được phép chia sẻ: chỉ publish các field đủ dùng
  • Điều kiện lọc: giới hạn phạm vi record được chia sẻ (theo trạng thái, phòng ban, thời gian…)
  • Quyền truy cập: ai/role nào ở consumer được dùng dataset này
Publish/consume không tạo “bảng dữ liệu mới”. Dữ liệu vẫn nằm trong Entity của provider app.

3) Cách publish (provider app)

Thiết lập publish nên theo thứ tự:
  1. Chốt ownership: dataset này do provider chịu trách nhiệm cập nhật
  2. Chọn Entity và phạm vi record cần chia sẻ (filter)
  3. Chọn field được phép chia sẻ
  4. Thiết lập quyền truy cập (ai/role nào được dùng)
  5. Đặt tên dataset rõ ràng (ví dụ: “Approved Purchase Requests”)
Thực hành tốt:
  • Publish “đủ dùng”: tránh publish quá rộng
  • Đặt tiêu chí rõ: record nào được chia sẻ (ví dụ: Status = Approved)

4) Cách consume (consumer app)

Consumer app sử dụng dữ liệu đã publish thông qua Data source loại Connected app. Điểm quan trọng:
  • Không cần “làm một bước consume riêng” rồi mới tạo field.
  • Trong thực tế, consume xảy ra trong lúc cấu hình Connected app hoặc khi cấu hình field cần dùng dữ liệu (Data Connection/Lookup/Rollup). Hệ thống sẽ yêu cầu chọn dataset đã publish và xác nhận quyền truy cập.
Sau khi kết nối xong, dataset đã publish trở thành dữ liệu “có thể chọn” trong:

5) Tác động phân quyền (permission implications)

Publish/consume luôn chịu ràng buộc quyền từ cả hai phía:

Quyền từ provider (giới hạn tối đa)

  • Provider quyết định record nào và field nào được chia sẻ.
  • Consumer không thể đọc/ghi vượt quá phạm vi provider đã publish.

Quyền trong consumer (giới hạn theo vai trò người dùng)

  • Trong consumer app, từng role vẫn chỉ thấy/được thao tác theo permissions nội bộ.
  • Một dataset được consume chỉ nên “lộ” với các role thực sự cần dùng.
Thực hành tốt:
  • Tách dataset theo mục tiêu nghiệp vụ (ví dụ: “Approved” vs “All”)
  • Không publish field nhạy cảm nếu không cần
Liên quan: Mô hình phân quyền (Permissions model)

6) One-way vs two-way (hướng dẫn chọn)

Publish/consume là cơ chế chia sẻ dữ liệu; còn hướng trao đổi thường thể hiện qua Data Connection.

One-way (một chiều)

Dùng khi cần bàn giao/submit dữ liệu và chốt ownership rõ:
  • App A gửi dữ liệu sang App B để App B xử lý
  • App B là source of truth cho phần dữ liệu mà B vận hành
Liên quan:

Two-way (hai chiều)

Dùng khi cần đồng bộ hai phía và có lý do rõ ràng:
  • Hai app cùng cần cập nhật và cùng cần thấy thay đổi
  • Có guardrail để tránh xung đột và coupling quá chặt
Chỉ nên dùng khi:
  • Trách nhiệm cập nhật đã được định nghĩa rất rõ
  • Có quy tắc xử lý xung đột hoặc hạn chế phạm vi field đồng bộ
Liên quan: Kết nối dữ liệu hai chiều (Data Connection two-way)

7) Ví dụ ngắn: Purchase Request → Procurement (bàn giao)

Mục tiêu: Purchase Request bàn giao yêu cầu đã duyệt sang Procurement để thực hiện mua sắm. Thiết lập gợi ý:
  1. Procurement publish/cho phép dataset và kênh nhận (Connected app) theo phạm vi cần thiết
  2. Purchase Request dùng Data Connection (một chiều) để submit dữ liệu sang Procurement khi Approved
  3. (Tuỳ chọn) Procurement publish trạng thái để Purchase Request tham chiếu tiến độ

Checklist nhanh

  • Provider chốt ownership và publish “đủ dùng”
  • Consumer chỉ consume dataset cần thiết cho nghiệp vụ
  • Permission được kiểm tra ở cả provider và consumer
  • One-way ưu tiên cho bàn giao; two-way chỉ dùng khi có lý do rõ