AWS Flow Framework Concetti di base: elenchi di attività ed esecuzione delle attività - AWS Flow Framework per Java

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS Flow Framework Concetti di base: elenchi di attività ed esecuzione delle attività

Amazon SWF gestisce i flussi di lavoro e le attività pubblicandoli in elenchi denominati. Amazon SWF mantiene almeno due elenchi di attività, uno per i lavoratori del flusso di lavoro e uno per gli addetti alle attività.

Nota

Puoi specificare il numero di elenchi di task che preferisci, con lavoratori diversi assegnati a ogni elenco. Non vi è alcun limite al numero di elenchi di task. Solitamente, puoi specificare un elenco di task del lavoratore nell'applicazione host del lavoratore quando crei l'oggetto del lavoratore.

Il seguente estratto dall'applicazione host HelloWorldWorkflow crea un nuovo lavoratore di attività e lo assegna all'elenco di task di attività HelloWorldList.

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(); ... } }

Per impostazione predefinita, Amazon SWF pianifica le attività del lavoratore nell'HelloWorldListelenco. In seguito il lavoratore analizza l'elenco alla ricerca di task. Puoi assegnare all'elenco di task il nome che preferisci. Puoi anche utilizzare lo stesso nome per gli elenchi di flusso di lavoro e attività. Internamente, Amazon SWF inserisce i nomi degli elenchi di attività e flussi di lavoro in namespace diversi, quindi i due elenchi saranno distinti.

Se non specifichi un elenco di attività, AWS Flow Framework specifica un elenco predefinito quando il lavoratore registra il tipo con Amazon SWF. Per ulteriori informazioni, consulta Registrazione dei tipi di flusso di lavoro e di attività.

A volte è utile che un lavoratore o un gruppo di lavoratori specifici eseguano determinati task. Ad esempio, un flusso di lavoro di elaborazione delle immagini potrebbe utilizzare un'attività per scaricare un'immagine e un'altra per elaborarla. È più efficiente eseguire entrambi i task sullo stesso sistema ed evitare costi legati al trasferimento di file di grandi dimensioni all'interno della rete.

Per supportare tali scenari, puoi specificare in modo esplicito un elenco di task quando chiami un metodo client di attività utilizzando un overload che include un parametro schedulingOptions. È possibile specificare l'elenco delle attività passando al metodo un oggetto configurato in modo appropriato. ActivitySchedulingOptions

Ad esempio, supponiamo che l'attività say dell'applicazione HelloWorldWorkflow sia ospitata da un lavoratore di attività diverso da getName e getGreeting. Il seguente esempio mostra come garantire che say utilizzi lo stesso elenco di task di getName e getGreeting, anche se originariamente sono stati assegnati a elenchi diversi.

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); } }

Il metodo asincrono runSay ottiene l'elenco di task getGreeting dall'oggetto client. Poi crea e configura un oggetto ActivitySchedulingOptions che garantisca che say analizzi lo stesso elenco di task di getGreeting.

Nota

Quando passi un parametro schedulingOptions a un metodo client di attività, questo sovrascrive l'elenco di task originale soltanto per l'esecuzione di quell'attività. Se richiami nuovamente il metodo activities client senza specificare un elenco di attività, Amazon SWF assegna l'attività all'elenco originale e l'activity worker analizzerà tale elenco.