

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 para Java Replay Behavior
<a name="programming-replay"></a>

Este tema trata sobre ejemplos de comportamiento de reproducción mediante ejemplos de la sección [¿Qué es AWS Flow Framework para Java?](welcome.md). Se tratan tanto escenarios [síncronos](#programming-replay-synchronous) como [asíncronos](#programming-replay-asynchronous).

## Ejemplo 1: reproducción síncrona
<a name="programming-replay-synchronous"></a>

Para ver un ejemplo de cómo funciona la reproducción en un flujo de trabajo sincrónico, modifique las implementaciones del [HelloWorldWorkflow](getting-started-example-helloworldworkflow.md)flujo de trabajo y de la actividad añadiendo `println` llamadas en sus respectivas implementaciones, 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](getting-started-example-helloworldworkflow.md). 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
<a name="programming-replay-asynchronous"></a>

De forma parecida al [ejemplo de reproducción síncrona](#programming-replay-synchronous), puede modificar [HelloWorldWorkflowAsync Solicitud](getting-started-example-helloworldworkflowasync.md) 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 usa tres episodios de repetició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
<a name="see-also"></a>
+ [AWS Flow Framework Conceptos básicos: ejecución distribuida](awsflow-basics-distributed-execution.md)