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à.
Applicazione HelloWorld
Per presentare in che modo le applicazioni Amazon SWF sono strutturate, creeremo un'applicazione Java che si comporta come un flusso di lavoro, ma che viene eseguita localmente in un singolo processo. Non è richiesta alcuna connessione ad Amazon Web Services.
Nota
LaHello World Workflowsi basa su questo che si connette ad Amazon SWF per gestire il 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 viene implementata sotto forma di tre classi e delle due interfacce relative, descritte nelle seguenti sezioni. Prima di iniziare devi configurare l'ambiente di sviluppo e crearne uno nuovoAWSProgetto Java come descritto inConfigurazione diAWS Flow Frameworkper Java. I pacchetti utilizzati per le seguenti procedure guidate sono stati tutti nominati helloWorld.
. Per utilizzare questi nomi, imposta l'attributo XYZ
within
in aop.xml secondo quanto indicato di seguito:
... <weaver options="-verbose"> <include within="helloWorld..*"/> </weaver>
Per implementare HelloWorld, crea un nuovo pacchetto Java nelAWSNome del progetto SDKhelloWorld.HelloWorld
e aggiungi 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.
Implementazione delle attività di HelloWorld
HelloWorld spezza il task generale della visualizzazione della formula di apertura "Hello World!"
sulla console in tre task, ciascuno dei quali viene eseguito da 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 offre i metodi GreeterActivities
come mostrato di seguito:
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.
Lavoratore di flusso di lavoro di HelloWorld
Per visualizzare «Hello World!» sulla console, i task di attività devono essere eseguiti in sequenza secondo l'ordine corretto con i dati corretti. Il lavoratore di flusso di lavoro di HelloWorld orchestra l'esecuzione delle attività in base a una semplice topologia del flusso di lavoro lineare, mostrata nella seguente figura.
Le tre attività vengono eseguite in sequenza e i dati fluiscono da un'attività a quella successiva.
Il lavoratore di flusso di lavoro di HelloWorld ha un solo metodo, il punto di ingresso del flusso di lavoro, che viene definito nell'interfaccia GreeterWorkflow
, come mostrato di seguito:
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 metodo greet
implementa la topologia HelloWorld creando un'istanza di GreeterActivitiesImpl
, che chiama ogni metodo di attività nell'ordine corretto e passa i dati appropriati a ogni metodo.
Starter di flusso di lavoro di HelloWorld
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 classe GreeterMain
implementa lo starter del flusso di lavoro di HelloWorld, come mostrato di seguito:
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. EseguiGreeterMain
come un'applicazione Java e che dovresti vedere «Hello World!» nell'output della console.