CloudFlow menggunakan status Tugas untuk memanggil berbagai layanan. Anda dapat mengontrol transisi status pemanggilan layanan berdasarkan mode integrasi layanan. Topik ini menjelaskan mode integrasi layanan umum: RequestComplete, WaitForSystemCallback, dan WaitForCustomCallback.
Perhatian
Anda dapat menggunakan mode integrasi layanan RequestComplete, WaitForSystemCallback, dan WaitForCustomCallback untuk mengintegrasikan layanan. Namun, tidak semua layanan mendukung mode integrasi ini. Untuk informasi lebih lanjut tentang mode integrasi yang didukung oleh setiap layanan, lihat Mode Integrasi.
RequestComplete
Jika Anda memanggil layanan dari status Tugas, mode integrasi RequestComplete digunakan secara default. Setelah permintaan dikirim ke layanan, sistem menunggu respons sebelum melanjutkan tugas berikutnya.
Contoh berikut menunjukkan cara menggunakan mode integrasi RequestComplete untuk memanggil fungsi dari Function Compute. Saat CloudFlow mengeksekusi alur kerja, CloudFlow memanggil fungsi yang ditentukan dan menunggu hasil pemrosesan fungsi tersebut. Karena pemanggilan bersifat sinkron, mesin status menerima hasil pemrosesan fungsi setelah pemanggilan selesai.
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: contoh pemanggilan fungsi.
Action: FC:InvokeFunction
TaskMode: RequestComplete
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Sync
body: xxxx
End: trueWaitForSystemCallback
Untuk layanan integrasi tipe-tugas tertentu dan pemanggilan asinkron dalam Function Compute, Anda dapat menggunakan mode integrasi WaitForSystemCallback. Dalam mode ini, alur kerja tidak dapat beralih ke status berikutnya hingga tugas selesai.
Contoh berikut menunjukkan cara menggunakan mode integrasi WaitForSystemCallback untuk memanggil fungsi dari Function Compute.
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: contoh pemanggilan fungsi.
Action: FC:InvokeFunction
TaskMode: WaitForSystemCallback
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Async
body: xxxx
End: trueDalam mode integrasi WaitForSystemCallback, alur kerja tidak dapat beralih ke status berikutnya hingga tugas selesai.
Jika tugas yang menggunakan mode integrasi WaitForSystemCallback dihentikan, CloudFlow tidak dapat membatalkan tugas tersebut. Anda mungkin dikenakan biaya tak terduga untuk layanan integrasi. Untuk mencegah biaya tak terduga, Anda harus secara manual membatalkan tugas integrasi. CloudFlow dapat secara otomatis menghentikan tugas integrasi dalam kasus berikut:
Eksekusi alur kerja dihentikan.
Cabang lain dalam status Paralel gagal karena kesalahan yang tertangkap.
Iterasi status Peta gagal dan kesalahan yang sesuai tidak tertangkap.
Dalam hal ini, mesin alur kerja mencoba semaksimal mungkin untuk membatalkan tugas. Misalnya, jika mode integrasi WaitForSystemCallback digunakan dalam alur kerja dan CloudFlow memanggil tugas asinkron yang berisi sub-alur atau fungsi dari Function Compute, Anda dapat memanggil StopExecution Operasi API dari CloudFlow untuk menghentikan alur kerja. CloudFlow menghentikan sub-alur dan kemudian fungsi terkait tugas asinkron dalam alur kerja. Namun, mesin alur kerja mungkin tidak dapat membatalkan tugas karena alasan berikut:
Peran eksekusi Anda tidak memiliki izin untuk memanggil operasi API yang sesuai.
Layanan sementara terganggu.
Untuk informasi tentang layanan Alibaba Cloud yang mendukung mode integrasi WaitForSystemCallback, lihat Layanan Alibaba Cloud yang Mendukung Integrasi Normal.
WaitForCustomCallback
Mode integrasi WaitForCustomCallback adalah mode panggilan balik yang berisi token tugas. Dalam mode ini, Anda dapat menangguhkan alur kerja dan mengontrol eksekusi alur kerja berdasarkan logika yang Anda definisikan dalam layanan integrasi. Misalnya, jika persetujuan pengguna diperlukan selama eksekusi alur, pemanggilan integrasi memulai alur persetujuan sistem eksternal. Setelah alur persetujuan selesai, sistem memanggil balik alur kerja dan mengembalikan hasil persetujuan. Kemudian, alur kerja melanjutkan eksekusi langkah-langkah berikutnya. Setelah pemanggilan integrasi yang menggunakan mode integrasi WaitForCustomCallback dimulai, tugas saat ini secara otomatis ditangguhkan. Alur kerja tidak maju hingga layanan terintegrasi memanggil ReportTaskSucceeded atau ReportTaskFailed Operasi API untuk melaporkan hasil eksekusi tugas.
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: contoh pemanggilan fungsi.
Action: FC:InvokeFunction
TaskMode: WaitForCustomCallback
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Sync
body: xxxx
End: trueGambar berikut menunjukkan cara kerja mode integrasi WaitForCustomCallback. Dibandingkan dengan polling, panggilan balik secara efektif mengurangi latensi dan tekanan tidak perlu pada server. Selain itu, kombinasi panggilan balik dan antrian dapat mengatur tugas dalam layanan lain selain Function Compute dan memperluas ruang lingkup orkestrasi CloudFlow ke semua jenis sumber daya komputasi.
Contoh: alur kerja integrasi layanan yang menggunakan mode integrasi WaitForCustomCallback
CloudFlow terintegrasi dengan mikro-layanan eksternal
Bagian ini menjelaskan bagaimana CloudFlow terintegrasi dengan mikro-layanan eksternal untuk melakukan pemeriksaan kredit. CloudFlow mengirim pesan yang berisi token tugas ke Simple Message Queue (formerly MNS). Mikro-layanan eksternal terintegrasi dengan Simple Message Queue (formerly MNS), memperoleh pesan dari antrian pesan Simple Message Queue, dan kemudian mengembalikan hasil dan token tugas asli. Lalu, CloudFlow melanjutkan eksekusi alur berikutnya. Gambar berikut menunjukkan alur kerja lengkap.
Contoh:
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: contoh pemanggilan fungsi.
Action: FC:InvokeFunction
TaskMode: WaitForCustomCallback
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Async
body:
payload.$: $Input
taskToken.$: $Context.Current.TaskToken
End: trueSaat menggunakan mode integrasi WaitForCustomCallback, Anda dapat menggunakan ekspresi $Context.Current.TaskToken untuk mengakses token tugas di bidang Parameters bagian States. Awalan $Context menentukan jalur ke objek konteks dan memperoleh token tugas dari tugas saat ini.
Kemudian, mikro-layanan eksternal memanggil ReportTaskSucceeded atau ReportTaskFailed Operasi API untuk mengirim token dan status eksekusi tugas. Alur kerja beralih ke status berikutnya.
CloudFlow terintegrasi dengan layanan yang dikelola sendiri
Gambar berikut menunjukkan cara menggunakan layanan Simple Message Queue (formerly MNS) dan panggilan balik API untuk mengintegrasikan CloudFlow dengan layanan yang dikelola sendiri. Ini memperluas penggunaan CloudFlow. Simple Message Queue (formerly MNS) dapat berupa layanan penyimpanan perantara apa pun.