Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Application HelloWorld
Pour présenter la façon dont les applications Amazon SWF sont structurées, nous allons créer une application Java qui se comporte comme un flux de travail, mais qui s'exécute localement sous la forme d'un processus unique. Aucune connexion à Amazon Web Services n'est requise.
Note
LeWorkflow HelloWorlds'appuie sur l'application précédente, en se connectant à Amazon SWF pour s'occuper de la gestion du flux de travail.
Une application de flux de travail consiste en trois composants de base :
-
Un exécuteur d'activité prend en charge un ensemble d'activités, dont chacune est une méthode qui s'exécute indépendamment pour effectuer une tâche particulière.
-
Un exécuteur d'activité orchestre l'exécution des activités et gère le flux de données. Il s'agit de la réalisation par programmation d'une topologie de flux de travail, qui est essentiellement un diagramme de flux qui définit le moment où les différentes activités s'exécutent, qu'elles s'exécutent dans l'ordre ou simultanément, etc.
-
Un démarreur de flux de travail lance une instance de flux de travail, appelée exécution, et peut interagir avec elle pendant l'opération.
HelloWorld est implémenté sous forme de trois classes et deux interfaces associées, qui sont décrites dans les sections suivantes. Avant de commencer, vous devez configurer votre environnement de développement et créer un nouveauAWSProjet Java tel que décrit dansConfiguration duAWS Flow Frameworkpour Java. Les packages utilisés pour les procédures suivantes sont tous nommés helloWorld.
. Pour utiliser ces noms, définissez l'attribut XYZ
within
dans aop.xml comme suit :
... <weaver options="-verbose"> <include within="helloWorld..*"/> </weaver>
Pour implémenter HelloWorld, créez un nouveau package Java dans votreAWSProjet SDK nomméhelloWorld.HelloWorld
et ajoutez les fichiers suivants :
-
Un fichier d'interface nommé
GreeterActivities.java
-
Un fichier de classe nommé
GreeterActivitiesImpl.java
qui implémente l'exécuteur d'activité. -
Un fichier d'interface nommé
GreeterWorkflow.java
. -
Un fichier de classe nommé
GreeterWorkflowImpl.java
qui implémente l'exécuteur de flux de travail. -
Un fichier de classe nommé
GreeterMain.java
qui implémente le démarreur de flux de travail.
Les détails sont présentés dans les sections suivantes et incluent le code complet de chaque composant, que vous pouvez ajouter au fichier approprié.
Implémentation des activités HelloWorld
HelloWorld sépare la tâche globale d'impression d'un message d'accueil "Hello World!"
dans la console en trois tâches, chacune étant exécutée par une méthode d'activité. Les méthode d'activité sont définies dans l'interface GreeterActivities
, comme suit.
public interface GreeterActivities { public String getName(); public String getGreeting(String name); public void say(String what); }
HelloWorld possède une implémentation d'activité, GreeterActivitiesImpl
, qui fournit les méthodes GreeterActivities
comme illustré :
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); } }
Les activités sont indépendantes les unes des autres et peuvent être souvent utilisées par différents flux de travail. Par exemple, n'importe quel flux de travail peut utiliser l'activité say
pour imprimer une chaîne dans la console. Les flux de travail peuvent également plusieurs implémentations d'activité, chacune exécutant un ensemble différent de tâches.
Exécuteur de flux de travail HelloWorld
Pour afficher « Hello World ! » sur la console, les tâches d'activité doivent s'exécuter séquentiellement, dans le bon ordre et avec les données correctes. L'exécuteur de flux de travail HelloWorld orchestre l'exécution des activités en se basant sur une simple topologie de flux de travail linéaire, qui est illustrée dans la figure suivante.
Les trois activités s'exécutent séquentiellement, et les flux de données depuis une activité vers la suivante.
L'exécuteur de flux de travail HelloWorld possède une méthode unique, le point d'entrée du flux de travail, qui est défini dans l'interface GreeterWorkflow
, comme suit :
public interface GreeterWorkflow { public void greet(); }
La classe GreeterWorkflowImpl
implémente cette interface, comme suit :
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); } }
La méthode greet
implémente la topologie HelloWorld en créant une instance de GreeterActivitiesImpl
, appelant chaque méthode d'activité dans le bon ordre, et transférant les données appropriées à chaque méthode.
Démarreur du flux de travail HelloWorld
Un démarreur du flux de travail est une application qui lance une exécution de flux de travail, et peut également communiquer avec le flux de travail pendant qu'il s'exécute. La classe GreeterMain
implémente le démarreur du flux de travail HelloWorld, comme suit :
public class GreeterMain { public static void main(String[] args) { GreeterWorkflow greeter = new GreeterWorkflowImpl(); greeter.greet(); } }
GreeterMain
crée une instance de GreeterWorkflowImpl
et appelle greet
pour lancer l'exécuteur de flux de travail. Run (Exécuter Lambda)GreeterMain
comme application Java et vous devriez voir « Hello World ! » pour voir « Hello World ! » dans la sortie de la console.