Joomla Bài học 10: Quản lý quy trình xuất bản nội dung chuyên nghiệp với Workflows (Luồng công việc)
Chào mừng bạn đến với Joomla Bài học 10. Trong một trang blog cá nhân, tác giả viết bài xong có thể bấm "Đăng" (Publish) ngay lập tức. Tuy nhiên, tại các cơ quan báo chí, cổng thông tin doanh nghiệp hay hệ thống thương mại điện tử lớn, một bài viết phải đi qua nhiều khâu kiểm duyệt: Phóng viên viết bài -> Biên tập viên sửa lỗi -> Trưởng ban duyệt nội dung -> Xuất bản.
Tính năng Workflows trong Joomla 5 sinh ra để giải quyết bài toán này một cách tự động, chặt chẽ và tích hợp sâu với hệ thống phân quyền ACL.
1. Bản chất kỹ thuật của Workflows: Mô hình State Machine
Trước Joomla 4, trạng thái của một bài viết bị bó buộc cứng vào 4 giá trị cố định trong cột state của bảng #__content: Published (1), Unpublished (0), Archived (2), và Trashed (-2).
Với Workflows, Joomla tách rời "trạng thái hiển thị vật lý" và "giai đoạn trong quy trình làm việc" thông qua 3 khái niệm cốt lõi của một State Machine:
-
Workflow (Luồng công việc): Khung quy trình tổng thể được gán cho một hoặc nhiều Category cụ thể (Ví dụ: Quy trình duyệt tin tức báo chí, Quy trình duyệt thông cáo báo chí).
-
Stages (Các giai đoạn / Trạng thái): Các điểm dừng mà bài viết đang nằm ở đó (Ví dụ: Bản nháp (Draft), Chờ biên tập (Pending Review), Cần chỉnh sửa lại (Needs Revision), Đã duyệt & Xuất bản (Published)).
-
Transitions (Các bước chuyển tiếp): Hành động chuyển bài viết từ Stage A sang Stage B. Điểm ăn tiền nhất ở đây là mỗi Transition được phân quyền ACL riêng biệt (Ví dụ: Chỉ nhóm Editor mới thấy và bấm được nút chuyển từ Bản nháp sang Chờ duyệt).
2. Kích hoạt và Cấu hình một Workflow thực tế
Mặc định, tính năng Workflows nâng cao đang ở trạng thái ẩn để tránh làm rối người dùng cơ bản. Để bật lên:
Bước 1: Bật Workflows trong cấu hình Articles
-
Truy cập Content -> Articles -> Bấm vào nút Options (góc trên bên phải).
-
Chuyển sang tab Integration -> Tìm mục Enable Workflow và chuyển sang Yes -> Bấm Save & Close.
-
Ngay lập tức, dưới menu Content ở thanh bên trái sẽ xuất hiện mục Workflows.
Bước 2: Thiết kế Stages và Transitions (Ví dụ tòa soạn báo 3 cấp)
Truy cập Content -> Workflows -> Tạo một Workflow mới tên là Quy trình Tòa soạn:
-
Thiết lập 4 Stages:
-
1. Đang viết (Draft)- Mặc định (Default), trạng thái ẩn (Unpublished). -
2. Chờ Biên tập (In Review)- Trạng thái ẩn (Unpublished). -
3. Yêu cầu sửa lại (Rejected)- Trạng thái ẩn (Unpublished). -
4. Xuất bản (Live)- Trạng thái hiển thị công khai (Published).
-
-
Thiết lập các Transitions (Luồng di chuyển):
-
Gửi bài duyệt: Từ
1. Đang viết2. Chờ Biên tập(Phân quyền cho nhóm Author). -
Trả bài yêu cầu sửa: Từ
2. Chờ Biên tập3. Yêu cầu sửa lại(Phân quyền cho nhóm Editor). -
Gửi duyệt lại: Từ
3. Yêu cầu sửa lại2. Chờ Biên tập(Phân quyền cho nhóm Author). -
Phê duyệt & Đăng bài: Từ
2. Chờ Biên tập4. Xuất bản(Phân quyền cho nhóm Publisher / Manager).
-
3. Các Workflow Plugins tự động hóa đi kèm
Khi một Transition được thực thi, Joomla kích hoạt các sự kiện (Events) thông qua nhóm plugin workflow. Joomla 5 tích hợp sẵn 3 plugin cực kỳ hữu ích:
-
Workflow - Publishing: Tự động thay đổi trạng thái vật lý của bài viết (ví dụ: khi chạy Transition Phê duyệt & Đăng bài, plugin này tự động chuyển cột
statecủa bài viết sang1 - Published). -
Workflow - Featuring: Tự động đánh dấu hoặc gỡ đánh dấu bài viết nổi bật (Featured) khi đi qua một bước chuyển tiếp nhất định.
-
Workflow - Notification: Tự động gửi Email/Tin nhắn hệ thống cho nhóm người dùng có quyền ở bước tiếp theo (Ví dụ: Khi phóng viên bấm Gửi bài duyệt, hệ thống lập tức bắn email thông báo cho các Biên tập viên vào kiểm tra bài).
4. Giải phẫu cấu trúc Database của Workflows (Góc nhìn Backend)
Để quản lý luồng công việc mà không phá vỡ cấu trúc bảng #__content truyền thống, Joomla sử dụng 4 bảng chuyên biệt trong MySQL:
-
#__workflows: Lưu danh sách các Workflows tổng. -
#__workflow_stages: Lưu danh sách các giai đoạn (Stages) thuộc về từng Workflow. -
#__workflow_transitions: Lưu cấu hình các bước chuyển (from_stage_idsangto_stage_id) cùng chuỗi JSON cấu hình hành động (options). -
#__workflow_associations: Bảng trung gian quan trọng nhất nối bài viết với giai đoạn hiện tại:-
item_id: ID của bài viết (trỏ tới#__content.id). -
stage_id: ID giai đoạn hiện tại (trỏ tới#__workflow_stages.id). -
extension: Định danh component (ví dụ:'com_content.article').
-
Nhờ thiết kế bảng associations tách rời với cột extension, bạn hoàn toàn có thể tích hợp hệ thống Workflow có sẵn này của Joomla vào các Custom Component do chính bạn tự lập trình ở Phần 5 của series!
5. Tổng kết bài học & Khép lại Phần 1
-
Nắm vững tư duy State Machine trong quản trị nội dung với 3 thành phần: Workflows, Stages và Transitions.
-
Biết cách kích hoạt và thiết kế quy trình duyệt bài nhiều cấp kết hợp gửi thông báo tự động qua Workflow Plugins.
-
Hiểu rõ cấu trúc 4 bảng dữ liệu
#__workflow_*ở tầng MySQL để sẵn sàng tái sử dụng cho các ứng dụng tự viết.
Vậy là chúng ta đã hoàn thành trọn vẹn 10 bài học đầu tiên (Phần 1). Ở Bài học 11 (mở đầu Phần 2), chúng ta sẽ đi sâu vào một trong những vũ khí mạnh nhất của Joomla: Hệ thống quản lý người dùng (Users), User Groups và Viewing Access Levels.
All rights reserved