AWS Flow Framework Conceptos básicos: listas de tareas y ejecución de tareas - AWS Flow Framework para Java

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS Flow Framework Conceptos básicos: listas de tareas y ejecución de tareas

Para gestionar las tareas de flujo de trabajo y de actividad, Amazon SWF las publica en listas con nombres nominados. Amazon SWF mantiene al menos dos listas de tareas, una para los procesos de trabajo de los flujos de trabajo y otra para los procesos de trabajo de las actividades.

nota

Puede especificar tantas listas de tareas como necesite, con diferentes procesos de trabajo asignados a cada lista. No existe ningún límite en el número de listas de tareas. Típicamente especificará la lista de tareas de un proceso de trabajo en la aplicación host del proceso de trabajo al crear el objeto del proceso de trabajo.

El siguiente extracto de la aplicación host HelloWorldWorkflow crea un nuevo proceso de trabajo de actividad y lo asigna a la lista de tareas de actividades 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(); ... } }

De manera predeterminada, Amazon SWF programa las tareas del proceso de trabajo en la lista HelloWorldList. A continuación, el proceso de trabajo sondea la lista en busca de tareas. Puede asignar cualquier nombre a una lista de tareas. Incluso puede usar el mismo nombre para las listas de flujo de trabajo y de actividades. Internamente, Amazon SWF pone los nombres de las listas de tareas de flujo de trabajo y de actividad en diferentes espacios de nombres, por lo que las dos listas estarán diferenciadas.

Si no especificas una lista de tareas, AWS Flow Framework especifica una lista predeterminada cuando el trabajador registra el tipo en Amazon SWF. Para obtener más información, consulte Registro de tipos de flujos de trabajo y de actividades.

En ocasiones resulta útil que un proceso de trabajo específico o un grupo de procesos de trabajo realice determinadas tareas. Por ejemplo, un flujo de trabajo de procesamiento de imágenes podría utilizar una actividad para descargar una imagen y otra actividad para procesar la imagen. Resulta más eficaz realizar ambas tareas en el mismo sistema y evitar los costos de transferencia de grandes archivos a través de la red.

Para respaldar dichos escenarios, puede especificar explícitamente una lista de tareas al llamar a un método de cliente de actividad utilizando una sobrecarga que incluye un parámetro schedulingOptions. Para especificar la lista de tareas, pase al método un ActivitySchedulingOptions objeto configurado adecuadamente.

Por ejemplo, imagine que la actividad say de la aplicación HelloWorldWorkflow es hospedada por un proceso de trabajo de actividad distinto de getName y getGreeting. El siguiente ejemplo muestra cómo garantizar que say utiliza la misma lista de tareas que getName y getGreeting, incluso si se habían asignado 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); } }

El método asíncrono runSay obtiene la lista de tareas getGreeting de su objeto de cliente. A continuación crea y configura un objeto ActivitySchedulingOptions que garantiza que say sondea la misma lista de tareas que getGreeting.

nota

Cuando pasa un parámetro schedulingOptions a un método de cliente de actividad, anula la lista de tareas original solo para la ejecución de esa actividad. Si llama de nuevo al método del cliente de actividades sin especificar una lista de tareas, Amazon SWF asignará la tarea a la lista original y el proceso de trabajo de actividad sondeará esa lista.