사라진 인사의 미스터리

발행: (2025년 12월 11일 오후 01:51 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

소스 코드 및 설정

이 연습의 소스 코드는 여기에서 사용할 수 있습니다. 저장소를 클론하고 README의 설정 단계를 따라 로컬에서 이 시퀀스를 실행하거나, 여기서 바로 따라 할 수 있습니다.

아래 조각들에서 일부 출력은 간결성을 위해 생략되었습니다.

iex(1)> import Journey.Node
Journey.Node
iex(2)> graph = Journey.new_graph(
  "Customer Onboarding",
  [
    input(:name),
    input(:email_address),
    compute(
      :greeting,
      [:name, :email_address],
      fn values ->
        welcome = "Welcome, #{values.name} at #{values.email_address}"
        IO.puts(welcome)
        {:ok, welcome}
      end
    )
  ]
)

애플리케이션은 고객이 웹사이트를 탐색할 때마다 이 워크플로우(Journey.start(graph)) 실행을 시작합니다. 고객에게 인사가 전달되고, 비즈니스는 번창합니다.

인사말이 사라진 미스터리

갑자기 공동 창업자인 Ms. Too‑Ticky에게서 전화가 걸려옵니다:

“우리의 최신 고객인 Mr. Hemulen이 ‘환영’ 인사를 받지 못했습니다! 왜죠?!?”

걱정 마세요—Journey.Tools.introspect/1가 구원에 나섭니다!

미스터리 해결?

Mr. Hemulen의 온보딩 실행을 introspect해서 :greeting이 계산됐는지 확인해봅시다.

iex(5)> Journey.Tools.introspect(eid) |> IO.puts()
Values:
- Set:
  - name: '"Hemulen"' | :input
    set at 2025-12-10 09:02:16Z | rev: 1

- Not set:
  - email_address:  | :input
  - greeting:  | :compute

Computations:
- Outstanding:
  - greeting::not_set (not yet attempted) | :compute
       :and
        ├─ ✅ :name | &provided?/1 | rev 1
        └─ 🛑 :email_address | &provided?/1

:greeting은 Mr. Hemulen의 :name은 있지만 :email_address가 없기 때문에 차단됩니다.

미스터리 해결! 안녕하세요, Mr. Hemulen!

Mr. Hemulen이 이메일 주소를 제공하자마자 인사가 출력됩니다:

iex> Journey.set(eid, :email_address, "hemulen@gojourney.dev")
Welcome, Hemulen at hemulen@gojourney.dev

검증

이제 :greeting이 계산되어야 합니다. 확인해봅시다:

iex(7)> Journey.Tools.introspect(eid) |> IO.puts()
Values:
- Set:
  - greeting: '"Welcome, Hemulen at hemulen@gojourney.dev"' | :compute
    computed at 2025-12-10 09:03:06Z | rev: 4

  - email_address: '"hemulen@gojourney.dev"' | :input
    set at 2025-12-10 09:03:06Z | rev: 2

  - name: '"Hemulen"' | :input
    set at 2025-12-10 09:02:16Z | rev: 1

Computations:
- Completed:
  - :greeting (CMPR7RL0T7T2VTJAG9Z0748): ✅ :success | :compute | rev 4
    inputs used:
       :name (rev 1)
       :email_address (rev 2)

:name:email_address가 모두 존재하므로 :greeting이 성공적으로 계산됩니다. Ms. Too‑Ticky도 행복하고, Mr. Hemulen도 행복합니다.

Journey.Tools.introspect/1 한 번 호출—미스터리 해결!

참고 자료

  • 이 walkthrough의 소스 코드:
  • Journey 라이브러리 문서:
Back to Blog

관련 글

더 보기 »