

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à.

# HelloWorld Applicazione
<a name="getting-started-example-helloworld"></a>

Per presentare il modo in cui sono strutturate le applicazioni Amazon SWF, creeremo un'applicazione Java che si comporta come un flusso di lavoro, ma che viene eseguita localmente in un unico processo. Non è richiesta alcuna connessione ad Amazon Web Services.

**Nota**  
L'[HelloWorldWorkflow](getting-started-example-helloworldworkflow.md)esempio si basa su questo, la connessione ad Amazon SWF per gestire la gestione del flusso di lavoro.

Un'applicazione del flusso di lavoro è composta da tre componenti base:
+ Un *lavoratore di attività* supporta un set di *attività*, ciascuna delle quali è un metodo che viene eseguito in modo indipendente per eseguire un determinato task.
+ Un *lavoratore di flusso di lavoro* orchestra l'esecuzione delle attività e gestisce il flusso di dati. Si tratta della realizzazione programmatica di una *topologia del flusso di lavoro* che è sostanzialmente un digramma di flusso che definisce il momento in cui vengono eseguite le diverse attività, sia che vengano eseguite in modo sequenziale o contemporaneamente.
+ Uno *starter di flusso di lavoro* avvia un'istanza di flusso di lavoro, chiamata *esecuzione*, e può interagire con essa durante l'esecuzione.

HelloWorld è implementato come tre classi e due interfacce correlate, descritte nelle sezioni seguenti. Prima di iniziare, è necessario configurare l'ambiente di sviluppo e creare un nuovo progetto AWS Java come descritto in[Configurazione di AWS Flow Framework per Java](setup.md). I pacchetti utilizzati per le seguenti procedure guidate sono stati tutti nominati `helloWorld.XYZ`. Per utilizzare questi nomi, imposta l'attributo `within` in aop.xml secondo quanto indicato di seguito: 

```
...
<weaver options="-verbose">
   <include within="helloWorld..*"/>
</weaver>
```

Per implementarlo HelloWorld, create un nuovo pacchetto Java nel vostro progetto AWS SDK denominato `helloWorld.HelloWorld` e aggiungete i seguenti file:
+ Un file di interfaccia denominato `GreeterActivities.java`
+ Un file di classe denominato `GreeterActivitiesImpl.java`, che implementa il lavoratore di attività.
+ Un file di interfaccia denominato `GreeterWorkflow.java`.
+ Un file di classe denominato `GreeterWorkflowImpl.java`, che implementa il lavoratore di flusso di lavoro.
+ Un file di classe denominato `GreeterMain.java`, che implementa lo starter di flusso di lavoro.

I dettagli sono illustrati nelle sezioni seguenti e includono il codice completo per ogni componente, che puoi aggiungere al file appropriato.

## HelloWorld Attività: implementazione
<a name="getting-started-example-helloworld.activityworker"></a>

HelloWorld suddivide l'operazione complessiva di stampa di un `"Hello World!"` messaggio di saluto sulla console in tre attività, ognuna delle quali viene eseguita con un *metodo di attività*. I metodi di attività sono definiti nell'interfaccia `GreeterActivities`, secondo quanto segue.

```
public interface GreeterActivities {
   public String getName();
   public String getGreeting(String name);
   public void say(String what);
}
```

HelloWorld ha un'implementazione di attività`GreeterActivitiesImpl`, che fornisce i `GreeterActivities` metodi illustrati:

```
public class GreeterActivitiesImpl implements GreeterActivities {
   @Override
   public String getName() {
      return "World";
   }

   @Override
   public String getGreeting(String name) {
      return "Hello " + name + "!";
   }

   @Override
   public void say(String what) {
      System.out.println(what);
   }
}
```

Le attività sono indipendenti una dall'altra e spesso possono essere utilizzate da diversi flussi di lavoro. Ad esempio, i flussi di lavoro che utilizzano l'attività `say` per visualizzare una stringa sulla console. I flussi di lavoro possono inoltre avere diverse implementazioni di attività e ognuna di essere esegue un set diverso di task.

## HelloWorld Workflow Worker
<a name="getting-started-example-helloworld.workflowworker"></a>

Per stampare «Hello World\$1» sulla console, le attività devono essere eseguite in sequenza nell'ordine corretto con i dati corretti. L'addetto al HelloWorld workflow orchestra l'esecuzione delle attività sulla base di una semplice *topologia lineare del flusso di lavoro*, illustrata nella figura seguente.

![\[Topologia del flusso di lavoro lineare\]](http://docs.aws.amazon.com/it_it/amazonswf/latest/awsflowguide/images/helloworld_topology.png)


Le tre attività vengono eseguite in sequenza e i dati fluiscono da un'attività a quella successiva.

L'operatore del HelloWorld workflow utilizza un unico metodo, il punto di ingresso del flusso di lavoro, definito nell'`GreeterWorkflow`interfaccia come segue: 

```
public interface GreeterWorkflow {
   public void greet();
}
```

La classe `GreeterWorkflowImpl` implementa l'interfaccia come mostrato di seguito:

```
public class GreeterWorkflowImpl implements GreeterWorkflow{
   private GreeterActivities operations = new GreeterActivitiesImpl();

   public void greet() {
      String name = operations.getName();
      String greeting = operations.getGreeting(name);
      operations.say(greeting);
   }
}
```

Il `greet` metodo implementa la HelloWorld topologia creando un'istanza di`GreeterActivitiesImpl`, chiamando ogni metodo di attività nell'ordine corretto e passando i dati appropriati a ciascun metodo.

## HelloWorld Workflow Starter
<a name="getting-started-example-helloworld.starter"></a>

Uno *starter di flusso di lavoro* è un'applicazione che avvia l'esecuzione del flusso di lavoro e che può comunicare con il flusso di lavoro durante l'esecuzione. La `GreeterMain` classe implementa il HelloWorld workflow starter, come segue:

```
public class GreeterMain {
   public static void main(String[] args) {
      GreeterWorkflow greeter = new GreeterWorkflowImpl();
      greeter.greet();
   }
}
```

`GreeterMain` crea un'istanza di `GreeterWorkflowImpl` e chiama `greet` per eseguire il lavoratore di flusso di lavoro. Esegui `GreeterMain` come applicazione Java e dovresti vedere «Hello World\$1» nell'output della console.