Serverless Workflow dapat diintegrasikan dengan berbagai layanan Alibaba Cloud. Setelah terintegrasi, layanan-layanan ini dieksekusi dalam langkah tugas di Serverless Workflow. Mode integrasi layanan didefinisikan menggunakan Flow Definition Language (FDL). Dalam langkah task, Anda dapat menggunakan resourceArn untuk menentukan layanan yang ingin diintegrasikan dan pattern untuk menentukan mode integrasi yang digunakan. Topik ini menjelaskan informasi terkait integrasi layanan, termasuk mode integrasi, objek konteks, dan layanan cloud terintegrasi.
Untuk informasi lebih lanjut tentang layanan cloud yang tersedia, lihat Layanan cloud terintegrasi.
Mode integrasi
Serverless Workflow mendukung tiga mode integrasi berikut:
Mode Permintaan-Respons: Dalam mode ini, ketika memanggil layanan pihak ketiga, Serverless Workflow melanjutkan ke langkah berikutnya segera setelah menerima respons HTTP. Ini adalah mode default.
Dalam sebuah langkah dari alur kerja yang didefinisikan dalam FDL, parameter
resourceArnmendefinisikan layanan, dan parameterpattern: requestResponsemendefinisikan mode integrasi layanan. Parameter pattern: requestResponse bersifat opsional. Jika tidak ditentukan, mode integrasi default akan digunakan. Dalam mode ini, Serverless Workflow melanjutkan ke langkah berikutnya segera setelah menerima respons pemanggilan. Contoh berikut menunjukkan alur kerja anak, di mana Serverless Workflow adalah layanan terintegrasi.version: v1 type: flow steps: - type: task name: testSubflow resourceArn: acs:fnf:::flow/flowABC #Mendefinisikan alur kerja anak. pattern: requestResponse #Menetapkan mode integrasi layanan ke mode permintaan-respons, yang merupakan mode default. - type: pass name: dummyDalam contoh ini, ketika langkah
testSubflowdijalankan, alur kerja anakflowABCdipicu. Setelah flowABC dipicu, alur kerja melanjutkan ke langkahdummy, sementaraflowABCmungkin masih berjalan.Mode Sinkron: Dalam mode ini, layanan umumnya menyediakan API untuk eksekusi asinkron. Setelah Serverless Workflow memanggil API tersebut, Serverless Workflow menunggu hingga tugas terkait selesai dan hasil eksekusi dikembalikan sebelum melanjutkan ke langkah berikutnya.
Untuk layanan terintegrasi tertentu, Serverless Workflow menunggu hingga tugas terkait selesai sebelum melanjutkan ke langkah berikutnya. Jenis layanan ini menyediakan API asinkron untuk memulai tugas. Anda harus mengirimkan tugas dan menunggu hingga tugas selesai sebelum langkah berikutnya dimulai.
Dalam langkah alur kerja yang didefinisikan dalam FDL, parameter
resourceArnmenentukan layanan, dan parameterpattern: syncmenentukan mode integrasi layanan. Contoh berikut menunjukkan alur kerja anak, di mana Serverless Workflow adalah layanan terintegrasi.version: v1 type: flow steps: - type: task name: testTask resourceArn: acs:fnf:::flow/flowABC #Mendefinisikan alur kerja anak. pattern: sync #Menetapkan mode integrasi layanan ke mode sinkron. - type: pass name: dummyDalam contoh ini, ketika langkah tugas dijalankan, alur kerja anak Serverless Workflow dipicu. Setelah alur kerja anak dipicu, alur kerja akan menunggu hasil eksekusinya sebelum melanjutkan ke langkah berikutnya. Ketika langkah
testTaskdijalankan, alur kerja anakflowABCdipicu. Setelah flowABC dipicu, alur kerja menunggu hasil eksekusinya. SetelahflowABCselesai, alur kerja melanjutkan ke langkahdummy. Pada titik ini, flowABC telah selesai.Mode Tunggu-Callback: Dalam mode ini, ketika memanggil layanan pihak ketiga dan memasukkan token tugas, Serverless Workflow menunggu Anda menggunakan token untuk memberi tahu alur kerja tentang hasil eksekusi sebelum melanjutkan ke langkah berikutnya.
Tugas callback menangguhkan alur kerja saat ini pada titik penjadwalan tugas sampai instruksi callback untuk token tugas yang sesuai diterima. Dalam langkah alur kerja yang didefinisikan dalam FDL, parameter
resourceArnmenentukan layanan, dan parameterpattern: waitForCallbackmenentukan mode integrasi layanan. Contoh berikut menunjukkan alur kerja anak, di mana Serverless Workflow adalah layanan terintegrasi.version: v1 type: flow steps: - type: task name: testSubflow resourceArn: acs:fnf:::flow/flowABC # Mendefinisikan alur kerja anak. pattern: waitForCallback #Menetapkan mode integrasi layanan ke mode tunggu-callback. - type: pass name: dummyDalam contoh ini, ketika langkah
testSubflowdijalankan, alur kerja anakflowABCakan dipicu. Setelah flowABC dipicu, alur kerja ditangguhkan untuk menunggu callback yang diimplementasikan melalui pemanggilan operasi APIReportTaskSucceedatauReportTaskFailed. Setelah alur kerja menerima dan memproses permintaan callback, alur kerja dilanjutkan ke langkahdummy, terlepas dari status penyelesaianflowABC. Callback diinisiasi oleh Anda.
Objek konteks
Objek konteks adalah objek JSON internal dalam instance eksekusi alur kerja yang berisi informasi tentang eksekusi dan langkah-langkah. Objek ini memungkinkan akses dari layanan eksternal. Untuk mengimplementasikan akses, Anda dapat memetakan objek konteks ke variabel tertentu dalam inputMappings. Contoh berikut menunjukkan struktur objek konteks yang tersedia:
"context": {
"flow": {
// ID unik, nama, dan tipe string dari alur kerja.
"id": "val1",
"name "val2",
},
"execution": {
// Nama dari eksekusi.
"name": "val3"
},
"step": {
// Nama dari langkah.
"name": "val4"
// ID peristiwa dari langkah.
"eventId": "val5"
// Indeks iterasi. Parameter ini valid dalam langkah foreach.
"IterationIndex": "val6",
},
"task": {
// Pengenal dari langkah, yang merupakan string. Parameter ini valid dalam mode tunggu-callback.
"token": "val7",
},
} Untuk mengintegrasikan layanan Serverless Workflow, Anda harus memperoleh dari alur kerja anak informasi tentang alur kerja induk yang memanggil alur kerja anak, serta taskToken dalam pemanggilan ini. taskToken akan digunakan dalam callback. Anda dapat memperoleh bidang target dan source dengan cara berikut:
...
inputMappings:
- target: current_flow_name
source: $context.flow.name
- target: current_execution_name
source: $context.execution.name
- target: current_step_task_token
source: $context.task.token Layanan cloud terintegrasi
Layanan | Mode permintaan-respons | Mode sinkron | Mode tunggu-callback |
Function Compute | Didukung | Tidak didukung | Tidak didukung |
Simple Message Queue (formerly MNS) antrian | Didukung | Tidak didukung | Didukung |
Simple Message Queue (formerly MNS) topik | Didukung | Tidak didukung | Didukung |
Serverless Workflow | Didukung | Didukung | Didukung |