본문으로 건너뛰기

실행.취소()

그만큼.cancel()메서드는 Workflow 실행을 취소하고 실행을 중지하며 리소스를 정리합니다.

이 메서드는 실행 중인 모든 단계를 중단하고 Workflow 상태를 '취소됨'으로 업데이트합니다. 이는 활발하게 실행 중인 Workflow와 일시 중지/대기 중인 Workflow 모두에 적용됩니다.

사용예
사용예에 대한 직접 링크

const run = await workflow.createRun()

await run.cancel()
// Returns: { message: 'Workflow run canceled' }

매개변수
매개변수에 대한 직접 링크

매개변수 없음:

void
이 메서드는 매개변수를 받지 않습니다

보고
보고에 대한 직접 링크

result:

Promise<{ message: string }>
취소에 성공하면 { message: 'Workflow run canceled' }와 함께 완료되는 Promise

취소 작동 방식
취소 작동 방식에 대한 직접 링크

호출되면 Workflow는 다음을 수행합니다.

  1. 중단 신호 트리거- 표준 웹 API AbortSignal을 사용하여 실행 단계를 알립니다.
  2. 후속 단계 방지- 추가 단계는 실행되지 않습니다.

중단 신호 동작
중단 신호 동작에 대한 직접 링크

abortSignal 매개변수를 확인하는 단계는 취소에 응답할 수 있습니다.

  • 단계에서는 '중단' 이벤트를 수신할 수 있습니다.abortSignal.addEventListener('abort', callback)
  • 이미 중단되었는지 단계에서 확인할 수 있습니다.if (abortSignal.aborted) { ... }
  • 시간 초과, 네트워크 요청 또는 장기 실행 작업을 취소하는 데 유용합니다.

단계에서는 실행 중에 취소될 중단 신호를 적극적으로 확인해야 합니다. 그렇지 않으면 현재 단계가 완료될 때까지 실행되고 후속 단계는 실행되지 않습니다.

확장된 사용 예
확장된 사용 예에 대한 직접 링크

오류 발생 시 Workflow 취소
오류 발생 시 Workflow 취소에 대한 직접 링크

const run = await workflow.createRun()

try {
const result = await run.start({ inputData: { value: 'initial data' } })
} catch (error) {
await run.cancel()
}

취소에 응답하는 단계 만들기
취소에 응답하는 단계 만들기에 대한 직접 링크

const step = createStep({
id: 'long-running-step',
execute: async ({ inputData, abortSignal, abort }) => {
const timeout = new Promise(resolve => {
const timer = setTimeout(() => resolve('done'), 10000)

// Clean up if canceled
abortSignal.addEventListener('abort', () => {
clearTimeout(timer)
resolve('canceled')
})
})

const result = await timeout

// Check if aborted after async operation
if (abortSignal.aborted) {
return abort() // Stop execution
}

return { result }
},
})