Cổng và liên kết
Hiểu được các cổng là hiểu được khi nào một chiếc hộp chạy. Trang này là tài liệu tham chiếu của mô hình.
Ba cổng ngầm định
Section titled “Ba cổng ngầm định”Mọi chiếc hộp đều có chúng, dù chúng không xuất hiện trong phần cấu hình:
| Cổng | Chiều | Dòng | Vai trò |
|---|---|---|---|
in | Đầu vào | Tín hiệu | Bộ kích hoạt. Chấp nhận nhiều liên kết đi vào |
error | Đầu ra | Giá trị + tín hiệu | Tuyến thất bại |
done | Đầu ra | Tín hiệu | Phát ra sau khi chiếc hộp và toàn bộ đồ thị con phía sau nó hoàn tất |
Có ba chiếc hộp không có cổng error: Đầu ra, Bây giờ và Retry
(chiếc cuối bản thân nó đã là một biên lỗi). Hai chiếc hộp không có done:
Đầu ra và Throw.
Các kiểu dòng
Section titled “Các kiểu dòng”| Dòng | Hình dung | Hành vi |
|---|---|---|
| Giá trị | Một dữ liệu | Mang theo một giá trị; đồng thời đóng vai trò bộ kích hoạt |
| Tín hiệu | Một nhịp | Không mang gì cả, chỉ kích hoạt |
| Cả hai | Mang theo một giá trị và kích hoạt |
Tổ hợp duy nhất bị cấm: một đầu ra chỉ có tín hiệu thuần túy nối tới một đầu vào chỉ nhận giá trị thuần túy. Sẽ chẳng có gì để đặt vào giá trị cả.
Các kiểu dữ liệu
Section titled “Các kiểu dữ liệu”any · json · number · string · boolean · duration · response ·
status · list · object.
Việc gán kiểu chủ yếu phục vụ sự tiện mắt, với một ngoại lệ nghiêm ngặt: một đầu
vào kiểu danh sách (cổng list của các hành động Thêm vào một danh sách
và Xóa khỏi một danh sách) sẽ từ chối một nguồn không tương thích với danh
sách. json và list tương thích với nhau; còn một object đơn thuần thì
không.
Số lượng liên kết
Section titled “Số lượng liên kết”- Một cổng vào chỉ chấp nhận một liên kết duy nhất. Chính điều đó làm cho đồ thị dễ đọc: một giá trị, một nguồn gốc.
- Trừ
in, vốn chấp nhận bao nhiêu liên kết tùy ý. - Một đầu ra có thể cấp cho bao nhiêu đầu vào tùy ý.
Khi nào một chiếc hộp chạy
Section titled “Khi nào một chiếc hộp chạy”Ba quy tắc, theo thứ tự:
- Các nút gốc khởi động. Mọi chiếc hộp không có liên kết đi vào đều được mồi khi kịch bản khởi chạy. Không có chiếc hộp “bắt đầu” nào cả.
- Chỉ những đầu vào đã đấu dây mới được chờ. Một chiếc hộp chạy khi mỗi cổng vào thực sự được nối của nó đã nhận được một giá trị. Một cổng chưa đấu dây thì không bao giờ bị chờ. Các giá trị được ghi nhớ: một đầu vào giữ lại giá trị nhận được gần nhất.
- Cổng
inđóng vai trò rào chắn. Khi được nhiều liên kết cấp dữ liệu, nó chờ tới khi tất cả đều đã tới, rồi kích hoạt một lần. Đây là cơ chế “chờ cho ba nhánh này xong” của mô hình.
Ngoại lệ: chạy lại ở mỗi sự kiện
Section titled “Ngoại lệ: chạy lại ở mỗi sự kiện”Tùy chọn “Chạy lại ở mỗi sự kiện nhận được” (menu ngữ cảnh của chiếc hộp) biến mọi đầu vào đã đấu dây thành những cổng “hoặc” không chặn: chiếc hộp được kích hoạt lại ở mỗi giá trị nhận được, trên bất kỳ cổng nào.
Hai công dụng: xử lý một luồng theo từng thông điệp, và tháo gỡ một chu trình hoàn tất (một đồ thị vòng lại chính nó).
done so với một đầu ra giá trị
Section titled “done so với một đầu ra giá trị”Đây là điểm phân biệt hữu ích nhất trong thực tế:
- một đầu ra giá trị phát ra ngay khi chiếc hộp đã tạo được kết quả của nó;
donecòn chờ thêm cho tới khi mọi thứ tiêu thụ kết quả đó đã xong.
Để sắp thứ tự — “làm tất cả những việc này, rồi dọn dẹp” — hãy đấu dây từ done.
Để chuyển một dữ liệu, hãy đấu dây từ đầu ra giá trị.
Các nhánh điều kiện
Section titled “Các nhánh điều kiện”Chúng không phải một cơ chế riêng: chúng là những cổng ra mang một vai trò, và vai trò đó chi phối màu sắc của chúng.
| Hộp | Đầu ra |
|---|---|
| If | then / else |
| While, Do…While | then (phần thân) |
| Assert | then (thành công) / else (thất bại) |
| Retry | attempt / exhausted |
| Schema validate | valid / invalid / errors |
| Switch | một cổng cho mỗi trường hợp, cộng thêm default |
| Kết nối Socket.IO | một cổng cho mỗi sự kiện được khai báo, cộng thêm others |
Bộ chọn của liên kết
Section titled “Bộ chọn của liên kết”Một liên kết có thể mang một bộ chọn: một đường dẫn áp lên giá trị đang di chuyển.
data.items[0].idbody['user-id']headers["content-type"]statusCác dạng a.b, a[0], a['clé'] và a["clé"] đều được chấp nhận. Một đoạn
chứa JSON sẽ được phân tích ngay khi đi qua; một đường dẫn không khớp với gì cả
sẽ cho undefined.
Đôi khi Restorm tự suy ra một bộ chọn vào lúc bạn đấu dây, khi nguồn có một bản xem trước tĩnh rút gọn về đúng một giá trị nguyên thủy. Bạn luôn có thể thay thế hoặc xóa trống nó.