포트와 링크
포트를 이해하는 것은 박스가 언제 실행되는지를 이해하는 것입니다. 이 페이지는 그 모델의 레퍼런스입니다.
세 개의 암묵적 포트
Section titled “세 개의 암묵적 포트”모든 박스가 가지고 있지만, 설정에는 나타나지 않습니다.
| 포트 | 방향 | 흐름 | 역할 |
|---|---|---|---|
in | 입력 | 신호 | 트리거. 들어오는 링크를 여러 개 받아들입니다 |
error | 출력 | 값 + 신호 | 실패 경로 |
done | 출력 | 신호 | 박스 와 그 하위 그래프 전체가 완료된 뒤에 발생합니다 |
error 포트가 없는 박스가 세 개 있습니다. 출력, 현재, 그리고
Retry (마지막 것은 그 자체가 오류 경계입니다). done 이 없는 것은 두 개로,
출력과 Throw입니다.
흐름의 종류
Section titled “흐름의 종류”| 흐름 | 이미지 | 동작 |
|---|---|---|
| 값 | 데이터 | 값을 실어 나릅니다. 트리거 역할도 겸합니다 |
| 신호 | 신호음 | 아무것도 나르지 않고 발동만 시킵니다 |
| 둘 다 | 값을 나르고 동시에 발동시킵니다 |
금지된 조합은 단 하나뿐입니다. 순수한 신호 출력에서 순수한 값 입력으로 가는 연결입니다. 값에 넣을 것이 아무것도 없기 때문입니다.
데이터 타입
Section titled “데이터 타입”any · json · number · string · boolean · duration · response ·
status · list · object.
타입 지정은 주로 시각적 편의를 위한 것이지만, 엄격한 예외가 하나 있습니다.
목록 타입의 입력(목록에 추가 와 목록에서 제거 액션의 list 포트)은
목록과 호환되지 않는 소스를 거부합니다. json 과 list 는 서로 호환되지만,
단순한 object 는 그렇지 않습니다.
- 입력 포트는 링크를 하나만 받습니다. 이것이 그래프를 읽기 쉽게 만듭니다. 값도 하나, 출처도 하나입니다.
in만 예외로, 원하는 만큼 링크를 받아들입니다.- 출력은 원하는 만큼 많은 입력에 값을 공급할 수 있습니다.
박스가 실행되는 시점
Section titled “박스가 실행되는 시점”순서가 있는 규칙이 세 가지 있습니다.
- 루트에서 시작합니다. 들어오는 링크가 없는 박스는 시나리오가 실행될 때 점화됩니다. “시작” 박스라는 것은 없습니다.
- 배선된 입력만 기다립니다. 박스는 실제로 연결된 각 입력 포트가 값을 받은 시점에 실행됩니다. 배선되지 않은 포트를 기다리는 일은 없습니다. 값은 계속 기억됩니다. 입력은 마지막으로 받은 값을 보존합니다.
in포트는 배리어가 됩니다. 여러 링크에서 값을 공급받으면 모두 도착할 때까지 기다린 뒤 한 번만 발동합니다. 이 모델에서 “이 세 분기가 끝날 때까지 기다린다”에 해당합니다.
예외: 이벤트마다 재실행
Section titled “예외: 이벤트마다 재실행”“수신한 이벤트마다 재실행” 옵션(박스의 컨텍스트 메뉴)은 배선된 모든 입력을 차단하지 않는 “or” 게이트로 바꿉니다. 박스는 어떤 포트에서든 값을 받을 때마다 다시 발동합니다.
용도는 두 가지입니다. 스트림을 메시지 단위로 처리하는 것, 그리고 완료 사이클(자기 자신으로 되돌아오는 그래프)의 교착을 푸는 것입니다.
done 과 값 출력의 차이
Section titled “done 과 값 출력의 차이”실무에서 가장 유용한 구분입니다.
- 값 출력은 박스가 결과를 만들어 낸 즉시 발생합니다.
done은 여기에 더해 그 결과를 소비하는 모든 것이 끝나기를 기다립니다.
순서를 매기고 싶을 때 — “이걸 다 하고 나서 정리한다” — 는 done 에서
배선하십시오. 데이터를 넘기려면 값 출력에서 배선하십시오.
별도의 장치가 아닙니다. 역할을 지닌 출력 포트이며, 그 역할이 색을 결정합니다.
| 박스 | 출력 |
|---|---|
| If | then / else |
| While, Do…While | then (본체) |
| Assert | then (성공) / else (실패) |
| Retry | attempt / exhausted |
| Schema validate | valid / invalid / errors |
| Switch | 케이스마다 하나, 그리고 default |
| Socket.IO 연결 | 선언한 이벤트마다 하나, 그리고 others |
링크 셀렉터
Section titled “링크 셀렉터”링크는 셀렉터를 가질 수 있습니다. 통과하는 값에 적용되는 경로입니다.
data.items[0].idbody['user-id']headers["content-type"]statusa.b, a[0], a['key'], a["key"] 형태를 사용할 수 있습니다. JSON을 포함한
세그먼트는 그 자리에서 해석되고, 어디에도 맞지 않는 경로는 undefined 가
됩니다.
Restorm은 배선하는 시점에 셀렉터를 스스로 추론하기도 합니다. 소스의 정적 미리보기가 단일 원시 값으로 좁혀지는 경우입니다. 추론된 값은 언제든 바꾸거나 비울 수 있습니다.