Applicazione HelloWorld - AWS Flow Framework per Java

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.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 implementare HelloWorld, crea un nuovo pacchetto Java nelAWSNome del progetto SDKhelloWorld.HelloWorlde 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.

Topologia del flusso di lavoro lineare

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. EseguiGreeterMaincome un'applicazione Java e che dovresti vedere «Hello World!» nell'output della console.