제어
다섯 개의 박스가 시나리오의 실행 흐름을 조종합니다.
참고로 모든 박스에는 암묵적인 포트 in, error, done 도 있습니다 —
포트와 링크를 참고하십시오.
Input / Param (입력 / 파라미터)
Section titled “Input / Param (입력 / 파라미터)”시나리오의 파라미터를 선언합니다.
| 입력 | 없음 |
| 출력 | value — { name: value, … } 형태의 단일 객체 |
| 설정 | name (파라미터 이름), valueType (타입과 기본값) |
값은 실행 시점에, 명령줄의 --param name=value 로 제공되거나, 값이 없는 상태로
실행이 이 박스에 도달한 경우 대화식으로 요청됩니다.
입력 “baseUrl” (문자열) ──► 요청의 env 포트Output / Return (출력 / 반환)
Section titled “Output / Return (출력 / 반환)”시나리오의 호출자에게 결과를 공개합니다.
| 입력 | value |
| 출력 | 없음 — 종단 박스입니다. error 도 done 도 없습니다 |
| 설정 | name |
시나리오 실행 액션이 호출한 시나리오는 각 출력을 호출자의 output:<name>
포트에서 사용할 수 있게 합니다.
If (조건 분기)
Section titled “If (조건 분기)”두 갈래 분기입니다.
| 입력 | left, right |
| 출력 | then, else |
| 설정 | operator: lt, lte, eq, gte, gt, ne, contains — 그리고 리터럴 값으로서의 left 와 right |
팁: 어느 피연산자도 배선되지 않고 값도 입력되지 않은 경우, 이 박스는 in
으로 받은 신호의 참 여부만 판정합니다. 명시적인 조건 없이 “여기까지 도달했는가”를
확인하는 것입니다.
Switch (분기)
Section titled “Switch (분기)”N 갈래 분기입니다.
| 입력 | on |
| 출력 | 선언한 케이스마다 case-<id> 포트, 그리고 default |
| 설정 | cases: { id, value } 의 목록 |
갈래가 셋 이상이 되면 If를 줄줄이 잇는 것보다 이쪽이 낫습니다. 케이스마다 독립된 선이 되어 그림으로 읽기 쉽습니다.
Retry (재시도)
Section titled “Retry (재시도)”오류 복구의 경계입니다.
| 입력 | maxAttempts, delay |
| 출력 | attempt (시도마다), exhausted (시도를 모두 소진했을 때) |
| 설정 | 아래 참고 |
| 필드 | 기본값 | 역할 |
|---|---|---|
maxAttempts | 3 | 최대 시도 횟수 |
backoff | fixed | fixed, linear, exponential |
delay + delayUnit | — | 기본 대기 시간 (ms, s, min) |
factor | 2 | 지수 모드에서의 증가 계수 |
maxDelay + maxDelayUnit | — | 대기 시간의 상한 |
retryOnError | true | 오류 발생 시 재시도 |
retryOnFailure | false | 업무적 실패 시 재시도 |
retryOnStatus | — | HTTP 상태 코드 목록, 예를 들어 [429, 503] |
attempt 에 연결한 하위 그래프가 재시도의 범위가 됩니다. 성공한 경우에는
done 으로 나갑니다. **이 박스에는 error 포트가 없습니다.**이 박스 자체가
경계이기 때문입니다.
Retry (3, 지수, [429,503]) ├─ attempt ──► HTTP 요청 ──► Assert └─ exhausted ──► Throw “서비스 이용 불가”