Mengatur Prioritas Tugas - 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.

Mengatur Prioritas Tugas

Secara default, tugas pada daftar tugas dikirimkan berdasarkan waktu kedatangan: tugas yang dijadwalkan pertama biasanya dijalankan pertama, sejauh mungkin. Dengan menetapkan opsionalPrioritas tugas, Anda dapat mengutamakan tugas-tugas tertentu: Amazon SWF akan mencoba untuk mengirimkan tugas dengan prioritas lebih tinggi pada daftar tugas terlebih dahulu sebelum tugas yang dengan prioritas lebih rendah.

Anda dapat mengatur prioritas tugas untuk alur kerja dan aktivitas. Prioritas tugas alur kerja tidak memengaruhi prioritas tugas aktivitas apa pun yang dijadwalkan, juga tidak memengaruhi alur kerja anak yang dimulai oleh alur kerja tersebut. Prioritas default untuk aktivitas atau alur kerja diatur (baik oleh Anda atau oleh Amazon SWF) selama pendaftaran, dan prioritas tugas terdaftar selalu digunakan kecuali diabil alih saat menjadwalkan aktivitas atau memulai eksekusi alur kerja.

Nilai prioritas tugas dapat berkisar antara “-2147483648” hingga “2147483647”, dengan angka yang lebih tinggi menunjukkan prioritas yang lebih tinggi. Jika Anda tidak mengatur prioritas tugas untuk aktivitas atau alur kerja, prioritas akan diberikan prioritas nol ("0").

Mengatur Prioritas Tugas untuk Alur Kerja

Anda dapat mengatur prioritas tugas untuk alur kerja saat Anda mendaftarkannya atau memulainya. Prioritas tugas yang diatur saat tipe alur kerja terdaftar digunakan sebagai default untuk setiap eksekusi tipe alur kerja tersebut, kecuali jika diambil alih saat memulai eksekusi alur kerja.

Untuk mendaftarkan jenis alur kerja dengan prioritas tugas default, atur pilihan defaultTaskPriority di WorkflowRegistrationOptions ketika mendeklarasikan itu:

@Workflow @WorkflowRegistrationOptions( defaultTaskPriority = 10, defaultTaskStartToCloseTimeoutSeconds = 240) public interface PriorityWorkflow { @Execute(version = "1.0") void startWorkflow(int a); }

Anda juga dapat mengatur taskPriority untuk alur kerja saat Anda memulainya, menimpa prioritas tugas (default) terdaftar.

StartWorkflowOptions priorityWorkflowOptions = new StartWorkflowOptions().withTaskPriority(10); PriorityWorkflowClientExternalFactory cf = new PriorityWorkflowClientExternalFactoryImpl(swfService, domain); priority_workflow_client = cf.getClient(); priority_workflow_client.startWorkflow( "Smith, John", priorityWorkflowOptions);

Selain itu, Anda dapat menetapkan prioritas tugas saat memulai alur kerja anak atau melanjutkan alur kerja sebagai baru. Misalnya, Anda dapat mengatur pilihan taskPriority di ContinueAsNewWorkflowExecutionParameters atau di StartChildWorkflowExecutionParameters.

Mengatur Prioritas Tugas untuk Aktivitas

Anda dapat mengatur prioritas tugas untuk suatu aktivitas baik ketika mendaftarkan maupun ketika menjadwalkan aktivitas tersebut. Prioritas tugas yang diatur ketika mendaftarkan tipe aktivitas digunakan sebagai prioritas default ketika aktivitas dijalankan, kecuali diambil alih ketika menjadwalkan aktivitas.

Untuk mendaftarkan jenis aktivitas dengan prioritas tugas default, atur pilihan defaultTaskPriority di ActivityRegistrationOptions ketika mendeklarasikan itu:

@Activities(version = "1.0") @ActivityRegistrationOptions( defaultTaskPriority = 10, defaultTaskStartToCloseTimeoutSeconds = 120) public interface ImportantActivities { int doSomethingImportant(); }

Anda juga dapat mengatur taskPriority untuk suatu aktivitas ketika Anda menjadwalkan prioritas tugas, menimpa prioritas tugas (default) terdaftar.

ActivitySchedulingOptions activityOptions = new ActivitySchedulingOptions.withTaskPriority(10); ImportantActivitiesClient activityClient = new ImportantActivitiesClientImpl(); activityClient.doSomethingImportant(activityOptions);