Pembatalan Tugas Aktivitas Amazon Simple Workflow Service - Amazon Simple Workflow Service

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

Pembatalan Tugas Aktivitas Amazon Simple Workflow Service

Pembatalan tugas aktivitas memungkinkan pengambil keputusan untuk mengakhiri aktivitas yang tidak lagi perlu dilakukan. Amazon SWF menggunakan mekanisme pembatalan kooperatif dan tidak secara paksa mengganggu tugas aktivitas yang sedang berjalan. Anda harus memprogram pekerja aktivitas Anda untuk menangani permintaan pembatalan.

Pengambil keputusan dapat memutuskan untuk membatalkan tugas aktivitas saat sedang memproses tugas keputusan. Untuk membatalkan tugas aktivitas, pengambil keputusan menggunakan tindakan RespondDecisionTaskCompleted dengan keputusan RequestCancelActivityTask.

Jika tugas aktivitas belum diperoleh oleh pekerja aktivitas, layanan akan membatalkan tugas. Perhatikan bahwa ada kondisi balapan potensial di mana pekerja aktivitas dapat memperoleh tugas kapan saja. Jika tugas telah ditetapkan ke pekerja aktivitas, pekerja aktivitas akan diminta untuk membatalkan tugas.

Dalam contoh ini, eksekusi alur kerja dikirimi sinyal untuk membatalkan pesanan.

https://swf.us-east-1.amazonaws.com SignalWorkflowExecution {"domain": "867530901", "workflowId": "20110927-T-1", "runId": "9ba33198-4b18-4792-9c15-7181fb3a8852", "signalName": "CancelOrder", "input": "order 3553"}

Jika eksekusi alur kerja menerima sinyal, Amazon SWF mengembalikan respons HTTP yang berhasil serupa dengan berikut ini. Amazon SWF akan menghasilkan tugas keputusan untuk memberi tahu pengambil keputusan untuk memproses sinyal.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

Saat pengambil keputusan memproses tugas keputusan dan melihat sinyal dalam riwayat, pengambil keputusan mencoba untuk membatalkan aktivitas luar biasa yang memiliki ID aktivitas ShipOrderActivity0001. ID aktivitas disediakan dalam riwayat alur kerja dari kejadian tugas aktivitas jadwal.

https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RequestCancelActivityTask", "RequestCancelActivityTaskDecisionAttributes":{ "ActivityID":"ShipOrderActivity0001" } } ] }

Jika Amazon SWF berhasil menerima permintaan pembatalan, Amazon SWF mengembalikan respons HTTP yang berhasil serupa dengan berikut ini:

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

Upaya pembatalan dicatat dalam riwayat sebagai kejadian ActivityTaskCancelRequested.

Jika tugas berhasil dibatalkan—seperti yang ditunjukkan oleh kejadian ActivityTaskCanceled—programkan pengambil keputusan Anda untuk mengambil langkah-langkah yang sesuai yang harus mengikuti pembatalan tugas seperti menutup eksekusi alur kerja.

Jika tugas aktivitas tidak dapat dibatalkan—misalnya, jika tugas selesai, gagal, atau habis waktu daripada dibatalkan—pengambil keputusan Anda harus menerima hasil aktivitas atau melakukan pembersihan atau mitigasi yang diperlukan oleh kasus penggunaan Anda.

Jika tugas aktivitas telah diperoleh oleh pekerja aktivitas, maka permintaan untuk membatalkan dikirimkan melalui mekanisme detak jantung tugas. RecordActivityTaskHeartbeat secara berkala dapat melaporkan ke Amazon SWF bahwa tugas masih berlangsung.

Perhatikan bahwa pekerja aktivitas tidak diharuskan untuk detak jantung, meskipun dianjurkan untuk tugas-tugas yang berjalan lama. Pembatalan tugas membutuhkan detak jantung berkala untuk direkam; jika pekerja tidak berdetak, tugas tidak dapat dibatalkan.

Jika pengambil keputusan meminta pembatalan tugas, Amazon SWF menetapkan nilai objek cancelRequest ke benar. Objek cancelRequest adalah bagian dari objek ActivityTaskStatus yang dikembalikan oleh layanan sebagai respons terhadap RecordActivityTaskHeartbeat.

Amazon SWF tidak mencegah keberhasilan penyelesaian tugas aktivitas yang pembatalannya telah diminta; terserah pada aktivitas untuk menentukan bagaimana menangani permintaan pembatalan. Bergantung pada kebutuhan Anda, program pekerja aktivitas untuk membatalkan tugas aktivitas atau mengabaikan permintaan pembatalan.

Jika Anda ingin pekerja aktivitas menunjukkan bahwa pekerjaan untuk tugas aktivitas dibatalkan, programlah untuk merespons dengan RespondActivityTaskCanceled. Jika Anda ingin pekerja aktivitas menyelesaikan tugas, programlah untuk merespons dengan RespondActivityTaskCompleted standar.

Saat Amazon SWF menerima permintaan RespondActivityTaskCompleted atau RespondActivityTaskCanceled, Amazon SWF memperbarui riwayat eksekusi alur kerja dan menjadwalkan tugas keputusan untuk memberi tahu pengambil keputusan.

Programkan pengambil keputusan untuk memproses tugas keputusan dan mengembalikan keputusan tambahan apa pun. Jika tugas aktivitas berhasil dibatalkan, programkan pengambil keputusan untuk melakukan tugas yang diperlukan untuk melanjutkan atau menutup eksekusi alur kerja. Jika tugas aktivitas tidak berhasil dibatalkan, programkan pengambil keputusan untuk menerima hasil, abaikan hasil, atau jadwalkan pembersihan yang diperlukan.