Bỏ qua để đến nội dung

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.

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ổngChiềuDòngVai trò
inĐầu vàoTín hiệuBộ kích hoạt. Chấp nhận nhiều liên kết đi vào
errorĐầu raGiá trị + tín hiệuTuyến thất bại
doneĐầu raTín hiệuPhá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ờ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 raThrow.

DòngHình dungHành vi
Giá trịMột dữ liệuMang theo một giá trị; đồng thời đóng vai trò bộ kích hoạt
Tín hiệuMột nhịpKhông mang gì cả, chỉ kích hoạt
Cả haiMang theo một giá trị 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ả.

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áchXó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. jsonlist tương thích với nhau; còn một object đơn thuần thì không.

  • 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 ý.

Ba quy tắc, theo thứ tự:

  1. 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ả.
  2. 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.
  3. 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ó).

Đâ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ó;
  • done cò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ị.

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
Ifthen / else
While, Do…Whilethen (phần thân)
Assertthen (thành công) / else (thất bại)
Retryattempt / exhausted
Schema validatevalid / invalid / errors
Switchmột cổng cho mỗi trường hợp, cộng thêm default
Kết nối Socket.IOmột cổng cho mỗi sự kiện được khai báo, cộng thêm others

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].id
body['user-id']
headers["content-type"]
status

Các dạng a.b, a[0], a['clé']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ó.