Stornierung von Amazon Simple Workflow Service-Aktivitäten - Amazon Simple Workflow Service

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.

Stornierung von Amazon Simple Workflow Service-Aktivitäten

Durch das Stornieren von Aktivitätsaufgaben kann der Entscheider Aktivitäten, die nicht mehr ausgeführt werden müssen, beenden. Amazon SWF verwendet einen kooperativen Stornierungsmechanismus und unterbricht laufende Aktivitätsaufgaben nicht gewaltsam. 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 empfängt, gibt Amazon SWF eine erfolgreiche HTTP-Antwort zurück, die der folgenden ähnelt. 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 Stornierungsanfrage erfolgreich empfängt, gibt es eine erfolgreiche HTTP-Antwort zurück, die der folgenden ähnelt:

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 storniert wurde — was durch ein ActivityTaskCanceled Ereignis angezeigt wird —, programmieren Sie Ihren Entscheider so, dass er nach dem Abbrechen der Aufgabe die entsprechenden Schritte ergreift, z. B. die Workflow-Ausführung zu beenden.

Wenn die Aktivitätsaufgabe nicht abgebrochen werden konnte, z. B. wenn die Aufgabe abgeschlossen ist, fehlschlägt oder ein Timeout eintritt, anstatt sie abzubrechen, sollte Ihr Entscheider die Ergebnisse der Aktivität akzeptieren oder alle aufgrund Ihres Anwendungsfalls erforderlichen Säuberungs- oder Abhilfemaßnahmen durchführen.

Wenn die Aktivitätsaufgabe bereits einem Aktivitäts-Worker zugewiesen wurde, wird die Abbruchanforderung über den Task-Heartbeat-Mechanismus übermittelt. Activity Worker können Amazon SWF in regelmäßigen Abständen melden, dass die Aufgabe noch in Bearbeitung ist. RecordActivityTaskHeartbeat

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 den Abbruch der Aufgabe anfordert, setzt Amazon SWF den Wert des cancelRequest Objekts auf true. Das Objekt cancelRequest gehört zum Objekt ActivityTaskStatus, das vom Service als Antwort auf RecordActivityTaskHeartbeat zurückgegeben wird.

Amazon SWF verhindert nicht den erfolgreichen Abschluss einer Aktivitätsaufgabe, deren Stornierung beantragt wurde. Es liegt an der Aktivität, zu entscheiden, wie mit der Stornierungsanfrage umgegangen werden soll. 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 die RespondActivityTaskCompleted RespondActivityTaskCanceled Oder-Anfrage erhält, aktualisiert es den Verlauf der Workflow-Ausführung und 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.