全部产品
Search
文档中心

CloudFlow:Tugas

更新时间:Jul 02, 2025

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.

  • RequestComplete

  • WaitForCustomCallback

  • WaitForSystemCallback

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.

image