HelloWorld 애플리케이션 - AWS Flow Framework 자바용

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

HelloWorld 애플리케이션

Amazon SWF 애플리케이션이 구성되는 방식을 소개하기 위해 우리는 워크플로처럼 작동하지만 로컬에서 단일 프로세스로 실행되는 Java 애플리케이션을 생성할 것입니다. Amazon Web Services와의 연결은 필요하지 않습니다.

참고

HelloWorldWorkflow 예시는 이것을 기반으로 구축되며, Amazon SWF에 연결되어 워크플로 관리 작업을 처리합니다.

워크플로 애플리케이션은 다음과 같은 세 가지 기본 구성 요소로 이루어집니다.

  • 활동 작업자는 일련의 활동을 지원하는데, 각 활동은 특정 작업을 독립적으로 수행하기 위해 실행하는 메서드입니다.

  • 워크플로 작업자는 여러 활동의 실행을 조율하고 데이터 흐름을 관리합니다. 이는 워크플로 토폴로지를 프로그래밍 방식으로 실현한 것으로서, 기본적으로 다양한 활동이 실행되는 시점, 순차적으로 또는 동시적으로 실행할지 여부 등을 정의하는 순서도입니다.

  • 워크플로 시작자실행이라는 이름의 워크플로 인스턴스를 시작하고, 실행 중에 이 인스턴스와 상호 작용할 수 있습니다.

HelloWorld는 세 가지 클래스 및 두 가지 관련 인터페이스로 구현됩니다. 이에 관해서는 다음 단원에서 설명합니다. 시작하기 전에 먼저 AWS Flow Framework for Java 설정에 설명된 것처럼 개발 환경을 설정하고 새 AWS Java 프로젝트를 생성해야 합니다. 다음 연습에 사용되는 패키지는 모두 helloWorld.XYZ라는 이름이 지정되어 있습니다. 이 이름을 사용하려면 다음과 같이 aop.xml에 within 속성을 설정하십시오.

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

HelloWorld를 구현하려면 helloWorld.HelloWorld라는 AWS SDK 프로젝트에 새 Java 패키지를 생성하고 다음 파일을 추가하십시오.

  • GreeterActivities.java라는 이름의 인터페이스 파일

  • 활동 작업자를 구현하는 GreeterActivitiesImpl.java라는 이름의 클래스 파일

  • GreeterWorkflow.java라는 이름의 인터페이스 파일

  • 워크플로 작업자를 구현하는 GreeterWorkflowImpl.java라는 이름의 클래스 파일

  • 워크플로 시작자를 구현하는 GreeterMain.java라는 이름의 클래스 파일

세부 정보는 다음 단원에 설명되어 있으며 적절한 파일에 추가할 수 있는 각 구성 요소의 코드 전체가 포함됩니다.

HelloWorld 활동 구현

HelloWorld는 "Hello World!"라는 인사말을 콘솔에 출력하는 작업 전체를 세 가지 작업으로 나누는데, 각 작업은 활동 메서드에서 수행합니다. 활동 메서드는 GreeterActivities 인터페이스에 다음과 같이 정의되어 있습니다.

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

HelloWorld에는 활동 구현 한 개, 즉 GreeterActivitiesImpl이 있는데, 이 구현에서는 다음과 같이 GreeterActivities 메서드를 제공합니다.

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

활동은 서로 독립적이어서 여러 워크플로에서 자주 사용할 수 있습니다. 예를 들어 어느 워크플로에서도 say 활동을 사용하여 문자열을 콘솔에 출력할 수 있습니다. 또한 워크플로에는 각기 일련의 다른 작업을 수행하는 여러 개의 활동 구현이 있을 수 있습니다.

HelloWorld 워크플로 작업자

"Hello World!"를 콘솔에 출력하려면 활동 작업이 정확한 데이터로 정확한 순서에 따라 순차적으로 실행되어야 합니다. HelloWorld 워크플로 작업자는 단순한 선형 워크플로 토폴로지에 근거하여 활동의 실행을 조율합니다.

선형 워크플로 토폴로지

세 가지 활동은 순차적으로 실행되고, 데이터 한 활동에서 다음 활동으로 흘러갑니다.

HelloWorld 워크플로 작업자에는 다음과 같이 GreeterWorkflow 인터페이스에 정의된, 워크플로의 진입점인 메서드가 한 개 있습니다.

public interface GreeterWorkflow { public void greet(); }

GreeterWorkflowImpl 클래스는 이 인터페이스를 다음과 같이 구현합니다.

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

greet 메서드는 GreeterActivitiesImpl의 인스턴스를 생성하고, 각 활동 메서드를 정확한 순서로 호출하고, 각 메서드에 적절한 데이터를 전달하여 HelloWorld 토폴로지를 구현합니다.

HelloWorld 워크플로 시작자

워크플로 시작자는 워크플로 실행을 시작하는 애플리케이션으로서, 실행 중에 워크플로와 상호 작용도 할 수 있습니다. GreeterMain 클래스에서는 HelloWorld 워크플로 시작자를 다음과 같이 구현합니다.

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

GreeterMain에서는 GreeterWorkflowImpl의 인스턴스를 생성하고 greet를 호출하여 워크플로 작업자를 실행합니다. GreeterMain을 Java 애플리케이션으로 실행하면 "Hello, World!"가 콘솔 출력에 보일 것입니다.