사라진 인사의 미스터리
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 라이브러리 문서: