Phân nhánh (Fork)
Tách quy trình thành nhiều nhánh chạy song song từ một bước duy nhất — luôn đi kèm bước Hợp nhất (Join) để đồng bộ lại.
Mục đích
Bước Phân nhánh (Fork) tách luồng chạy của quy trình thành nhiều nhánh song song (arms) — tất cả các nhánh kích hoạt cùng một lúc ngay khi Fork chạy. Đây là bước duy nhất trong quy trình thực sự chạy nhiều nhánh đồng thời: không phải "chọn một trong nhiều", mà là "chạy tất cả cùng lúc".
Phân nhánh khác với việc một bước Quyết định (Decision) hay Công việc người dùng (Human task) có nhiều cạnh đi ra. Ở Quyết định, chỉ nhánh đầu tiên khớp điều kiện được đi theo; ở Công việc người dùng, chỉ hành động người dùng chọn được đi theo — cả hai đều là phân nhánh loại trừ nhau (chỉ một nhánh chạy), không phải song song. Muốn nhiều nhánh cùng chạy một lúc thật sự, bạn phải chèn một bước Phân nhánh (Fork) tường minh.
Khi nào dùng
- Bạn cần nhiều nhánh xử lý độc lập chạy đồng thời, không phải chọn một trong số đó — ví dụ vừa nhờ Trợ lý AI kiểm tra ngân sách, vừa mở Công việc người dùng xác nhận kỹ thuật, cả hai cùng chạy song song thay vì lần lượt.
- Ví dụ trong quy trình Đề xuất mua sắm: thay vì chạy tuần tự "Trợ lý AI kiểm tra ngân sách" rồi mới đến "Người dùng xác nhận kỹ thuật", bước Phân nhánh cho phép hai việc này chạy cùng lúc, rút ngắn thời gian xử lý.
- Luôn đi kèm với một bước Hợp nhất (Join) ở phía sau để chờ tất cả các nhánh hoàn thành trước khi tiếp tục — xem trang Hợp nhất (Join).
Mỗi bước Phân nhánh phải ghép với đúng một bước Hợp nhất hội tụ tất cả các nhánh của nó. Việc ghép cặp này được hệ thống tự suy ra — bạn không cần khai báo thủ công.
Cài đặt chính
| Cài đặt | Bắt buộc? | Mô tả |
|---|---|---|
| Tên bước | Có | Nhãn hiển thị trên canvas. Không ảnh hưởng đến hành vi. |
| Nhánh song song (Parallel arms) | Có | Danh sách các nhánh chạy đồng thời. Có thể nhấn Add arm để thêm nhánh mới, hoặc xóa bớt — tối thiểu 2 nhánh; nút xóa bị vô hiệu khi chỉ còn đúng 2. |
Mỗi nhánh (arm) tương ứng với đúng một cổng ra (handle) riêng trên canvas. Trong panel bên phải, mỗi nhánh hiển thị dưới dạng "Arm 1", "Arm 2", … kèm trạng thái wired (đã nối cạnh) hoặc unwired (chưa nối) — bạn kéo cạnh cho từng nhánh trực tiếp trên canvas, mỗi nhánh chỉ được nối một cạnh duy nhất tới bước kế tiếp.
Bước Phân nhánh không có điều kiện định tuyến nào cả — không giống Quyết định, không có nhánh nào bị bỏ qua khi Fork chạy: toàn bộ các nhánh đều kích hoạt.
Trình thiết kế kiểm tra toàn bộ vùng từ Phân nhánh tới Hợp nhất ngay trong lúc bạn vẽ, và nút Xuất bản bị chặn cho tới khi vùng ấy đúng: Fork có ít nhất 2 nhánh, mỗi nhánh đã được nối cạnh, mọi nhánh hội tụ về đúng một bước Hợp nhất — và các nhánh được nối vào Hợp nhất đúng cách. Điều sau cùng là chỗ dễ sai nhất: một bước Quyết định hay Công việc người dùng không được nối thẳng vào Hợp nhất. Xem Nối các nhánh vào Hợp nhất.
Ví dụ
Trong quy trình Đề xuất mua sắm:
- Bắt đầu (Start) — người dùng điền biểu mẫu yêu cầu mua hàng.
- Phân nhánh (Fork) — tách thành 2 nhánh chạy đồng thời:
- Nhánh 1: Trợ lý AI (Agent) kiểm tra ngân sách.
- Nhánh 2: Công việc người dùng (Human task) xác nhận thông số kỹ thuật; mọi hành động của bước này nối vào một bước Đặt biến (Set variable), và chỉ bước đó nối vào Hợp nhất.
- Hợp nhất (Join) — đợi cả hai nhánh hoàn thành.
- Tạo tài liệu (Generate document) — xuất phiếu đề nghị mua sắm.
- Ký số (Signature) → Email → Kết thúc (End).
Vì hai nhánh không phụ thuộc lẫn nhau, chạy chúng song song qua Phân nhánh giúp rút ngắn thời gian xử lý so với chạy tuần tự — miễn là bước Hợp nhất phía sau đảm bảo cả hai đều xong trước khi tạo tài liệu.
Bước Đặt biến ở Nhánh 2 là bắt buộc chứ không phải trang trí: người xác nhận chỉ chọn một hành động, nên nếu các cạnh hành động đi thẳng vào Hợp nhất, bước Hợp nhất sẽ chờ mãi cạnh không được chọn.
Xem thêm Hợp nhất (Join) và Quyết định (Decision).