Comportamiento de reproducción de AWS Flow Framework para Java - 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.

Comportamiento de reproducción de AWS Flow Framework para Java

Este tema trata sobre ejemplos de comportamiento de reproducción mediante ejemplos de la sección ¿Qué es AWS Flow Framework para Java?. Se tratan tanto escenarios síncronos como asíncronos.

Ejemplo 1: reproducción síncrona

Para obtener un ejemplo de cómo funciona la reproducción en un flujo de trabajo síncrono, modifique el flujo de trabajo HelloWorldWorkflow y las implementaciones de actividad añadiendo llamadas println dentro de sus implementaciones respectivas, de la siguiente manera:

public class GreeterWorkflowImpl implements GreeterWorkflow { ... public void greet() { System.out.println("greet executes"); Promise<String> name = operations.getName(); System.out.println("client.getName returns"); Promise<String> greeting = operations.getGreeting(name); System.out.println("client.greeting returns"); operations.say(greeting); System.out.println("client.say returns"); } } ************** public class GreeterActivitiesImpl implements GreeterActivities { public String getName() { System.out.println("activity.getName completes"); return "World"; } public String getGreeting(String name) { System.out.println("activity.getGreeting completes"); return "Hello " + name + "!"; } public void say(String what) { System.out.println(what); } }

Para más detalles sobre el código, consulte HelloWorldWorkflow Solicitud. Se muestra a continuación una versión editada del resultado, con comentarios que indican el comienzo de cada episodio de reproducción.

//Episode 1 greet executes client.getName returns client.greeting returns client.say returns activity.getName completes //Episode 2 greet executes client.getName returns client.greeting returns client.say returns activity.getGreeting completes //Episode 3 greet executes client.getName returns client.greeting returns client.say returns Hello World! //say completes //Episode 4 greet executes client.getName returns client.greeting returns client.say returns

El proceso de reproducción para este ejemplo funciona de la siguiente manera:

  • El primer episodio programa la tarea de actividad getName, que no tiene dependencias.

  • El segundo episodio programa la tarea de actividad getGreeting, que depende de getName.

  • El tercer episodio programa la tarea de actividad say, que depende de getGreeting.

  • El último episodio no programa tareas adicionales y no encuentra actividades sin completar, lo que termina la ejecución del flujo de trabajo.

nota

Se llama una vez a los tres métodos de cliente de actividades para cada episodio. No obstante, solo una de esas llamadas produce una tarea de actividad, por lo que cada tarea solo se realiza una vez.

Ejemplo 2: reproducción asíncrona

De forma parecida al ejemplo de reproducción síncrona, puede modificar Aplicación HelloWorldWorkflowAsync para ver cómo funciona una reproducción asíncrona. Produce el siguiente resultado:

//Episode 1 greet executes client.name returns workflow.getGreeting returns client.say returns activity.getName completes //Episode 2 greet executes client.name returns workflow.getGreeting returns client.say returns workflow.getGreeting completes Hello World! //say completes //Episode 3 greet executes client.name returns workflow.getGreeting returns client.say returns workflow.getGreeting completes

HelloWorldAsync utiliza tres episodios de reproducción porque solo hay dos actividades. La actividad getGreeting se ha sustituido por el método de flujo de trabajo asíncrono getGreeting que no inicia un episodio de reproducción cuando se completa.

El primer episodio no llama a getGreeting, porque depende de la finalización de la actividad nombre. No obstante, una vez que se completa getName, la reproducción llama a getGreeting una vez para cada episodio subsiguiente.

Véase también