AWS Flow Framework Conceitos básicos: listas de tarefas e execução de tarefas - AWS Flow Framework para Java

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS Flow Framework Conceitos básicos: listas de tarefas e execução de tarefas

O Amazon SWF gerencia o fluxo de trabalho e as tarefas de atividade postando-as em listas nomeadas. O Amazon SWF mantém pelo menos duas listas de tarefas, uma para trabalhadores de fluxo de trabalho e outra para trabalhadores de atividades.

nota

Você pode especificar quantas listas de tarefas forem necessárias, com diferentes operadores atribuídos a cada lista. Não há um limite para o número de listas de tarefas. Normalmente, você especifica uma lista de tarefas do operador no aplicativo de host de operador ao criar o objeto do operador.

O trecho do aplicativo de host HelloWorldWorkflow a seguir cria um novo operador de atividades e o atribui à lista de tarefas de atividades 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(); ... } }

Por padrão, o Amazon SWF agenda as tarefas do trabalhador na lista HelloWorldList. Em seguida, o operador pesquisa tarefas nessa lista. Você pode atribuir qualquer nome a uma lista de tarefas. Você pode até usar o mesmo nome para listas de fluxos de trabalho e de atividades. Internamente, o Amazon SWF coloca os nomes do fluxo de trabalho e da lista de tarefas de atividades em namespaces diferentes, de modo que as duas listas serão distintas.

Se você não especificar uma lista de tarefas, ela AWS Flow Framework especifica uma lista padrão quando o trabalhador registra o tipo no Amazon SWF. Para ter mais informações, consulte Registro do tipo de fluxo de trabalho e atividade.

Às vezes é útil fazer com que um operador ou um grupo de operadores específico execute determinadas tarefas. Por exemplo, um fluxo de trabalho de processamento de imagem pode usar uma atividade para fazer download de uma imagem e outra atividade para processar a imagem. É mais eficiente executar as duas tarefas no mesmo sistema e evitar a sobrecarga de transferir grandes arquivos pela rede.

Para oferecer suporte a esses cenários, você pode especificar explicitamente uma lista de tarefas ao chamar um método de cliente de atividades usando uma sobrecarga que inclua um parâmetro schedulingOptions. Você especifica a lista de tarefas passando ao método um ActivitySchedulingOptions objeto configurado adequadamente.

Por exemplo, suponha que a atividade say do aplicativo HelloWorldWorkflow seja hospedada por um operador de atividades diferente de getName e de getGreeting. O exemplo a seguir mostra como garantir que say use a mesma lista de tarefas que getName e getGreeting, mesmo que tenham sido atribuídos originalmente a listas diferentes.

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

O método assíncrono runSay obtém a lista de tarefas de getGreeting de seu objeto de cliente. Em seguida, ele cria e configura um objeto ActivitySchedulingOptions que garante que say pesquise a mesma lista de tarefas que getGreeting.

nota

Quando você passa um parâmetro schedulingOptions para um método de cliente de atividades, ele substitui a lista de tarefas original apenas para essa execução de atividade. Se você chamar o método do cliente activities novamente sem especificar uma lista de tarefas, o Amazon SWF atribuirá a tarefa à lista original e o activity worker pesquisará essa lista.