Amazon SWF SWF-Zeitüberschreitungstypen - AWS Flow Framework für Java

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.

Amazon SWF SWF-Zeitüberschreitungstypen

Um die korrekte Ausführung von Workflow-Ausführungen sicherzustellen, können Sie mit Amazon SWF in unterschiedliche Zeitüberschreitungen einstellen. Einige Zeitüberschreitungen legen fest, wie lange der Workflow insgesamt ausgeführt werden kann. Andere Zeitüberschreitungen legen fest, wie lange es dauern darf, bis Aktivitätsaufgaben einem Worker zugewiesen werden, und wie lange die Ausführung einer Aufgabe ab der Planung dauern darf. Alle Zeitüberschreitungen in der Amazon SWF SWF-API werden in Sekunden angegeben. Amazon SWF unterstützt auch den StringNONEals Zeitüberschreitungswert, der keine Zeitüberschreitung angibt.

Für Zeitüberschreitungen im Zusammenhang mit Entscheidungsaufgaben und Aktivitätsaufgaben fügt Amazon SWF ein Ereignis zum Verlauf der Workflow-Ausführung hinzu. Die Attribute des Ereignisses enthalten Informationen zum aufgetretenen Zeitüberschreitungstyp und der betroffenen Entscheidungs- oder Aktivitätsaufgabe. Amazon SWF plant auch eine Entscheidungsaufgabe. Wenn der Entscheider die neue Entscheidungsaufgabe empfängt, liest er das Zeitüberschreitungsereignis im Verlauf und ergreift entsprechende Maßnahmen, indem er die Aktion RespondDecisionTaskCompleted aufruft.

Eine Aufgabe gilt vom Zeitpunkt der Planung bis zum Schließen der Aufgabe als offen. Für Aufgaben, die gerade von einem Worker verarbeitet werden, wird daher der Status "offen" gesendet. Eine Aufgabe ist geschlossen, wenn ein Worker sie als abgeschlossen, abgebrochen oder fehlgeschlagen meldet. Eine Aufgabe kann auch von Amazon SWF aufgrund einer Zeitüberschreitung geschlossen werden.

Zeitüberschreitungen in Workflow- und Entscheidungsaufgaben

Die folgende Abbildung zeigt, wie Zeitüberschreitungen für Workflow- und Entscheidungsaufgaben sich auf die Lebensdauer eines Workflows auswirken:

Lebensdauer eines Workflows mit Zeitüberschreitungen

Für Workflow- und Entscheidungsaufgaben gibt es zwei relevante Zeitüberschreitungstypen:

  • Schließung vom Starten bis zum Schließen (timeoutType: START_TO_CLOSE)— Diese Zeitüberschreitung gibt die Höchstdauer an, die eine Workflow-Ausführung bis zum Abschluss dauern kann. Bei der Registrierung eines Workflows wird ein Standardwert festgelegt, der jedoch beim Starten des Workflows durch andere Werte überschrieben werden kann. Wenn diese Zeitüberschreitung auftritt, schließt Amazon SWF die Workflow-Ausführung und fügt eineVeranstaltungdes TypsWorkflowExecutionTimedOutzum Verlauf der Workflow-Ausführung. Neben dem timeoutType legen die Ereignisattribute auch die childPolicy fest, die sich auf die Workflow-Ausführung auswirkt. Die untergeordnete Richtlinie legt fest, wie mit untergeordneten Workflow-Ausführungen verfahren wird, wenn bei der übergeordneten Workflow-Ausführung eine Zeitüberschreitung auftritt oder sie anderweitig beendet wird. Wenn in der childPolicy beispielsweise TERMINATE festgelegt ist, werden die untergeordneten Workflow-Ausführungen beendet. Nachdem bei einer Workflow-Ausführung eine Zeitüberschreitung aufgetreten ist, können Sie als einzige Aktionen dafür noch Sichtbarkeitsaufrufe ausführen.

  • Schließung von Entscheidungsaufgabe (timeoutType: START_TO_CLOSE)— Diese Zeitüberschreitung gibt die Höchstdauer an, die der zugehörige Entscheider eine Entscheidungsaufgabe ausführen kann. Sie wird während der Registrierung des Workflow-Typs festgelegt. Wenn diese Zeitüberschreitung auftritt, wird für die Aufgabe im Verlauf der Workflow-Ausführung eine Zeitüberschreitung eingetragen und Amazon SWF fügt ein Ereignis vom Typ hinzuDecisionTaskTimedOutzum Workflow-Verlauf. Die Ereignisattribute enthalten die IDs für die Ereignisse, die dem Zeitpunkt entsprechen, zu dem die Entscheidungsaufgabe geplant (scheduledEventId) und gestartet (startedEventId) wurde. Amazon SWF plant nicht nur das Ereignis, sondern plant auch eine neue Entscheidungsaufgabe, um den Entscheider über die Zeitüberschreitung zu informieren. Nach einer Zeitüberschreitung schlagen Versuche, die abgelaufene Entscheidungsaufgabe mit RespondDecisionTaskCompleted abzuschließen, fehl.

Zeitüberschreitungen in Aktivitätsaufgaben

Die folgende Abbildung zeigt, wie Zeitüberschreitungen sich auf die Lebensdauer einer Aktivitätsaufgabe auswirken:

Lebensdauer einer Aufgabe mit Zeitüberschreitungen

Für Aktivitätsaufgaben gibt es vier relevante Zeitüberschreitungstypen:

  • Aktivitätsaufgabe — Anfang bis Ende (timeoutType: START_TO_CLOSE)— Diese Zeitüberschreitung gibt die Höchstdauer an, die ein Aktivitäts-Worker eine Aufgabe nach Erhalt einer Aufgabe benötigen kann. Versuche, eine abgelaufene Aktivitätsaufgabe mit RespondActivityTaskCanceled, RespondActivityTaskCompleted und RespondActivityTaskFailed zu schließen, schlagen fehl.

  • Heartbeat für Aktivitätsaufgaben (timeoutType: HEARTBEAT)— Diese Zeitüberschreitung gibt die Höchstdauer an, die eine Aufgabe ausgeführt werden kann, bevor deren Fortschritt durch dieRecordActivityTaskHeartbeatAktion

  • Aktivitätsaufgabenplanung bis zum Starten (timeoutType: SCHEDULE_TO_START)— Diese Zeitüberschreitung gibt an, wie lange Amazon SWF wartet, bevor die Aktivitätsaufgabe abläuft, wenn keine Worker für die Ausführung der Aufgabe verfügbar sind. Nach der Zeitüberschreitung wird die abgelaufene Aufgabe keinem anderen Worker zugewiesen.

  • Zu schließender Aktivitätsaufgabenplan (timeoutType: SCHEDULE_TO_CLOSE)— Diese Zeitüberschreitung gibt an, wie lange die Aufgabe vom geplanten Zeitpunkt bis zum Abschluss dauern kann. Dieser Wert sollte nicht größer sein als die Summe der Werte "task schedule-to-start timeout" und "task start-to-close timeout".

Anmerkung

Jeder Zeitüberschreitungstyp verfügt übe einen Standardwert, in der Regel NONE (unendlich). Die Höchstdauer für die Ausführung einer Aktivität ist jedoch auf ein Jahr beschränkt.

Die Standardwerte für diese Zeitüberschreitungen werden während der Registrierung des Aktivitätstyps festgelegt, können jedoch beim Planen der Aktivitätsaufgabe überschrieben werden. Wenn eine Zeitüberschreitung auftritt, fügt Amazon SWF eineVeranstaltungdes TypsActivityTaskTimedOutzum Workflow-Verlauf. Das Wertattribut timeoutType dieses Ereignisses gibt an, welche dieser Zeitüberschreitungen aufgetreten ist. Der Wert von timeoutType für jede Zeitüberschreitung ist in Klammern angegeben. Die Ereignisattribute enthalten auch die IDs für die Ereignisse, die dem Zeitpunkt entsprechen, zu dem die Aktivitätsaufgabe geplant (scheduledEventId) und gestartet (startedEventId) wurde. Amazon SWF plant nicht nur das Ereignis, sondern plant auch eine neue Entscheidungsaufgabe, um den Entscheider über die Zeitüberschreitung zu informieren.