Anda dapat menggunakan status Tugas untuk memanggil operasi API dari layanan terintegrasi serta menyelesaikan alur kerja yang kompleks. Topik ini menjelaskan status Tugas dan memberikan contoh penggunaan terkait. Contoh-contoh tersebut membantu Anda memanfaatkan status Tugas dalam memanggil operasi API dari layanan terintegrasi.
Ikhtisar
Status Tugas digunakan untuk memanggil operasi API dari layanan terintegrasi guna menyelesaikan pekerjaan tertentu. Anda dapat menggunakan status Tugas untuk memanggil fungsi, operasi API layanan Alibaba Cloud, atau layanan pihak ketiga melalui protokol umum seperti HTTP atau HTTPS. Dalam bahasa definisi alur (FDL), Anda dapat menandai status saat ini sebagai Tugas untuk menunjukkan status tersebut.
Tabel berikut menjelaskan parameter yang terlibat dalam status Tugas.
Parameter | Tipe | Diperlukan | Deskripsi | Contoh |
Nama | string | Ya | Nama dari status. | nama-status-saya |
Deskripsi | string | Tidak | Deskripsi dari status. | jelaskan di sini |
Tipe | string | Ya | Tipe dari status. | Tugas |
Aksi | string | Ya | Aksi yang akan dieksekusi dalam tugas saat ini. Aksi biasanya adalah nama operasi API dari layanan, atau nama aksi dari layanan terintegrasi. Format nilai: <Nama Layanan>:<Nama Operasi API>. | FC:InvokeFunction |
TaskMode | enum | Tidak | Mode di mana tugas dipanggil. CloudFlow menyediakan tiga mode. Untuk informasi lebih lanjut, lihat Mode integrasi layanan.
| WaitForCustomCallback |
InputConstructor | map[string]any | Tidak | Konstruktor input. | Lihat bagian InputConstructor dari topik Inputs and outputs. |
Parameters | map[string]any | Tidak | Spesifikasi untuk parameter yang diminta untuk pemanggilan. Spesifikasi sesuai dengan aksi. Nilai parameter bisa konstan atau mengikuti format JSONPath. | Untuk informasi lebih lanjut tentang spesifikasi, lihat Ikhtisar. |
Timeout | string | Tidak | Periode timeout pemanggilan. Unit: detik. Nilai valid: 0 - 604800. Nilai 0 menunjukkan bahwa tugas tidak pernah timeout. | 30 |
Anda dapat menggunakan ekspresi untuk secara dinamis membangun parameter berdasarkan konteks. | Timeout.$: $Input.timeout | |||
Retry | map[string]any | Tidak | Kebijakan ulang kesalahan. | Lihat Penanganan kesalahan. |
Catch | map[string]any | Tidak | Kebijakan tangkap kesalahan. | Lihat Penanganan kesalahan. |
OutputConstructor | map[string]any | Tidak | Konstruktor keluaran. | Untuk informasi lebih lanjut, lihat bagian OutputConstructor dari topik Masukan dan keluaran. |
Next | string | Tidak | Status berikutnya yang dieksekusi setelah status saat ini selesai. Jika nilai parameter End adalah true, biarkan parameter ini kosong. | status-berikutnya-saya |
End | bool | Tidak | Menentukan apakah status merupakan status terminal dari ruang lingkup saat ini. | true |
Contoh permintaan
Panggil Function Compute
Anda dapat mendeklarasikan bahwa sebuah state adalah dari tipe Task dan menentukan informasi tentang fungsi yang akan dipanggil di bagian Parameters sesuai spesifikasi parameter Function Compute. Untuk detail lebih lanjut mengenai spesifikasi parameter, lihat Langkah 2: Konfigurasikan Parameter Pemanggilan. Fungsi dapat dipanggil dalam mode integrasi dioptimalkan atau melalui Alibaba Cloud OpenAPI.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: contoh pemanggilan fungsi sinkron
States:
- Name: contoh pemanggilan fungsi sinkron
Type: Task
TaskMode: RequestComplete
Action: FC:InvokeFunction
Parameters:
resourceArn: acs:fc:::functions/myFunction1/LATEST
invocationType: Sync
body:
key: name
Next: contoh pemanggilan fungsi asinkron
- Type: Task
Name: contoh pemanggilan fungsi asinkron
Action: FC:InvokeFunction
TaskMode: RequestComplete
Parameters:
invocationType: Async
resourceArn: acs:fc:{region}:{accountID}:functions/myFunction/LATEST
body:
key: name
Next: SucceededExit
- Type: Pass
Name: SucceededExit
End: true
Panggil operasi API dari layanan Alibaba Cloud
Panggil operasi API yang sesuai berdasarkan spesifikasi Alibaba Cloud OpenAPI. Contoh kode berikut menunjukkan cara melakukan aksi ECS:DescribeInstances.
Type: StateMachine
SpecVersion: v1
Name: MyWorkflow
StartAt: DescribeInstances
States:
- Type: Task
Name: DescribeInstances
Action: ECS:DescribeInstances
TaskMode: RequestComplete
Parameters:
RegionId: cn-hangzhou
VpcId: vpc-bp11y195luy47h8****
VSwitchId: vsw-bp1wb297ekw7xyh****
End: true
Panggil layanan yang tidak disediakan oleh Alibaba Cloud dan konfigurasikan batas waktu tugas dan penangkapan kesalahan
Dalam contoh berikut, layanan HTTP dipanggil menggunakan mode integrasi WaitForCustomCallback. Periode timeout tugas ditetapkan selama 1 jam. Jika tugas gagal selesai dalam waktu tersebut, alur kerja melempar kesalahan yang ditangkap oleh aturan yang didefinisikan di bidang Catch.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SubmitTask
States:
- Type: Task
Name: SubmitTask
Action: HTTP:Request
TaskMode: RequestComplete
Timeout.$: $Input.timeout
Parameters:
method: POST
url: https://*****
body:
taskName: fly
headers:
Content-Type: multipart/form-data
Catch:
- Errors:
- FnF.TaskTimeout
Description: 'Aturan penangkapan kesalahan #1'
Next: NotifyOnTaskTimeout
OutputConstructor:
ErrorCode: TaskTimeout
ErrorMessage: Tugas habis waktu.
End: true
- Type: Task
Name: NotifyOnTaskTimeout
Action: HTTP:Request
TaskMode: RequestComplete
Parameters:
method: POST
url: https://******
body:
taskName: fly
errorCode.$: $Input.ErrorCode
errorMessage.$: $Input.ErrorMessage
headers:
Content-Type: multipart/form-data
End: true
Periode timeout tugas diperoleh dari masukan eksekusi. Contoh masukan eksekusi:
{
"timeout": 10
}Jika tugas gagal selesai dalam waktu yang ditentukan, kesalahan timeout akan ditangkap. Alur kerja kemudian melanjutkan ke node NotifyOnTaskTimeout dan mengirimkan notifikasi bahwa tugas telah habis waktu.
