Documentation

조건과 분기

if-this-then-that, 상황에 따라 다르게 동작하기

5 min read

앱은 상황에 따라 다르게 동작해야 합니다. 목록이 비었을 때, 요청이 실패했을 때, 숫자가 기준을 넘었을 때 — 이런 경우를 다루는 것이 Conditional(분기) 액션입니다. "이렇다면 이렇게 한다(if this, then that)" 를 코드 없이 표현합니다.

분기의 구조

분기 액션은 하나의 주제(subject) 값을 보고, 여러 갈래 중 조건에 맞는 첫 번째 갈래를 실행합니다. 주제 값의 종류에 따라 쓸 수 있는 조건이 달라집니다.

참/거짓 (Boolean)

  • True — 값이 참일 때
  • False — 값이 거짓일 때

숫자 (Number)

숫자를 기준값과 비교합니다.

| 연산자 | 의미 | |--------|------| | == | 같음 | | > | 초과 | | < | 미만 | | >= | 이상 | | <= | 이하 |

텍스트 (String)

  • equals — 정확히 일치
  • — 일치하지 않음
  • contains — 포함
  • starts with — ~로 시작
  • ends with — ~로 끝남

HTTP 상태 코드

API 호출 결과를 다룰 때는 상태 코드 패턴(200, 2XX, 4XX, default)으로 분기합니다. 해당 API 가 선언한 응답 상태에 맞춰 분기를 자동으로 만들 수도 있습니다.

Else

어떤 조건에도 맞지 않을 때 실행되는 기본 갈래입니다.

각 갈래에서 실행할 동작

각 갈래에는 실행할 동작을 직접 작성하거나(인라인 플로우), 이미 만들어 둔 프로젝트의 Action Flow 를 참조할 수 있습니다.

Guard — 조건이 아니면 멈추기

Guard 는 분기의 이른 종료(early-exit) 버전입니다. 주제 값과 조건 하나만 지정합니다 — 조건이 맞으면 다음 액션으로 계속 진행하고, 맞지 않으면 플로우가 그 자리에서 멈춥니다 (오류가 아니라 의도된 종료입니다).

  • 입력값이 비어 있으면 이후 액션(저장, API 호출)을 아예 실행하지 않기
  • API 응답이 2XX 가 아니면 거기서 중단하기

여러 갈래가 필요 없이 "계속 진행할 조건" 하나면 될 때 Conditional 보다 간단합니다. 조건의 종류(참/거짓 · 숫자 · 텍스트 · HTTP 상태)는 분기와 동일합니다.

For Each — 배열 반복하기

For Each 는 배열을 순회하며 본문 플로우를 요소마다 한 번씩, 순서대로 실행합니다.

  1. 반복할 배열을 바인딩합니다.
  2. 본문에 실행할 액션을 작성합니다.
  3. 본문 액션에서 For Each 의 출력 {Item, Index} 를 바인딩해 현재 요소와 순번을 사용합니다.
  • 결과 수집은 본문에서 Update Data(Append) 로 대상 배열에 추가하는 방식으로 합니다.
  • 본문 안의 Guard 는 그 반복만 건너뜁니다(다음 요소로 계속).
  • 한 요소에서 실패해도 반복은 계속되며, 반복 횟수는 최대 1,000회입니다.

예를 들어 숫자 ID 배열을 For Each 로 돌면서 각 ID 로 API Call 을 보내고 응답을 목록 데이터에 Append 하면, ID 목록이 상세 정보 목록으로 채워집니다.

활용 예

  • 입력값이 비어 있으면 Alert 를 띄우고, 아니면 데이터를 추가합니다.
  • 점수가 >= 100 이면 축하 화면으로 이동하고, Else 면 그대로 둡니다.
  • API 응답이 2XX 면 결과를 화면에 바인딩하고, 4XX 면 오류 메시지를 보여 줍니다.
  • Guard 로 "로그인된 경우에만 계속" 을 플로우 맨 앞에 두어 이후 액션 전체를 보호합니다.

숫자나 텍스트를 비교해 참/거짓을 얻고 싶다면 액션의 종류Compare / Compare Text 액션으로 Boolean 값을 먼저 만든 뒤 분기할 수 있습니다.