

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.

# HelloWorldWorkflowParallel Solicitud
<a name="getting-started-example-helloworldworkflowparallel"></a>

Las versiones anteriores de Hello World\$1 todas utilizar una topología de flujo de trabajo lineal. No obstante, Amazon SWF no se limita a las topologías lineales. La HelloWorldWorkflowParallel aplicación es una versión modificada HelloWorldWorkflow que utiliza una topología paralela, como se muestra en la siguiente figura.

![\[HelloWorldWorkflowParallel topología del flujo de trabajo\]](http://docs.aws.amazon.com/es_es/amazonswf/latest/awsflowguide/images/helloworld_parallel_topology.png)


Con HelloWorldWorkflowParallel, `getName` y `getGreeting` corre en paralelo y cada uno devuelve parte del saludo. `say`luego fusiona las dos cadenas en un saludo y lo imprime en la consola.

Para implementar la aplicación, cree una copia de HelloWorld. HelloWorldWorkflow empaquete en el directorio de su proyecto y asígnele el nombre HelloWorld. HelloWorldWorkflowParallel. En las siguientes secciones se describe cómo modificar el HelloWorldWorkflow código original para que se ejecute `getName` y `getGreeting` en paralelo.

## HelloWorldWorkflowParallel Actividades: Trabajador
<a name="getting-started-example-helloworldworkflowparallel.activities"></a>

La interfaz de HelloWorldWorkflowParallel actividades está implementada en`GreeterActivities`, como se muestra en el siguiente ejemplo.

```
import com.amazonaws.services.simpleworkflow.flow.annotations.Activities;
import com.amazonaws.services.simpleworkflow.flow.annotations.ActivityRegistrationOptions;

@Activities(version="5.0")
@ActivityRegistrationOptions(defaultTaskScheduleToStartTimeoutSeconds = 300,
                             defaultTaskStartToCloseTimeoutSeconds = 10)
public interface GreeterActivities {
   public String getName();
   public String getGreeting();
   public void say(String greeting, String name);
}
```

La interfaz es similar a HelloWorldWorkflow, con las siguientes excepciones:
+ `getGreeting` no toma ninguna entrada; simplemente devuelve una cadena de saludos.
+ `say` toma dos cadenas de entrada, el saludo y el nombre.
+ La interfaz tiene un número de versión nuevo, que se necesita siempre que cambia una interfaz registrada.

HelloWorldWorkflowParallel implementa las actividades de `GreeterActivitiesImpl` la siguiente manera:

```
public class GreeterActivitiesImpl implements GreeterActivities {

   @Override
   public String getName() {
      return "World!";
   }

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

   @Override
   public void say(String greeting, String name) {
      System.out.println(greeting + name);
   }
}
```

`getName` y `getGreeting` ahora simplemente devuelven la mitad de la cadena del saludo. `say` concatena las dos piezas para producir la frase completa y la imprime en la consola.

## HelloWorldWorkflowParallel Workflow Worker
<a name="getting-started-example-helloworldworkflowparallel-worker"></a>

La interfaz HelloWorldWorkflowParallel de flujo de trabajo se implementa `GreeterWorkflow` de la siguiente manera:

```
import com.amazonaws.services.simpleworkflow.flow.annotations.Execute;
import com.amazonaws.services.simpleworkflow.flow.annotations.Workflow;
import com.amazonaws.services.simpleworkflow.flow.annotations.WorkflowRegistrationOptions;

@Workflow
@WorkflowRegistrationOptions(defaultExecutionStartToCloseTimeoutSeconds = 3600)
public interface GreeterWorkflow {

   @Execute(version = "5.0")
   public void greet();
}
```

La clase es idéntica a la HelloWorldWorkflow versión, excepto que el número de versión se ha cambiado para que coincida con la actividad del trabajador.

El flujo de trabajo se implementa en `GreeterWorkflowImpl` de la siguiente manera:

```
import com.amazonaws.services.simpleworkflow.flow.core.Promise;

public class GreeterWorkflowImpl implements GreeterWorkflow {
   private GreeterActivitiesClient operations = new GreeterActivitiesClientImpl();

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

A simple vista, esta implementación es muy similar a HelloWorldWorkflow las tres actividades que los métodos del cliente ejecutan en secuencia. No obstante, no es así para las actividades.
+ HelloWorldWorkflow pasado `name` a`getGreeting`. Dado que `name` era un objeto `Promise<T>`, `getGreeting` aplazó la ejecución de la actividad hasta que se completó `getName`, por lo que las dos actividades se ejecutaron en secuencia.
+ HelloWorldWorkflowParallel no pasa ninguna entrada `getName` o`getGreeting`. Ninguno de los métodos difiere la ejecución y los métodos de actividad asociados se ejecutan inmediatamente y en paralelo.

La actividad `say` toma `greeting` y `name` como parámetros de entrada. Dado que se trata de objetos `Promise<T>`, `say` difiere la ejecución hasta que se completan ambas actividades y, a continuación, construye e imprime el saludo.

Observe que HelloWorldWorkflowParallel no utiliza ningún código de modelado especial para definir la topología del flujo de trabajo. Lo hace de forma implícita mediante el uso del control de flujo estándar de Java y aprovechando las propiedades de `Promise<T>` los objetos. AWS Flow Framework ya que las aplicaciones de Java pueden implementar incluso topologías complejas simplemente utilizando `Promise<T>` objetos junto con las construcciones de flujo de control de Java convencionales.

## HelloWorldWorkflowParallel Flujo de trabajo y actividades: anfitrión e iniciador
<a name="HelloWorldWorkflowParallel-workflow-activities-host-starter"></a>

HelloWorldWorkflowParallel implementa `GreeterWorker` como clase anfitriona para las implementaciones de flujos de trabajo y actividades. Es idéntica a la HelloWorldWorkflow implementación excepto por el `taskListToPoll` nombre, que se establece en "HelloWorldParallelList».

`HelloWorldWorkflowParallel`implementa el flujo de trabajo inicial en `GreeterMain` y es idéntico a la HelloWorldWorkflow implementación.

Para ejecutar el flujo de trabajo, ejecute `GreeterWorker` y `GreeterMain`, de la misma manera que con `HelloWorldWorkflow`.