

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

Este tópico discute exemplos de comportamento de reprodução usando os exemplos da seção [O que é isso AWS Flow Framework para Java?](welcome.md). Os cenários [síncrono](#programming-replay-synchronous) e [assíncrono](#programming-replay-asynchronous) são discutidos.

## Exemplo 1: reprodução síncrona
<a name="programming-replay-synchronous"></a>

Para obter um exemplo de como a repetição funciona em um fluxo de trabalho síncrono, modifique as implementações do [HelloWorldWorkflow](getting-started-example-helloworldworkflow.md)fluxo de trabalho e da atividade adicionando `println` chamadas em suas respectivas implementações, da seguinte forma:

```
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 obter detalhes sobre o código, consulte [HelloWorldWorkflow Aplicação](getting-started-example-helloworldworkflow.md). O seguinte é uma versão editada da saída, com comentários que indicam o início de cada episódio de reprodução.

```
//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
```

O processo de reprodução desse exemplo funciona da seguinte forma:
+ O primeiro episódio programa a tarefa da atividade `getName`, que não tem dependências.
+ O segundo episódio programa a tarefa da atividade `getGreeting`, que depende de `getName`.
+ O terceiro episódio programa a tarefa da atividade `say`, que depende de `getGreeting`.
+ O episódio final não programa tarefas adicionais e não localiza atividades não concluídas, o que termina a execução do fluxo de trabalho. 

**nota**  
Os três métodos de cliente de atividades são chamados uma vez para cada episódio. Contudo, apenas uma dessas chamadas resulta em uma tarefa de atividade, portanto cada tarefa é executada apenas uma vez.

## Exemplo 2: reprodução assíncrona
<a name="programming-replay-asynchronous"></a>

Assim como no [exemplo de reprodução síncrona](#programming-replay-synchronous), você pode modificar o [HelloWorldWorkflowAsync Aplicação](getting-started-example-helloworldworkflowasync.md) para ver como uma reprodução assíncrona funciona. Ele produz o seguinte 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 três episódios de repetição porque há apenas duas atividades. A atividade `getGreeting` foi substituída pelo método de fluxo de trabalho assíncrono *getGreeting*, que não inicia um episódio de reprodução quando é concluído.

O primeiro episódio não chama `getGreeting`, porque depende da conclusão da atividade *nome*. Contudo, após a conclusão de *getName*, a reprodução chama *getGreeting* uma vez para cada episódio bem-sucedido.

## Consulte também
<a name="see-also"></a>
+ [AWS Flow Framework Conceitos básicos: execução distribuída](awsflow-basics-distributed-execution.md)