HelloWorldWorkflowDistributed Aplikasi - AWS Flow Framework untuk Java

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

HelloWorldWorkflowDistributed Aplikasi

Dengan HelloWorldWorkflow dan HelloWorldWorkflowAsync, Amazon SWF memediasi interaksi antara alur kerja dan implementasi aktivitas, tetapi mereka berjalan secara lokal sebagai satu proses. GreeterMaindalam proses terpisah, tetapi masih berjalan pada sistem yang sama.

Sebuah fitur kunci dari Amazon SWF adalah hal itu mendukung aplikasi didistribusikan. Misalnya, Anda dapat menjalankan workflow worker di EC2 instans Amazon, starter alur kerja di komputer pusat data, dan aktivitas di komputer desktop klien. Anda bahkan dapat menjalankan aktivitas yang berbeda pada sistem yang berbeda.

HelloWorldWorkflowDistributed Aplikasi meluas HelloWorldWorkflowAsync untuk mendistribusikan aplikasi di dua sistem dan tiga proses.

  • Alur kerja dan starter alur kerja berjalan sebagai proses terpisah pada satu sistem.

  • Aktivitas berjalan pada sistem yang terpisah.

Untuk mengimplementasikan aplikasi, buat salinan HelloWorld. HelloWorldWorkflowAsync paket di direktori proyek Anda dan beri nama HelloWorld. HelloWorldWorkflowDistributed. Bagian berikut menjelaskan cara memodifikasi HelloWorldWorkflowAsync kode asli untuk mendistribusikan aplikasi di dua sistem dan tiga proses.

Anda tidak perlu mengubah implementasi alur kerja atau aktivitas untuk menjalankannya pada sistem yang terpisah, bahkan nomor versi tersebut. Anda juga tidak perlu memodifikasi GreeterMain. Yang perlu Anda ubah adalah host aktivitas dan alur kerja.

Dengan HelloWorldWorkflowAsync, satu aplikasi berfungsi sebagai alur kerja dan host aktivitas. Untuk menjalankan implementasi alur kerja dan aktivitas pada sistem terpisah, Anda harus menerapkan aplikasi terpisah. Hapus GreeterWorker dari proyek dan tambahkan dua file kelas baru, GreeterWorkflowWorker dan GreeterActivitiesWorker.

HelloWorldWorkflowDistributed mengimplementasikan kegiatan tuan rumah di GreeterActivitiesWorker, sebagai berikut:

import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflow; import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient; import com.amazonaws.services.simpleworkflow.flow.ActivityWorker; public class GreeterActivitiesWorker { public static void main(String[] args) throws Exception { ClientConfiguration config = new ClientConfiguration().withSocketTimeout(70*1000); String swfAccessId = System.getenv("AWS_ACCESS_KEY_ID"); String swfSecretKey = System.getenv("AWS_SECRET_KEY"); AWSCredentials awsCredentials = new BasicAWSCredentials(swfAccessId, swfSecretKey); AmazonSimpleWorkflow service = new AmazonSimpleWorkflowClient(awsCredentials, config); service.setEndpoint("https://swf.us-east-1.amazonaws.com"); String domain = "helloWorldExamples"; String taskListToPoll = "HelloWorldAsyncList"; ActivityWorker aw = new ActivityWorker(service, domain, taskListToPoll); aw.addActivitiesImplementation(new GreeterActivitiesImpl()); aw.start(); } }

HelloWorldWorkflowDistributed mengimplementasikan host alur kerjanya diGreeterWorkflowWorker, sebagai berikut:

import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflow; import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient; import com.amazonaws.services.simpleworkflow.flow.WorkflowWorker; public class GreeterWorkflowWorker { public static void main(String[] args) throws Exception { ClientConfiguration config = new ClientConfiguration().withSocketTimeout(70*1000); String swfAccessId = System.getenv("AWS_ACCESS_KEY_ID"); String swfSecretKey = System.getenv("AWS_SECRET_KEY"); AWSCredentials awsCredentials = new BasicAWSCredentials(swfAccessId, swfSecretKey); AmazonSimpleWorkflow service = new AmazonSimpleWorkflowClient(awsCredentials, config); service.setEndpoint("https://swf.us-east-1.amazonaws.com"); String domain = "helloWorldExamples"; String taskListToPoll = "HelloWorldAsyncList"; WorkflowWorker wfw = new WorkflowWorker(service, domain, taskListToPoll); wfw.addWorkflowImplementationType(GreeterWorkflowImpl.class); wfw.start(); } }

Catatan bahwa GreeterActivitiesWorker hanya GreeterWorker tanpa kode WorkflowWorker dan GreeterWorkflowWorker hanya GreeterWorker tanpa kode ActivityWorker.

Untuk menjalankan alur kerja:
  1. Buat file JAR yang dapat dijalankan dengan GreeterActivitiesWorker sebagai titik masuk.

  2. Salin file JAR dari Langkah 1 ke sistem lain, yang dapat menjalankan sistem operasi yang mendukung Java.

  3. Pastikan AWS kredensi dengan akses ke domain Amazon SWF yang sama tersedia di sistem lain.

  4. Jalankan file JAR.

  5. Pada sistem pengembangan Anda, gunakan Eclipse untuk menjalankan GreeterWorkflowWorker dan GreeterMain.

Selain fakta bahwa aktivitas berjalan pada sistem yang berbeda dari pekerja alur kerja dan starter alur kerja, alur kerja bekerja dengan cara yang persis sama seperti. HelloWorldAsync Namun, karena println memanggil yang mencetak “Hello World!” ke konsol tersebut adalah di aktivitas say, output akan muncul pada sistem yang menjalankan pekerja aktivitas.