

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.

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

Para presentar de qué manera se estructuran las aplicaciones de Amazon SW, crearemos una aplicación de Java que se comporta como flujo de trabajo, pero que se ejecuta localmente en un proceso individual. No será necesario conectarse a Amazon Web Services.

**nota**  
El [HelloWorldWorkflow](getting-started-example-helloworldworkflow.md)ejemplo se basa en este ejemplo y se conecta a Amazon SWF para gestionar el flujo de trabajo.

Una aplicación de flujo de trabajo consta de tres componentes básicos:
+ Un *proceso de trabajo de actividades* admite un conjunto de *actividades*, cada uno de ellos es un método que se ejecuta de manera independiente para realizar una tarea en particular.
+ Un *proceso de trabajo de flujo de trabajo* organiza la ejecución de las actividades y administra el flujo de datos. Se trata de una realización programática de una *topología de flujo de trabajo*, que es básicamente un diagrama que define cuándo se ejecutan las diferentes actividades, si se ejecutan secuencial o simultáneamente, etc.
+ Un *iniciador de flujo de trabajo* comienza una instancia de flujo de trabajo, que se denomina *ejecución*, y puede interactuar con ella durante la ejecución.

HelloWorld se implementa como tres clases y dos interfaces relacionadas, que se describen en las siguientes secciones. Antes de empezar, debe configurar su entorno de desarrollo y crear un nuevo proyecto AWS Java, tal y como se describe en[Configuración del AWS Flow Framework para Java](setup.md). Los paquetes utilizados para los siguientes tutoriales se denominan todos `helloWorld.XYZ`. Para utilizar esos nombre, configure el atributo `within` en aop.xml tal y como se indica a continuación: 

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

Para implementarlo HelloWorld, cree un nuevo paquete Java en su proyecto de AWS SDK con el nombre `helloWorld.HelloWorld` y añada los siguientes archivos:
+ Un archivo de interfaz denominado `GreeterActivities.java`
+ Un archivo de clase denominado `GreeterActivitiesImpl.java`, que implementa el proceso de trabajo de actividades.
+ Un archivo de interfaz denominado `GreeterWorkflow.java`.
+ Un archivo de clase denominado `GreeterWorkflowImpl.java`, que implementa el proceso de trabajo de flujo de trabajo.
+ Un archivo de clase denominado `GreeterMain.java`, que implementa el iniciador de flujo de trabajo.

Los detalles se discuten en las siguientes secciones e incluyen el código completo para cada componente, que puede añadir al archivo apropiado.

## HelloWorld Actividades: Implementación
<a name="getting-started-example-helloworld.activityworker"></a>

HelloWorld divide la tarea general de imprimir un `"Hello World!"` saludo en la consola en tres tareas, cada una de las cuales se realiza mediante un *método de actividad*. Los métodos de la actividad se definen en la interfaz `GreeterActivities` de la siguiente manera.

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

HelloWorld tiene una implementación de actividad`GreeterActivitiesImpl`, que proporciona los `GreeterActivities` métodos que se muestran a continuación:

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

Las actividades son independientes entre sí y con frecuencia pueden ser utilizadas por diferentes flujos de trabajo. Por ejemplo, cualquier flujo de trabajo puede usar la actividad `say` para imprimir una cadena en la consola. Los flujos de trabajo también pueden tener implementaciones de múltiples actividades, cada una de las cuales realiza un conjunto diferentes de tareas.

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

Cómo imprimir “Hello World\$1” en la consola, las tareas de actividades se deben ejecutar en secuencia en el orden correcto y con los datos correctos. El trabajador del HelloWorld flujo de trabajo organiza la ejecución de las actividades basándose en una *topología de flujo de trabajo lineal* simple, como se muestra en la siguiente figura.

![\[Topología de flujo de trabajo lineal\]](http://docs.aws.amazon.com/es_es/amazonswf/latest/awsflowguide/images/helloworld_topology.png)


Las tres actividades se ejecutan en secuencia y los datos fluyen de una actividad a la siguiente.

El trabajador del HelloWorld flujo de trabajo tiene un único método, el punto de entrada del flujo de trabajo, que se define en la `GreeterWorkflow` interfaz de la siguiente manera: 

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

La clase `GreeterWorkflowImpl` implementa esta interfaz de la siguiente manera:

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

El `greet` método implementa la HelloWorld topología creando una instancia de`GreeterActivitiesImpl`, llamando a cada método de actividad en el orden correcto y pasando los datos correspondientes a cada método.

## HelloWorld Inicio del flujo de trabajo
<a name="getting-started-example-helloworld.starter"></a>

Un *iniciador del flujo de trabajo* es una aplicación que inicia la ejecución de un flujo de trabajo y que también podría comunicarse con el flujo de trabajo mientras se está ejecutando. La `GreeterMain` clase implementa el iniciador del HelloWorld flujo de trabajo de la siguiente manera:

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

`GreeterMain` crea una instancia de `GreeterWorkflowImpl` y llama a `greet` para ejecutar el proceso de trabajo del flujo de trabajo. Ejecute `GreeterMain` como una aplicación de Java; al hacerlo, debería poder ver "Hello World\$1" en la consola.