

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# AWS Flow Framework per Java Replay Behavior
<a name="programming-replay"></a>

Questo argomento presenta alcuni esempi relativi al comportamento di riproduzione, in base a quanto descritto nella sezione [Che cos'è AWS Flow Framework per Java?](welcome.md). Gli esempi forniti riguardano la riproduzione [sincrona](#programming-replay-synchronous) e a quella [asincrona](#programming-replay-asynchronous).

## Esempio 1: riproduzione sincrona
<a name="programming-replay-synchronous"></a>

Per un esempio di come funziona la replay in un flusso di lavoro sincrono, modificate le implementazioni del flusso di [HelloWorldWorkflow](getting-started-example-helloworldworkflow.md)lavoro e delle attività aggiungendo `println` chiamate all'interno delle rispettive implementazioni, come segue:

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

Per dettagli sul codice, consulta [HelloWorldWorkflow Applicazione](getting-started-example-helloworldworkflow.md). Quanto segue è una versione modificata dell'output, con commenti che indicano l'avvio di ogni episodio di riproduzione.

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

Il processo di riproduzione in questo esempio è il seguente:
+ Il primo episodio pianifica il task di attività `getName`, che non ha dipendenze.
+ Il secondo episodio pianifica il task di attività `getGreeting`, che dipende da `getName`.
+ Il terzo episodio pianifica il task di attività `say`, che dipende da `getGreeting`.
+ L'episodio finale non pianifica altri task e non trova alcuna attività non completata, di conseguenza l'esecuzione di flusso di lavoro risulta completata. 

**Nota**  
I tre metodi di client di attività vengono chiamati una volta per ogni episodio. Tuttavia, solo una di queste chiamate genera un task di attività, quindi ogni task viene eseguito una sola volta.

## Esempio 2: riproduzione asincrona
<a name="programming-replay-asynchronous"></a>

Come per l'[esempio di riproduzione sincrona](#programming-replay-synchronous), puoi modificare [HelloWorldWorkflowAsync Applicazione](getting-started-example-helloworldworkflowasync.md) per osservare il funzionamento della riproduzione asincrona. Viene generato il seguente output:

```
//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 utilizza tre episodi di replay perché ci sono solo due attività. L'attività `getGreeting` è stata sostituita dal metodo di flusso di lavoro asincrono *getGreeting*, che, quando completato, non avvia un episodio di riproduzione.

Il primo episodio non chiama `getGreeting` poiché dipende dal completamento dell'attività *name*. Tuttavia, dopo il completamento di *getName*, la riproduzione chiama *getGreeting* una volta per ogni episodio successivo.

## Vedi anche
<a name="see-also"></a>
+ [AWS Flow Framework Concetti di base: esecuzione distribuita](awsflow-basics-distributed-execution.md)