Tài liệu RunMacro
Tạo robot đầu tiên, rồi tiến xa theo nhu cầu.
Hướng dẫn rõ ràng từng bước để tạo, chạy và cải thiện robot cho công việc máy tính lặp lại.
Trả về kết quả và thoát Subflow sớm (Return Subflow) trong RunMacro
Lệnh Trả về Subflow ngắt luồng con và quay về luồng gọi ngay lập tức đồng thời đánh giá và gán các giá trị trả về cho các Output của Subflow.
Điều kiện cần#
- Lệnh phải được đặt bên trong một Subflow không đặt trong Main flow.
- Subflow đã được khai báo các Output tương ứng nếu muốn gán giá trị trả về cụ thể.
- Các biến nguồn được tham chiếu trong giá trị trả về phải hợp lệ tại thời điểm Return thực thi.
Chế độ hỗ trợ#
- Chế độ Desktop — Thoát frame Subflow đang thao tác desktop và trả về luồng gọi.
- Chế độ Browser — Thoát frame Subflow trình duyệt và trả về luồng gọi mà không làm đóng phiên Chrome/CDP.
- RunMacro Runner — Runner dọn dẹp frame gọi cục bộ và tiếp tục lệnh kế tiếp trong luồng gọi.
Chức năng này làm gì#
Lệnh Trả về Subflow (Return Subflow) được đặt bên trong thân của một Subflow nhằm ngắt và kết thúc thực thi luồng con ngay lập tức, đồng thời thiết lập các giá trị trả về cho các Output đã khai báo của Subflow trước khi chuyển quyền điều khiển quay lại luồng gọi (Caller). Lệnh đặc biệt hữu ích khi kết hợp với khối điều kiện IF/ELSE để thoát sớm khi gặp lỗi, hoàn tất sớm một điều kiện kiểm tra, hoặc trả về mã trạng thái mà không cần chạy hết phần còn lại của Subflow. Lưu ý rằng lệnh Return Subflow không thể thực thi trong Main flow.
Hình ảnh & video#

Khi nào nên dùng#
- Thoát sớm khỏi Subflow khi phát hiện điều kiện lỗi hoặc dữ liệu đầu vào không hợp lệ (ví dụ: IF {user} rỗng -> Return {status} = "invalid_input").
- Ngắt Subflow ngay khi tìm thấy kết quả mong muốn trong vòng lặp con (ví dụ: tìm thấy mã đơn hàng -> Return {found} = true).
- Chủ động gán và ghi đè các giá trị trả về cho các Output của Subflow tại các nhánh logic rẽ khác nhau.
Khi nào không nên dùng#
- Đặt trực tiếp trong Main flow vì Main flow không có frame gọi để return.
- Chỉ muốn ngắt một vòng lặp bình thường bên trong luồng.
- Subflow chạy tuần tự đến dòng lệnh cuối cùng mà không cần thoát sớm.
Các bước cấu hình#
- Mở tab của Subflow cần cấu hình (không mở trên Main flow).
- Tại vị trí muốn thoát sớm (thường nằm trong nhánh IF), thêm lệnh Điều khiển luồng › Trả về Subflow (Return Subflow).
- Trong bảng Cấu hình giá trị trả về (Output Return Values), bảng sẽ tự động nạp các Output Name đã khai báo của Subflow.
- Nhập giá trị hằng số (literal text/number) hoặc tên biến nguồn (ví dụ:
{status_code},true,"success") vào cột Giá trị trả về (Return Value). - Nhấn Lưu. Khi chạy đến lệnh này, Subflow sẽ dừng ngay và đẩy các giá trị này về cho lệnh Call Subflow ở luồng gọi.
Giải thích từng tùy chọn#
Kết quả mong đợi#
Subflow dừng thực thi ngay tại dòng lệnh Return Subflow các giá trị được gán vào biến Output và luồng gọi tiếp tục bước kế tiếp.
Ví dụ thực tế#
Ví dụ: Kiểm tra quyền và thoát sớm khi tài khoản bị khóa#
- Trong Subflow "KiemTraTaiKhoan", thêm lệnh IF: {is_locked} == true.
- Bên trong nhánh IF, chèn lệnh Return Subflow: {status} = "blocked", {can_proceed} = false.
- Các lệnh nặng phía sau (tải dữ liệu, mở trang web) sẽ không bị thực thi lãng phí.
- Luồng gọi nhận kết quả và có thể thông báo người dùng ngay.
Ví dụ: Tìm kiếm phần tử trong danh sách và return ngay khi thấy#
- Trong vòng lặp For Each của Subflow, kiểm tra IF {item_id} == {target_id}.
- Chèn Return Subflow: {found} = true, {matched_index} = {index}.
- Subflow ngắt ngay lập tức, trả kết quả về Main flow mà không cần duyệt hết các phần tử còn lại.
- Main flow đọc biến {found} để tiến hành cập nhật đơn hàng.
Giới hạn và trường hợp lỗi#
- Không thể dùng trong Main flow vi phạm sẽ gây lỗi subflow invalid return in main.
- Chỉ trả về giá trị cho các Output đã được khai báo trong Subflow Interface không thể tự ý tạo thêm Output mới tại thời điểm chạy.
- Khi lệnh Return Subflow được kích hoạt mọi lệnh nằm bên dưới nó trong cùng Subflow sẽ bị bỏ qua hoàn toàn.
- Nếu giá trị trả về tham chiếu biến không tồn tại hệ thống sẽ báo lỗi missing variable.
- Kiểu dữ liệu trả về cần khớp với kiểu dữ liệu của Output.
- Không thay thế cho lệnh Stop Macro Return Subflow chỉ thoát khỏi Subflow hiện tại chứ không dừng toàn bộ kịch bản.
Mẹo & lỗi thường gặp#
Thông tin kiểm chứng#
commands/subflow.pyui/subflow_command_dialog.py
