Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abbrechen einer Aufgabe für Amazon Simple Workflow Service
Über den Abbruch einer Aktivitätsaufgabe kann der Entscheider Aktivitäten beenden, die nicht mehr benötigt werden. Amazon SWF verwendet einen kooperativen Abbruchmechanismus und unterbricht laufende Aktivitätsaufgaben nicht zwangsweise. Sie müssen Ihre Aktivitäts-Worker so programmieren, dass sie Abbruchanforderungen abhandeln können.
Der Entscheider kann eine Aktivitätsaufgabe abbrechen, während diese eine Entscheidungsaufgabe verarbeitet. Der Entscheider beendet eine Aktivitätsaufgabe mit der Aktion RespondDecisionTaskCompleted
mit der Entscheidung RequestCancelActivityTask
.
Wenn die Aktivitätsaufgabe vom Aktivitäts-Worker noch nicht übernommen wurde, bricht der Service die Aufgabe ab. Beachten Sie, dass möglicherweise eine Race Condition (Wettlaufsituation) vorliegt, da ein Aktivitäts-Worker die Aufgabe jederzeit übernehmen könnte. Wenn die Aufgabe bereits einem Aktivitäts-Worker zugewiesen wurde, wird eine Anforderung zum Abbrechen der Aufgabe an den Aktivitäts-Worker gesendet.
In diesem Beispiel wurde der Workflow-Ausführung ein Signal zum Stornieren einer Bestellung gesendet.
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"}
Wenn die Workflow-Ausführung das Signal erhält, gibt Amazon SWF eine erfolgreiche HTTP-Antwort ähnlich wie im folgenden Beispiel zurück. Amazon SWF generiert eine Entscheidungsaufgabe, um den Entscheider darüber zu informieren, das Signal zu verarbeiten.
HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96
Wenn der Entscheider die Entscheidungsaufgabe verarbeitet und das Signal im Verlauf findet, versucht er, die offene Aktivität mit der Aktivitäts-ID ShipOrderActivity0001
abzubrechen. Die Aktivitäts-ID wird im Workflow-Verlauf durch die Aktivitätsplanung bereitgestellt.
https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RequestCancelActivityTask", "RequestCancelActivityTaskDecisionAttributes":{ "ActivityID":"ShipOrderActivity0001" } } ] }
Wenn Amazon SWF die Abbruchanforderung erfolgreich erhält, gibt eine erfolgreiche HTTP-Antwort ähnlich wie im folgenden Beispiel zurück:
HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96
Der Abbruchversuch wird im Verlauf als ActivityTaskCancelRequested
-Ereignis protokolliert.
Wenn die Aufgabe erfolgreich abgebrochen wurde — wie durch einActivityTaskCanceled
Event — Programmieren Sie Ihren Entscheider so, dass er die erforderlichen Schritte wie das Schließen der Workflow-Ausführung ausführt.
Wenn die Aktivitätsaufgabe nicht abgebrochen werden konnte - wenn die Aufgabe beispielsweise fehlschlägt oder eine Zeitüberschreibung auftritt, sollte der Entscheider die Ergebnisse der Aktivität akzeptieren oder je nach Anwendungsfall eine Bereinigung oder Vermeidung durchführen.
Wenn die Aktivitätsaufgabe bereits einem Aktivitäts-Worker zugewiesen wurde, wird die Abbruchanforderung über den Task-Heartbeat-Mechanismus übermittelt. Tätigkeit, die Mitarbeiter regelmäßig nutzen könnenRecordActivityTaskHeartbeat
um Amazon SWF zu berichten, dass die Aufgabe noch im Gange ist.
Beachten Sie, dass Aktivitäts-Worker keinen Heartbeat senden müssen, auch wenn dies für langfristige Aufgaben empfohlen wird. Für den Aufgabenabbruch sind regelmäßige Heartbeats erforderlich. Wenn der Worker keinen Heartbeat sendet, kann die Aufgabe nicht abgebrochen werden.
Wenn der Entscheider eine Anforderung zum Abbrechen der Aufgabe sendet, legt Amazon SWF den Wert dercancelRequest
Objekt auf „true“. Das Objekt cancelRequest
gehört zum Objekt ActivityTaskStatus
, das vom Service als Antwort auf RecordActivityTaskHeartbeat
zurückgegeben wird.
Amazon SWF verhindert nicht, dass eine Aktivitätsaufgabe, für die eine Abbruchanforderung gesendet wurde, erfolgreich abgeschlossen wird. Wie mit Abbruchanforderungen umgegangen wird, muss festgelegt werden. Programmieren Sie abhängig von Ihren Anforderungen den Aktivitäts-Worker so, dass die Aktivitätsaufgabe entweder abgebrochen oder Abbruchanforderung ignoriert wird.
Wenn Sie möchten, dass der Aktivitäts-Worker bestätigt, dass die Aktivitätsaufgabe abgebrochen wurde, programmieren Sie ihn so, dass die Antwort RespondActivityTaskCanceled
gesendet wird. Wenn Sie möchten, dass der Aktivitäts-Worker die Aufgabe abschließt, programmieren Sie ihn so, dass die Standardantwort RespondActivityTaskCompleted
gesendet wird.
Wenn Amazon SWF dieRespondActivityTaskCompleted
oderRespondActivityTaskCanceled
Wenn der Verlauf der Workflow-Ausführung aktualisiert wird, plant eine Entscheidungsaufgabe, um den Entscheider zu informieren.
Programmieren Sie den Entscheider so, dass die Entscheidungsaufgabe verarbeitet wird und alle zusätzlichen Entscheidungen zurückgegeben werden. Wenn die Aktivitätsaufgabe erfolgreich abgebrochen wurde, programmieren Sie den Entscheider so, dass die für das Fortführen oder Schließen der Workflow-Ausführung erforderlichen Aufgaben ausgeführt werden. Wenn die Aktivitätsaufgabe nicht erfolgreich abgebrochen wurde, programmieren Sie den Entscheider so, dass die Ergebnisse akzeptiert oder ignoriert werden oder eine Bereinigung geplant wird.