Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan Pilihan Eksklusif dengan Amazon Simple Workflow Service
Dalam beberapa skenario, Anda mungkin ingin menjadwalkan rangkaian aktivitas yang berbeda berdasarkan hasil aktivitas sebelumnya. Pola pilihan eksklusif memungkinkan Anda membuat alur kerja fleksibel yang memenuhi persyaratan kompleks aplikasi Anda.
Amazon Simple Workflow Service (Amazon SWF) tidak memiliki tindakan pilihan eksklusif khusus. Untuk menggunakan pilihan eksklusif, Anda cukup menulis logika pengambil keputusan Anda untuk membuat keputusan yang berbeda berdasarkan hasil aktivitas sebelumnya. Beberapa aplikasi untuk pilihan eksklusif meliputi:
-
Melakukan kegiatan pembersihan jika hasil aktivitas sebelumnya tidak berhasil
-
Menjadwalkan aktivitas yang berbeda berdasarkan apakah pelanggan membeli paket dasar atau lanjutan
-
Melakukan aktivitas autentikasi pelanggan yang berbeda berdasarkan riwayat pemesanan pelanggan
Dalam contoh perdagangan elektronik, Anda dapat menggunakan pilihan eksklusif untuk mengirim atau membatalkan pesanan berdasarkan hasil penagihan kartu kredit. Pada gambar berikut, pengambil keputusan menjadwalkan tugas aktivitas Ship Order and Record Completion (Pengiriman Pesanan dan Penyelesaian Catatan) jika kartu kredit berhasil ditagih. Jika tidak, prosesnya akan menjadwalkan tugas aktivitas Cancel Order and Email Customer (Batalkan Pesanan dan Email Pelanggan).

Pengambil keputusan menjadwalkan aktivitas ShipOrder
jika kartu kredit berhasil ditagih. Jika tidak, pengambil keputusan menjadwalkan aktivitas CancelOrder
.
Dalam hal ini, programkan pengambil keputusan untuk menafsirkan riwayat dan menentukan apakah kartu kredit berhasil ditagih. Untuk melakukan ini, Anda mungkin memiliki logika yang mirip dengan berikut:
IF lastEvent = "WorkflowExecutionStarted" addToDecisions ScheduleActivityTask(ActivityType = "VerifyOrderActivity") ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "VerifyOrderActivity" addToDecisions ScheduleActivityTask(ActivityType = "ChargeCreditCardActivity") #Successful Credit Card Charge Activities ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "ChargeCreditCardActivity" addToDecisions ScheduleActivityTask(ActivityType = "ShipOrderActivity") ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "ShipOrderActivity" addToDecisions ScheduleActivityTask(ActivityType = "RecordOrderCompletionActivity") ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "RecordOrderCompletionActivity" addToDecisions CompleteWorkflowExecution #Unsuccessful Credit Card Charge Activities ELSIF lastEvent = "ActivityTaskFailed" AND ActivityType = "ChargeCreditCardActivity" addToDecisions ScheduleActivityTask(ActivityType = "CancelOrderActivity") ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "CancelOrderActivity" addToDecisions ScheduleActivityTask(ActivityType = "EmailCustomerActivity") ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "EmailCustomerActivity" addToDecisions CompleteWorkflowExecution ENDIF
Jika kartu kredit berhasil ditagih, pengambil keputusan harus merespons dengan RespondDecisionTaskCompleted
untuk menjadwalkan aktivitas ShipOrder
.
https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[ { "decisionType":"ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes":{ "control":"OPTIONAL_DATA_FOR_DECIDER", "activityType":{ "name":"ShipOrder", "version":"2.4" }, "activityId":"3e2e6e55-e7c4-fee-deed-aa815722b7be", "scheduleToCloseTimeout":"3600", "taskList":{ "name":"SHIPPING" }, "scheduleToStartTimeout":"600", "startToCloseTimeout":"3600", "heartbeatTimeout":"300", "input": "123 Main Street, Anytown, United States" } } ] }
Jika kartu kredit tidak berhasil ditagih, pengambil keputusan harus merespons dengan RespondDecisionTaskCompleted
untuk menjadwalkan aktivitas CancelOrder
.
https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[ { "decisionType":"ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes":{ "control":"OPTIONAL_DATA_FOR_DECIDER", "activityType":{ "name":"CancelOrder", "version":"2.4" }, "activityId":"3e2e6e55-e7c4-fee-deed-aa815722b7be", "scheduleToCloseTimeout":"3600", "taskList":{ "name":"CANCELLATIONS" }, "scheduleToStartTimeout":"600", "startToCloseTimeout":"3600", "heartbeatTimeout":"300", "input": "Out of Stock" } } ] }
Jika Amazon SWF dapat memvalidasi data dalam tindakan RespondDecisionTaskCompleted
, Amazon SWF mengembalikan respons HTTP yang berhasil serupa dengan berikut ini.
HTTP/1.1 200 OK Content-Length: 11 Content-Type: application/json x-amzn-RequestId: 93cec6f7-0747-11e1-b533-79b402604df1