์‹คํ–‰ ๋‹จ๊ณ„ ๊ธฐ๋ก ๋ณด๊ธฐ

์ง€์ •๋œ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๊ธฐ๋ก์„ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ๋ชฉ๋ก์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์€ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋ถ„์„, ๋””๋ฒ„๊น…, ์ตœ์ ํ™”ํ•  ๋•Œ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค์ œ๋กœ ์‹คํ–‰๋œ ๋‹จ๊ณ„๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹จ๊ณ„์˜ ๊ธฐ๊ฐ„ ๋ฐ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํฌ๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๋น„์„ ํ˜• ์›Œํฌํ”Œ๋กœ(์˜ˆ: ์—ฌ๋Ÿฌ ๋ณ‘๋ ฌ ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ)๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ํ•ญ๋ชฉ์€ ์†Œ์Šค ์ฝ”๋“œ์˜ ์‹ค์ œ ๋‹จ๊ณ„(์˜ˆ: assign ๋˜๋Š” call) ๋˜๋Š” ์•ˆ๋‚ด ๋ธ”๋ก(์˜ˆ: for ๋ฃจํ”„ ๋˜๋Š” try/retry/except ๋ธ”๋ก)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‹จ๊ณ„ ์œ ํ˜•์˜ ์ „์ฒด ๋ชฉ๋ก์€ StepType์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‹คํ–‰ ๊ธฐ๋ก ์ˆ˜์ค€

์›Œํฌํ”Œ๋กœ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ๋•Œ ๊ธฐ๋ณธ ๋˜๋Š” ์„ธ๋ถ€ ์‹คํ–‰ ๊ธฐ๋ก์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ์›Œํฌํ”Œ๋กœ ๋˜๋Š” ์‹คํ–‰ ์ˆ˜์ค€์—์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰ ๊ธฐ๋ก ์ˆ˜์ค€์€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ธฐ๋ณธ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ธฐ๋ก์— ๋ฒ”์œ„ ๋‚ด ๋ณ€์ˆ˜ ๊ฐ’๊ณผ ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์ƒ ๋ฐ˜๋ณต ํšŸ์ˆ˜ (์˜ˆ: for ๋ฃจํ”„ ๋˜๋Š” ๋ณ‘๋ ฌ ๋ถ„๊ธฐ๋‚˜ ๋ฐ˜๋ณต ์‚ฌ์šฉ ์‹œ)๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด ์‹คํ–‰ ๊ธฐ๋ก ์ˆ˜์ค€์„ Detailed๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰์— ์‹คํ–‰ ๊ธฐ๋ก ์ˆ˜์ค€์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์›Œํฌํ”Œ๋กœ์— ์ ์šฉ๋œ ์ˆ˜์ค€์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ˆ˜์ค€์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์‹คํ–‰ ์ˆ˜์ค€์—์„œ ์ ์šฉ๋œ ์„ค์ •์ด ํ•ด๋‹น ์‹คํ–‰์˜ ์›Œํฌํ”Œ๋กœ ์ˆ˜์ค€์—์„œ ์ ์šฉ๋œ ์„ค์ •์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

Workflow Executions REST API์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ Google Cloud ์ฝ˜์†”์„ ํ†ตํ•ด ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ํ•ญ๋ชฉ ์ •๋ณด

๋‹จ๊ณ„ ํ•ญ๋ชฉ์—๋Š” ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์—๋Š” ๊ธฐ๋ณธ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ์ •๋ณด๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ์˜ ์˜ˆ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ธฐ๋ณธ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ์ •๋ณด

์ด๋ฆ„ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์œผ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์˜ ๊ณ ์œ  ID์ด๋ฉฐ ์—ฌ๊ธฐ์„œ STEPENTRY_ID๋Š” ์ฆ๊ฐ€ํ•˜๋Š” ์นด์šดํ„ฐ์ž…๋‹ˆ๋‹ค.
projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/STEPENTRY_ID
์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
projects/123456789012/locations/us-central1/workflows/myFirstWorkflow/executions/ae8a66a1-cefa-4d16-8a2f-d50c712d8ef1/stepEntries/2
์ƒ์„ฑ ๋ฐ ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์ƒ์„ฑ ์‹œ๊ฐ„ ๋ฐ ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ์˜ ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค. ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ updateTime์€ ์™„๋ฃŒ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋ฃจํ‹ด ๋ฐ ๋‹จ๊ณ„ ์ด๋ฆ„ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์†ํ•œ ๋ฃจํ‹ด ๋ฐ ๋‹จ๊ณ„์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฃจํ‹ด ์ด๋ฆ„์€ YAML ๋˜๋Š” JSON ์†Œ์Šค ์ฝ”๋“œ์— ์ •์˜๋œ ํ•˜์œ„ ์›Œํฌํ”Œ๋กœ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ ๋ฃจํ‹ด ์ด๋ฆ„์€ main์ž…๋‹ˆ๋‹ค.
์ƒํƒœ ๋ฐ ์ง„ํ–‰๋ฅ  ์œ ํ˜• ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์ƒํƒœ(์˜ˆ: ํ•ญ๋ชฉ์˜ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ, ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์ง„ํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ๋ฐ ์ง„ํ–‰ ์œ ํ˜•)์ž…๋‹ˆ๋‹ค. ์ƒํƒœ์™€ ์ง„ํ–‰๋ฅ  ์œ ํ˜•์˜ ์ „์ฒด ๋ชฉ๋ก์€ State์™€ ProgressType์„ ์ฐธ์กฐํ•˜์„ธ์š”.
ํƒ์ƒ‰ ์ •๋ณด

์›Œํฌํ”Œ๋กœ์˜ ๊ณ„์ธต ๊ตฌ์กฐ์™€ ํ๋ฆ„์„ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์œ„์น˜(์˜ˆ: ํ˜„์žฌ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์•ž์ด๋‚˜ ๋’ค์— ์˜ค๋Š” ๋‹จ๊ณ„ ํ•ญ๋ชฉ ๋˜๋Š” ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์ƒ์œ„ ๋˜๋Š” ํ•˜์œ„ ์š”์†Œ)์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ NavigationInfo๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

๋ฐ˜๋ณต ๋‹จ๊ณ„ ํ•ญ๋ชฉ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋กœ, ๋‹ค์Œ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•˜์œ„ ์Šค๋ ˆ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ID(์˜ˆ: STEP_PARALLEL_BRANCH์˜ STEP_PARALLEL_BRANCH_ENTRY)
  • for ๋ฃจํ”„์˜ ๋ฐ˜๋ณต(์˜ˆ: STEP_FOR์˜ STEP_FOR_ITERATION)
์ž์„ธํ•œ ๋‚ด์šฉ์€ StepEntryMetadata๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
์˜ˆ์™ธ ์˜ˆ์™ธ์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์‹คํŒจํ•œ ์ด์œ ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด๋กœ๋“œ์ž…๋‹ˆ๋‹ค.

์„ธ๋ถ€ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ์ •๋ณด

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ๊ณ„์˜ ์ง„ํ–‰๋ฅ ์— ์˜ˆ์ƒ๋˜๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด for ๋ฃจํ”„, ๋ณ‘๋ ฌ ๋ถ„๊ธฐ ๋˜๋Š” ๋ฐ˜๋ณต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๊ณ„์‚ฐ๋œ ๊ฐœ์ˆ˜๋Š” ๋ฃจํ”„ ๊ฒฝ๊ณ„์— ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ํ‘œํ˜„์‹์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ค‘์ฒฉ๋œ ํ‘œํ˜„์‹ ๊นŠ์ด๊ฐ€ 10์„ ์ดˆ๊ณผํ•จ
  • len() ์ด์™ธ์˜ ๊ธฐ๋ณธ ์ œ๊ณต ํ•จ์ˆ˜
  • .inf, -.inf, .NAN, Infinity, -Infinity๊ณผ ๊ฐ™์€ ๊ฐ’์ด ํฌํ•จ๋œ ํ‰๊ฐ€
  • ์˜ค๋ฅ˜
์ž์„ธํ•œ ๋‚ด์šฉ์€ StepEntryMetadata๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ

์ด ๋‹จ๊ณ„์™€ ๊ด€๋ จ๋œ ๋ฒ”์œ„ ๋‚ด ๋ณ€์ˆ˜ ๊ฐ’์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„๊ณผ ๊ฐ’, ํ‘œํ˜„์‹ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„์—๋Š” Workflows ๊ธฐ๋ณธ ์ œ๊ณต ํ•จ์ˆ˜์— ์—ฐ๊ฒฐ๋œ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๊ฐ€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ VariableData๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฝ˜์†”์—์„œ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ๋ณด๊ธฐ

Google Cloud ์ฝ˜์†”์—์„œ ํŠน์ • ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ Workflows ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Workflows๋กœ ์ด๋™

  2. ์›Œํฌํ”Œ๋กœ ์ด๋ฆ„์„ ํด๋ฆญํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  3. ํŠน์ • ์‹คํ–‰์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์‹คํ–‰ ID๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์š”์•ฝ ํƒญ์—๋Š” ์‹คํ–‰ ์‹คํŒจ๋กœ ์ด์–ด์ง„ ์˜ˆ์™ธ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ „์ฒด ์‹คํ–‰ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‹คํ–‰ ์˜ค๋ฅ˜ ๋งต์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  4. ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๊ธฐ๋ก์„ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋ ค๋ฉด ๋‹จ๊ณ„ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๋ชจ๋“  ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

  5. ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ” ์ƒ๋‹จ์˜ ํ•„ํ„ฐ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์„ฑ๊ณผ ๊ฐ’์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: State: Failed).

  6. ์ƒ์œ„, ํ•˜์œ„, ๋‹ค์Œ, ์ด์ „ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ๋งํฌ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ํŠน์ • ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋‹ค๋ฅธ ๋งํฌ๊ฐ€ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ์œ„๋Š” ํด๋ฆญํ•œ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ์ƒ์œ„ ์š”์†Œ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

  7. ์‹œ๊ฐํ™” ํŒจ๋„์€ ์›Œํฌํ”Œ๋กœ ๋‹จ๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”ฝ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์›Œํฌํ”Œ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

    ์‹œ๊ฐํ™” ํŒจ๋„ ์˜ˆ์‹œ

    ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€:

    ์‹คํŒจํ•œ ๋‹จ๊ณ„์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์‹œ๊ฐํ™” ํŒจ๋„

    ์‹œ๊ฐํ™”๋Š” ๋‹จ๊ณ„ ํ•ญ๋ชฉ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด for ๋ธ”๋ก์€ ์‹œ๊ฐํ™”์—์„œ ๋‹จ์ผ ๊ตฌ์„ฑ์š”์†Œ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜๋ณต ํšŸ์ˆ˜์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํŒจ๋„์—์„œ ๋‹ค์Œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์‹œ๊ฐํ™” ํ™•๋Œ€ ๋˜๋Š” ์ถ•์†Œ
    • ์ƒ์œ„ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ์ ‘๊ธฐ ๋˜๋Š” ํŽผ์น˜๊ธฐ
    • ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ํด๋ฆญํ•˜๊ณ  ์ด์ „ ๋ฐ ๋‹ค์Œ ํ•ญ๋ชฉ ๋ณด๊ธฐ
    • ๋…น์ƒ‰ ์ฒดํฌํ‘œ์‹œ ๋˜๋Š” ๋นจ๊ฐ„์ƒ‰ ๋А๋‚Œํ‘œ๋กœ ํ‘œ์‹œ๋œ ์„ฑ๊ณต ๋ฐ ์‹คํŒจํ•œ ๋‹จ๊ณ„ ํ•ญ๋ชฉ ํ™•์ธ
    • ํŽผ์น˜๊ธฐ ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์‹œ๊ฐํ™” ํŒจ๋„ ๋‹ซ๊ธฐ, ๋‹ค์‹œ ํด๋ฆญํ•˜์—ฌ ํŒจ๋„ ์—ด๊ธฐ

๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์—

๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Workflows ๊ด€๋ฆฌ์ž (workflows.stepEntries.get) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋งž์ถค ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ํ•ญ๋ชฉ ๊ฒ€์ƒ‰

์ง€์ •๋œ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด projects.locations.workflows.executions.stepEntries.get ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_NUMBER: IAM ๋ฐ ๊ด€๋ฆฌ์ž ์„ค์ • ํŽ˜์ด์ง€์— ๋‚˜์—ด๋œ Google Cloudํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
  • LOCATION: ์›Œํฌํ”Œ๋กœ๊ฐ€ ๋ฐฐํฌ๋˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค(์˜ˆ: us-central1).
  • WORKFLOW_ID: ์›Œํฌํ”Œ๋กœ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค(์˜ˆ: myFirstWorkflow).
  • EXECUTION_ID: ์›Œํฌํ”Œ๋กœ๊ฐ€ ์‹คํ–‰๋œ ํ›„ ๋ฐ˜ํ™˜๋˜๋Š” ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๊ณ ์œ  ID์ž…๋‹ˆ๋‹ค.
  • STEPENTRY_ID: ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ ๊ณ ์œ  ID์ž…๋‹ˆ๋‹ค(์˜ˆ: 1).

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/STEPENTRY_ID",
  "createTime": "2024-08-15T19:03:08.328851864Z",
  "updateTime": "2024-08-15T19:03:08.331099634Z",
  "routine": "main",
  "step": "checkSearchTermInInput",
  "stepType": "STEP_CONDITION",
  "state": "STATE_SUCCEEDED",
  "entryId": "2",
  "navigationInfo": {
    "children": [
      "3"
    ],
    "parent": "1",
    "next": "3",
    "previous": "1"
  },
  "variableData": {}
}

๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๋‚˜์—ดํ•˜๊ธฐ ์ „์—

๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Workflows ๊ด€๋ฆฌ์ž (workflows.stepEntries.list) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋งž์ถค ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ํ•ญ๋ชฉ ๋‚˜์—ด

์ œ๊ณต๋œ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด projects.locations.workflows.executions.stepEntries.list ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฐ๊ณผ๋Š” ๋‹จ๊ณ„ ํ•ญ๋ชฉ์˜ createTime์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_NUMBER: IAM ๋ฐ ๊ด€๋ฆฌ์ž ์„ค์ • ํŽ˜์ด์ง€์— ๋‚˜์—ด๋œ Google Cloudํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
  • LOCATION: ์›Œํฌํ”Œ๋กœ๊ฐ€ ๋ฐฐํฌ๋˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค(์˜ˆ: us-central1).
  • WORKFLOW_ID: ์›Œํฌํ”Œ๋กœ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค(์˜ˆ: myFirstWorkflow).
  • EXECUTION_ID: ์›Œํฌํ”Œ๋กœ๊ฐ€ ์‹คํ–‰๋œ ํ›„ ๋ฐ˜ํ™˜๋˜๋Š” ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๊ณ ์œ  ID์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "stepEntries": [
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/1",
      "createTime": "2024-08-15T19:03:08.328807964Z",
      "updateTime": "2024-08-15T19:03:08.331099694Z",
      "routine": "main",
      "step": "checkSearchTermInInput",
      "stepType": "STEP_SWITCH",
      "state": "STATE_SUCCEEDED",
      "entryId": "1",
      "navigationInfo": {
        "children": [
          "2"
        ],
        "next": "2"
      },
      "variableData": {}
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/2",
      "createTime": "2024-08-15T19:03:08.328851864Z",
      "updateTime": "2024-08-15T19:03:08.331099634Z",
      "routine": "main",
      "step": "checkSearchTermInInput",
      "stepType": "STEP_CONDITION",
      "state": "STATE_SUCCEEDED",
      "entryId": "2",
      "navigationInfo": {
        "children": [
          "3"
        ],
        "parent": "1",
        "next": "3",
        "previous": "1"
      },
      "variableData": {}
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/3",
      "createTime": "2024-08-15T19:03:08.331037314Z",
      "updateTime": "2024-08-15T19:03:08.331099554Z",
      "routine": "main",
      "step": "checkSearchTermInInput.condition1",
      "stepType": "STEP_ASSIGN",
      "state": "STATE_SUCCEEDED",
      "entryId": "3",
      "navigationInfo": {
        "parent": "2",
        "next": "4",
        "previous": "2"
      },
      "variableData": {
        "variables": {
          "input": {
            "searchTerm": "asia"
          },
          "searchTerm": "asia"
        }
      }
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/4",
      "createTime": "2024-08-15T19:03:08.331100404Z",
      "updateTime": "2024-08-15T19:03:08.633741469Z",
      "routine": "main",
      "step": "readWikipedia",
      "stepType": "STEP_CALL",
      "state": "STATE_SUCCEEDED",
      "entryId": "4",
      "navigationInfo": {
        "next": "5",
        "previous": "3"
      },
      "variableData": {}
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/5",
      "createTime": "2024-08-15T19:03:08.633969694Z",
      "updateTime": "2024-08-15T19:03:08.634063018Z",
      "routine": "main",
      "step": "returnOutput",
      "stepType": "STEP_RETURN",
      "state": "STATE_SUCCEEDED",
      "entryId": "5",
      "navigationInfo": {
        "previous": "4"
      },
      "variableData": {
        "variables": {
          "wikiResult": {
            "headers": {
              ...
            },
            "body": [
              ...
            ],
            "code": 200
          },
          "input": {
            "searchTerm": "asia"
          },
          "searchTerm": "asia"
        }
      }
    }
  ],
  "totalSize": 5
}

๋‹จ๊ณ„ ํ•ญ๋ชฉ ์‚ญ์ œ

์ง€์ •๋œ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ๋ชจ๋“  ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด projects.locations.workflows.executions.deleteExecutionHistory ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • WORKFLOW_NAME: ์›Œํฌํ”Œ๋กœ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • PROJECT_NUMBER: Google Cloudํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ
  • LOCATION: ์›Œํฌํ”Œ๋กœ๊ฐ€ ๋ฐฐํฌ๋˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค(์˜ˆ: us-central1).
  • EXECUTION_ID: ๋‹จ๊ณ„ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š” ์‹คํ–‰์˜ ID์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ ์‘๋‹ต ๋ณธ๋ฌธ์€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ

for ๋ธ”๋ก์„ ์‚ฌ์šฉํ•œ ์›Œํฌํ”Œ๋กœ

์›Œํฌํ”Œ๋กœ

YAML

- assignStep:
    assign:
      - sum: 0
- forStep:
    for:
      range: [1, 2]
      value: v
      steps:
        - sumStep:
            assign:
              - sum: ${sum + v}
- returnStep:
    return: ${sum}

JSON

[
  {
    "assignStep": {
      "assign": [
        {
          "sum": 0
        }
      ]
    }
  },
  {
    "forStep": {
      "for": {
        "range": [
          1,
          2
        ],
        "value": "v",
        "steps": [
          {
            "sumStep": {
              "assign": [
                {
                  "sum": "${sum + v}"
                }
              ]
            }
          }
        ]
      }
    }
  },
  {
    "returnStep": {
      "return": "${sum}"
    }
  }
]

๋‹ค์ด์–ด๊ทธ๋žจ

for ๋ธ”๋ก์„ ์‚ฌ์šฉํ•œ ์›Œํฌํ”Œ๋กœ
๊ทธ๋ฆผ 1. for ๋ธ”๋ก์ด ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ(๋‹ค์ด์–ด๊ทธ๋žจ์„ ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€)

๋‹จ๊ณ„ ํ•ญ๋ชฉ

{
  "stepEntries": [
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/1",
      "createTime": "2024-08-15T19:32:18.119578307Z",
      "updateTime": "2024-08-15T19:32:18.119661828Z",
      "routine": "main",
      "step": "assignStep",
      "stepType": "STEP_ASSIGN",
      "state": "STATE_SUCCEEDED",
      "entryId": "1",
      "navigationInfo": {
        "next": "2"
      },
      "variableData": {
        "variables": {
          "sum": 0
        }
      }
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/2",
      "createTime": "2024-08-15T19:32:18.119662643Z",
      "updateTime": "2024-08-15T19:32:18.120893531Z",
      "routine": "main",
      "step": "forStep",
      "stepType": "STEP_FOR",
      "state": "STATE_SUCCEEDED",
      "entryId": "2",
      "navigationInfo": {
        "children": [
          "3",
          "5"
        ],
        "next": "3",
        "previous": "1"
      },
      "stepEntryMetadata": {
        "progressType": "PROGRESS_TYPE_FOR",
        "expectedIteration": "2"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/3",
      "createTime": "2024-08-15T19:32:18.119732820Z",
      "updateTime": "2024-08-15T19:32:18.120463449Z",
      "routine": "main",
      "step": "forStep",
      "stepType": "STEP_FOR_ITERATION",
      "state": "STATE_SUCCEEDED",
      "entryId": "3",
      "navigationInfo": {
        "children": [
          "4"
        ],
        "parent": "2",
        "next": "4",
        "previous": "2"
      },
      "stepEntryMetadata": {
        "progressType": "PROGRESS_TYPE_FOR",
        "progressNumber": "1"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/4",
      "createTime": "2024-08-15T19:32:18.119737066Z",
      "updateTime": "2024-08-15T19:32:18.120463358Z",
      "routine": "main",
      "step": "sumStep",
      "stepType": "STEP_ASSIGN",
      "state": "STATE_SUCCEEDED",
      "entryId": "4",
      "navigationInfo": {
        "parent": "3",
        "next": "5",
        "previous": "3"
      },
      "stepEntryMetadata": {
        "progressType": "PROGRESS_TYPE_FOR",
        "progressNumber": "1"
      },
      "variableData": {
        "variables": {
          "sum": 1,
          "v": 1
        }
      }
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/5",
      "createTime": "2024-08-15T19:32:18.120465172Z",
      "updateTime": "2024-08-15T19:32:18.120893471Z",
      "routine": "main",
      "step": "forStep",
      "stepType": "STEP_FOR_ITERATION",
      "state": "STATE_SUCCEEDED",
      "entryId": "5",
      "navigationInfo": {
        "children": [
          "6"
        ],
        "parent": "2",
        "next": "6",
        "previous": "4"
      },
      "stepEntryMetadata": {
        "progressType": "PROGRESS_TYPE_FOR",
        "progressNumber": "2"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/6",
      "createTime": "2024-08-15T19:32:18.120470187Z",
      "updateTime": "2024-08-15T19:32:18.120893389Z",
      "routine": "main",
      "step": "sumStep",
      "stepType": "STEP_ASSIGN",
      "state": "STATE_SUCCEEDED",
      "entryId": "6",
      "navigationInfo": {
        "parent": "5",
        "next": "7",
        "previous": "5"
      },
      "stepEntryMetadata": {
        "progressType": "PROGRESS_TYPE_FOR",
        "progressNumber": "2"
      },
      "variableData": {
        "variables": {
          "sum": 3,
          "v": 2
        }
      }
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/7",
      "createTime": "2024-08-15T19:32:18.120894873Z",
      "updateTime": "2024-08-15T19:32:18.121003185Z",
      "routine": "main",
      "step": "returnStep",
      "stepType": "STEP_RETURN",
      "state": "STATE_SUCCEEDED",
      "entryId": "7",
      "navigationInfo": {
        "previous": "6"
      },
      "variableData": {
        "variables": {
          "sum": 3
        }
      }
    }
  ],
  "totalSize": 7
}

ํ•˜์œ„ ์›Œํฌํ”Œ๋กœ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•œ ์›Œํฌํ”Œ๋กœ

์›Œํฌํ”Œ๋กœ

YAML

main:
  steps:
    - callStep:
        call: square
        args:
          x: 10
        result: t
    - retStep:
        return: ${t}
square:
  params: [x]
  steps:
    - assignStep:
        assign:
          - y: ${x*x}
    - retStep:
        return: ${y}

JSON

{
  "main": {
    "steps": [
      {
        "callStep": {
          "call": "square",
          "args": {
            "x": 10
          },
          "result": "t"
        }
      },
      {
        "retStep": {
          "return": "${t}"
        }
      }
    ]
  },
  "square": {
    "params": [
      "x"
    ],
    "steps": [
      {
        "assignStep": {
          "assign": [
            {
              "y": "${x*x}"
            }
          ]
        }
      },
      {
        "retStep": {
          "return": "${y}"
        }
      }
    ]
  }
}

๋‹ค์ด์–ด๊ทธ๋žจ

ํ•˜์œ„ ์›Œํฌํ”Œ๋กœ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•œ ์›Œํฌํ”Œ๋กœ
๊ทธ๋ฆผ 2. ํ•˜์œ„ ์›Œํฌํ”Œ๋กœ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•œ ์›Œํฌํ”Œ๋กœ(๋‹ค์ด์–ด๊ทธ๋žจ์„ ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€)

๋‹จ๊ณ„ ํ•ญ๋ชฉ

{
  "stepEntries": [
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/1",
      "createTime": "2024-08-15T19:37:44.162778920Z",
      "updateTime": "2024-08-15T19:37:44.168683007Z",
      "routine": "main",
      "step": "callStep",
      "stepType": "STEP_CALL",
      "state": "STATE_SUCCEEDED",
      "entryId": "1",
      "navigationInfo": {
        "children": [
          "2",
          "3"
        ],
        "next": "2"
      },
      "variableData": {
        "variables": {
          "t": 100
        }
      }
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/2",
      "createTime": "2024-08-15T19:37:44.168598736Z",
      "updateTime": "2024-08-15T19:37:44.168657969Z",
      "routine": "square",
      "step": "assignStep",
      "stepType": "STEP_ASSIGN",
      "state": "STATE_SUCCEEDED",
      "entryId": "2",
      "navigationInfo": {
        "parent": "1",
        "next": "3",
        "previous": "1"
      },
      "variableData": {
        "variables": {
          "y": 100,
          "x": 10
        }
      }
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/3",
      "createTime": "2024-08-15T19:37:44.168659349Z",
      "updateTime": "2024-08-15T19:37:44.168676547Z",
      "routine": "square",
      "step": "retStep",
      "stepType": "STEP_RETURN",
      "state": "STATE_SUCCEEDED",
      "entryId": "3",
      "navigationInfo": {
        "parent": "1",
        "next": "4",
        "previous": "2"
      },
      "variableData": {
        "variables": {
          "x": 10,
          "y": 100
        }
      }
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/4",
      "createTime": "2024-08-15T19:37:44.168693503Z",
      "updateTime": "2024-08-15T19:37:44.168702324Z",
      "routine": "main",
      "step": "retStep",
      "stepType": "STEP_RETURN",
      "state": "STATE_SUCCEEDED",
      "entryId": "4",
      "navigationInfo": {
        "previous": "3"
      },
      "variableData": {
        "variables": {
          "t": 100
        }
      }
    }
  ],
  "totalSize": 4
}

์‹คํŒจํ•œ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ

์›Œํฌํ”Œ๋กœ

YAML

- tryStep:
    try:
      return: ${1 / 0}
    except:
      return: 0

JSON

[
  {
    "tryStep": {
      "try": {
        "return": "${1 / 0}"
      },
      "except": {
        "return": 0
      }
    }
  }
]

๋‹ค์ด์–ด๊ทธ๋žจ

์‹คํŒจํ•œ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ
๊ทธ๋ฆผ 3. ์‹คํŒจํ•œ ๋‹จ๊ณ„ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ(๋‹ค์ด์–ด๊ทธ๋žจ์„ ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€)

๋‹จ๊ณ„ ํ•ญ๋ชฉ

{
  "stepEntries": [
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/1",
      "createTime": "2024-08-15T19:42:51.415433810Z",
      "updateTime": "2024-08-15T19:42:51.416106923Z",
      "routine": "main",
      "step": "tryStep",
      "stepType": "STEP_TRY_RETRY_EXCEPT",
      "state": "STATE_SUCCEEDED",
      "entryId": "1",
      "navigationInfo": {
        "children": [
          "2",
          "4"
        ],
        "next": "2"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/2",
      "createTime": "2024-08-15T19:42:51.415439617Z",
      "updateTime": "2024-08-15T19:42:51.416065206Z",
      "routine": "main",
      "step": "tryStep",
      "stepType": "STEP_TRY",
      "state": "STATE_FAILED",
      "entryId": "2",
      "navigationInfo": {
        "children": [
          "3"
        ],
        "parent": "1",
        "next": "3",
        "previous": "1"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/3",
      "createTime": "2024-08-15T19:42:51.415441815Z",
      "updateTime": "2024-08-15T19:42:51.416064665Z",
      "routine": "main",
      "step": "tryStep.try",
      "stepType": "STEP_RETURN",
      "state": "STATE_FAILED",
      "exception": {
        "payload": "{\"message\":\"ZeroDivisionError: division by zero\",\"tags\":[\"ZeroDivisionError\",\"ArithmeticError\"]}"
      },
      "entryId": "3",
      "navigationInfo": {
        "parent": "2",
        "next": "4",
        "previous": "2"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/4",
      "createTime": "2024-08-15T19:42:51.416071869Z",
      "updateTime": "2024-08-15T19:42:51.416106840Z",
      "routine": "main",
      "step": "tryStep",
      "stepType": "STEP_EXCEPT",
      "state": "STATE_SUCCEEDED",
      "entryId": "4",
      "navigationInfo": {
        "children": [
          "5"
        ],
        "parent": "1",
        "next": "5",
        "previous": "3"
      },
      "variableData": {}
    },
    {
      "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/5",
      "createTime": "2024-08-15T19:42:51.416087217Z",
      "updateTime": "2024-08-15T19:42:51.416106742Z",
      "routine": "main",
      "step": "tryStep.except",
      "stepType": "STEP_RETURN",
      "state": "STATE_SUCCEEDED",
      "entryId": "5",
      "navigationInfo": {
        "parent": "4",
        "previous": "4"
      },
      "variableData": {}
    }
  ],
  "totalSize": 5
}

๋‹ค์Œ ๋‹จ๊ณ„