Amazon Simple Workflow Service 활동 작업 취소 - Amazon Simple Workflow Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Simple Workflow Service 활동 작업 취소

활동 작업 취소를 통해 결정자는 더 이상 수행할 필요가 없는 활동을 종료할 수 있습니다. Amazon SWF는 협력적 취소 메커니즘을 사용하며 실행 중인 활동 작업을 강제로 중단하지 않습니다. 취소 요청을 처리하도록 활동 작업자를 프로그래밍해야 합니다.

결정자는 결정 작업을 처리하는 중에 활동 작업 취소를 결정할 수 있습니다. 활동 작업을 취소하려면 결정자는 RespondDecisionTaskCompleted 작업을 RequestCancelActivityTask 결정으로 사용합니다.

활동 작업자가 아직 인수하지 않은 활동 작업은 서비스에서 취소합니다. 활동 작업자가 언제든지 작업을 인수할 수 있는 잠재적 경합 상태도 있습니다. 작업이 이미 활동 작업자에게 할당된 경우 활동 작업자는 해당 작업을 취소하라는 요청을 받습니다.

이 예에서는 워크플로 실행으로 신호를 보내 주문을 취소합니다.

https://swf.us-east-1.amazonaws.com SignalWorkflowExecution {"domain": "867530901", "workflowId": "20110927-T-1", "runId": "9ba33198-4b18-4792-9c15-7181fb3a8852", "signalName": "CancelOrder", "input": "order 3553"}

워크플로 실행이 신호를 수신하면 Amazon SWF는 다음과 유사한 성공적인 HTTP 응답을 반환합니다. Amazon SWF는 결정 작업을 생성하여 결정자에게 신호를 처리하도록 알립니다.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

결정자가 결정 작업을 처리하고 내역에서 신호를 확인한 경우 결정자는 활동 ID가 ShipOrderActivity0001인 대기 중인 활동을 취소하려고 합니다. 활동 ID는 예약 활동 작업 이벤트의 워크플로 내역에 제공됩니다.

https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RequestCancelActivityTask", "RequestCancelActivityTaskDecisionAttributes":{ "ActivityID":"ShipOrderActivity0001" } } ] }

Amazon SWF가 취소 요청을 성공적으로 수신하면 다음과 유사한 성공적인 HTTP 응답을 반환합니다.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

취소 시도는 내역에 ActivityTaskCancelRequested 이벤트로 기록됩니다.

작업이 성공적으로 취소되면 (ActivityTaskCanceled이벤트로 표시됨) 워크플로 실행 종료와 같이 결정자가 작업 취소에 뒤따라야 하는 적절한 단계를 취하도록 프로그래밍합니다.

활동 작업을 취소할 수 없는 경우(예: 작업이 완료, 실패 또는 취소하는 대신 시간이 초과된 경우) 결정자는 활동 결과를 수락하거나 사용 사례에 따라 필요한 정리 또는 완화 조치를 취해야 합니다.

활동 작업자가 이미 활동 작업을 인수한 경우 취소 요청은 작업-하트비트 메커니즘을 통해 전송됩니다. 활동 작업자는 정기적으로 RecordActivityTaskHeartbeat를 사용하여 Amazon SWF에 작업이 계속 진행 중임을 보고할 수 있습니다.

장시간 실행 작업에는 하트비트를 사용하는 것이 좋지만, 활동 작업자는 그렇게 하지 않아도 됩니다. 작업을 취소하려면 정기 하트비트를 기록해야 합니다. 작업자가 하트비트를 사용하지 않는 경우 작업을 취소할 수 없습니다.

결정자가 작업 취소를 요청한 경우 Amazon SWF는 cancelRequest 객체의 값을 true로 설정합니다. cancelRequest 객체는 RecordActivityTaskHeartbeat에 대한 응답으로 서비스에서 반환하는 ActivityTaskStatus 객체의 일부입니다.

Amazon SWF는 취소 요청된 활동 작업의 완료를 방해하지 않습니다. 따라서 취소 요청을 처리하는 방법은 활동에 따라 달라집니다. 요구 사항에 따라 활동 작업을 취소하거나 취소 요청을 무시하도록 활동 작업자를 프로그래밍하십시오.

활동 작업이 취소되었을 때 활동 작업자가 이를 표시하게 하려면 RespondActivityTaskCanceled로 응답하도록 프로그래밍합니다. 활동 작업자가 작업을 완료하게 하려면 표준 RespondActivityTaskCompleted로 응답하도록 프로그래밍합니다.

RespondActivityTaskCompleted 또는 RespondActivityTaskCanceled 요청을 받은 Amazon SWF는 워크플로 실행 내역을 업데이트하고 결정 작업을 예약해 결정자에게 알립니다.

결정 작업을 처리하고 추가 결정이 있으면 표시하도록 결정자를 프로그래밍합니다. 활동 작업이 취소되면 워크플로 실행을 계속하거나 닫는 데 필요한 작업을 수행하도록 결정자를 프로그래밍합니다. 활동 작업이 취소되지 않은 경우, 결과를 수락 또는 무시하거나 필요한 정리 단계를 예약하도록 결정자를 프로그래밍합니다.