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.
AWS Flow Framework Grundlegende Konzepte: Aufgabenlisten und Aufgabenausführung
Amazon SWF verwaltet Workflow- und Aktivitätsaufgaben, indem sie in benannten Listen veröffentlicht werden. Amazon SWF verwaltet mindestens zwei Aufgabenlisten, eine für Workflow-Worker und eine für Aktivitäts-Worker.
Anmerkung
Sie können beliebig viele Aufgabenlisten angeben, wobei jeder Liste unterschiedliche Worker zugeordnet sind. Die Anzahl der Aufgabenlisten ist unbegrenzt. In der Regel geben Sie die Aufgabenliste eines Workers in der Worker-Host-Anwendung an, sobald Sie das Worker-Objekt erstellen.
Der folgende Auszug aus der HelloWorldWorkflow
-Host-Anwendung legt einen neuen Aktivitäts-Worker an und ordnet ihn der Aktivitätsaufgabenliste HelloWorldList
zu.
public class GreeterWorker { public static void main(String[] args) throws Exception { ... String domain = " helloWorldExamples"; String taskListToPoll = "HelloWorldList"; ActivityWorker aw = new ActivityWorker(service, domain, taskListToPoll); aw.addActivitiesImplementation(new GreeterActivitiesImpl()); aw.start(); ... } }
Standardmäßig plant Amazon SWF die Aufgaben des Auftragnehmers in der HelloWorldList
Liste. Dann fragt der Worker diese Liste nach Aufgaben ab. Sie können einer Aufgabenliste einen beliebigen Namen zuweisen. Sie können sogar den gleichen Namen für Workflow- und Aktivitätslisten verwenden. Intern platziert Amazon SWF Namen von Workflow- und Aktivitätsaufgabenlisten in verschiedenen Namespaces, sodass die beiden Listen unterschiedlich sind.
Wenn Sie keine Aufgabenliste angeben, AWS Flow Framework gibt die eine Standardliste an, wenn der Auftragnehmer den Typ bei Amazon SWF registriert. Weitere Informationen finden Sie unter Registrierung von Workflow- und Aktivitätstypen.
Manchmal ist es sinnvoll, einen bestimmten Worker oder eine bestimmte Gruppe von Workern bestimmte Aufgaben ausführen zu lassen. Beispielsweise kann ein Bildverarbeitungs-Workflow eine Aktivität verwenden, um ein Bild herunterzuladen und eine andere Aktivität, um das Bild zu bearbeiten. Es ist effizienter, beide Aufgaben auf dem gleichen System auszuführen und den Overhead der Übertragung großer Dateien über das Netzwerk zu vermeiden.
Um solche Szenarien zu unterstützen, können Sie beim Aufruf einer Activity-Client-Methode explizit eine Aufgabenliste angeben, indem Sie einen Overload mit einem schedulingOptions
-Parameter verwenden. Sie geben die Aufgabenliste an, indem Sie der Methode ein entsprechend konfiguriertes ActivitySchedulingOptions
Objekt übergeben.
Nehmen wir beispielsweise an, die say
-Aktivität der HelloWorldWorkflow
-Anwendung wird von einem anderen Aktivitäts-Worker als getName
und getGreeting
gehostet. Das folgende Beispiel zeigt, wie Sie sicherstellen können, dass say
dieselbe Aufgabenliste wie getName
und getGreeting
verwendet (auch wenn sie ursprünglich verschiedenen Listen zugeordnet waren).
public class GreeterWorkflowImpl implements GreeterWorkflow { private GreeterActivitiesClient operations1 = new GreeterActivitiesClientImpl1(); //getGreeting and getName private GreeterActivitiesClient operations2 = new GreeterActivitiesClientImpl2(); //say @Override public void greet() { Promise<String> name = operations1.getName(); Promise<String> greeting = operations1.getGreeting(name); runSay(greeting); } @Asynchronous private void runSay(Promise<String> greeting){ String taskList = operations1.getSchedulingOptions().getTaskList(); ActivitySchedulingOptions schedulingOptions = new ActivitySchedulingOptions(); schedulingOptions.setTaskList(taskList); operations2.say(greeting, schedulingOptions); } }
Die asynchrone runSay
-Methode ruft die getGreeting
-Aufgabenliste aus seinem Client-Objekt ab. Dann erstellt und konfiguriert es ein ActivitySchedulingOptions
-Objekt. Dieses stellt sicher, dass say
dieselbe Aufgabenliste wie getGreeting
abfragt.
Anmerkung
Wenn Sie einen schedulingOptions
-Parameter an eine Activity-Client-Methode übergeben, überschreibt dieser den ursprünglichen Aufgabenplan nur für diese Aktivitätsausführung. Wenn Sie die Aktivitäts-Client-Methode erneut aufrufen, ohne eine Aufgabenliste anzugeben, weist Amazon SWF die Aufgabe der ursprünglichen Liste zu, und der Aktivitäts-Worker fragt diese Liste ab.