Tipe Batas Waktu Amazon SWF - 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.

Tipe Batas Waktu Amazon SWF

Untuk memastikan bahwa eksekusi alur kerja berjalan dengan sesuai, Amazon SWF memungkinkan Anda untuk mengatur berbagai jenis batas waktu. Beberapa batas waktu menentukan berapa lama alur kerja dapat berjalan secara keseluruhan. Batas waktu lainnya menentukan berapa lama tugas aktivitas dapat berjalan sebelum ditugaskan ke pekerja dan berapa lama waktu yang bisa mereka gunakan untuk menyelesaikan dari waktu yang dijadwalkan. Semua batas waktu di API Amazon SWF ditentukan dalam hitungan detik. Amazon SWF juga mendukung string NONE sebagai nilai batas waktu, yang menunjukkan tidak ada batas waktu.

Untuk batas waktu yang berkaitan dengan tugas keputusan dan tugas aktivitas, Amazon SWF menambahkan sebuah kejadian ke riwayat eksekusi alur kerja. Atribut acara memberikan informasi tentang jenis batas waktu apa yang terjadi dan tugas keputusan atau aktivitas tugas yang terpengaruh. Amazon SWF juga menjadwalkan tugas keputusan. Ketika decider menerima tugas keputusan baru, decider akan melihat kejadian batas waktu dalam riwayat dan mengambil tindakan yang sesuai dengan memanggil tindakan RespondDecisionTaskCompleted.

Tugas dianggap terbuka dari saat yang dijadwalkan sampai ditutup. Oleh karena itu tugas dilaporkan sebagai terbuka sementara pekerja sedang memproses tugas. Tugas ditutup ketika seorang pekerja melaporkannya sebagai selesai, dibatalkan, atau gagal. Sebuah tugas juga dapat ditutup oleh Amazon SWF sebagai hasil dari batas waktu.

Batas Waktu dalam Alur Kerja dan Tugas Keputusan

Diagram berikut menunjukkan bagaimana alur kerja dan batas waktu keputusan terkait dengan masa pakai alur kerja:

Masa pakai alur kerja, dengan batas waktu

Ada dua tipe batas waktu timeout yang relevan dengan alur kerja dan tugas keputusan:

  • Alur Kerja Start to Close (timeoutType: START_TO_CLOSE) – Batas Waktu ini menentukan waktu maksimum yang dapat diambil untuk menyelesaikan eksekusi alur kerja. Batas ini diatur sebagai default selama pendaftaran alur kerja, tetapi dapat diambil alih dengan nilai yang berbeda ketika alur kerja dimulai. Jika batas waktu ini terlampaui, Amazon SWF menutup eksekusi alur kerja dan menambahkan kejadian tipe WorkflowExecutionTimedOut ke riwayat eksekusi alur kerja. Selain timeoutType, atribut kejadian menentukan childPolicy yang berlaku untuk eksekusi alur kerja ini. Kebijakan anak menentukan bagaimana eksekusi alur kerja anak ditangani jika eksekusi alur kerja induk mencapai batas waktu atau berakhir. Contohnya, jika childPolicy diatur menjadi TERMINATE (AKHIRI), maka eksekusi alur kerja anak akan diakhiri. Setelah eksekusi alur kerja mencapai batas waktu, Anda tidak dapat mengambil tindakan apa pun selain panggilan visibilitas.

  • Tugas Keputusan Start to Close (timeoutType: START_TO_CLOSE) – Batas waktu ini menentukan waktu maksimum yang dapat digunakan decider yang sesuai untuk menyelesaikan tugas keputusan. Hal ini diatur selama pendaftaran tipe alur kerja. Jika batas waktu ini terlampaui, tugas ditandai sebagai mencapai batas waktu di riwayat eksekusi alur kerja, dan Amazon SWF menambahkan kejadian tipe DecisionTaskTimedOut ke riwayat alur kerja. Atribut kejadian akan mencakup ID untuk kejadian yang sesuai dengan ketika tugas keputusan ini dijadwalkan (scheduledEventId) dan kapan tugas dimulai (startedEventId). Selain menambahkan kejadian tersebut, Amazon SWF juga menjadwalkan tugas keputusan baru untuk memberitahu decider bahwa tugas keputusan ini mencapai batas waktu. Setelah batas waktu ini terjadi, upaya untuk menyelesaikan tugas keputusan yang mencapai batas waktu menggunakan RespondDecisionTaskCompleted akan gagal.

Batas Waktu dalam Tugas Aktivitas

Diagram berikut menunjukkan bagaimana batas waktu terkait dengan masa pakai tugas kegiatan:

Masa pakai tugas, dengan batas waktu

Ada empat tipe batas waktu yang relevan dengan tugas aktivitas:

  • Tugas Aktivitas Start to Close (timeoutType: START_TO_CLOSE) – Batas waktu ini menentukan waktu maksimum yang dapat diambil seorang pekerja aktivitas untuk memproses tugas setelah pekerja menerima tugas. Upaya untuk menutup tugas aktivitas yang mencapai batas waktu menggunakan RespondActivityTaskCanceled, RespondActivityTaskCompleted, dan RespondActivityTaskFailed akan gagal.

  • Tugas Aktivitas Heartbeat (timeoutType: HEARTBEAT) – Batas waktu ini menentukan waktu maksimum untuk menjalankan tugas sebelum menyediakan kemajuannya melalui tindakan RecordActivityTaskHeartbeat.

  • Tugas Aktivitas Schedule to Start (timeoutType: SCHEDULE_TO_START) - Batas waktu ini menentukan berapa lama Amazon SWF menunggu sebelum mencapai batas waktu tugas aktivitas jika tidak ada pekerja yang tersedia untuk melakukan tugas. Setelah batas waktu tercapai, tugas yang kedaluwarsa tidak akan ditugaskan ke pekerja lain.

  • Tugas Aktivitas Schedule to Close (timeoutType: SCHEDULE_TO_CLOSE) - Batas waktu ini menentukan berapa lama waktu yang bisa digunakan sejak waktu yang dijadwalkan hingga tugas selesai. Sebagai praktik terbaik, nilai ini tidak boleh lebih besar daripada jumlah batas waktu schedule-to-start tugas dan batas waktu schedule-to-close tugas.

catatan

Setiap tipe batas waktu memiliki nilai default, yang umumnya diatur ke NONE (tak terbatas). Namun, waktu maksimum untuk setiap eksekusi aktivitas terbatas pada satu tahun.

Anda menetapkan nilai default untuk nilai ini selama pendaftaran tipe aktivitas, tetapi Anda dapat mengambil alih dengan nilai baru ketika Anda menjadwalkan tugas aktivitas. Ketika salah satu batas waktu ini terjadi, Amazon SWF akan menambahkan kejadian tipe ActivityTaskTimedOut ke riwayat alur kerja. Atribut timeoutType nilai dari kejadian ini akan menentukan batas waktu mana yang akan terjadi. Untuk setiap batas waktu, nilai timeoutType ditampilkan dalam tanda kurung. Atribut kejadian juga akan mencakup ID untuk kejadian yang sesuai dengan ketika tugas aktivitas dijadwalkan (scheduledEventId) dan kapan tugas dimulai (startedEventId). Selain menambahkan kejadian tersebut, Amazon SWF juga menjadwalkan tugas keputusan baru untuk memberitahu decider bahwa batas waktu terjadi.