All Products
Search
Document Center

CloudFlow:Input dan output

Last Updated:Aug 21, 2026

CloudFlow meneruskan data antar state dalam sebuah alur kerja. Setiap state menerima input dari state sebelumnya, lalu mengembalikan dan meneruskan output ke state berikutnya. Topik ini menjelaskan mekanisme input dan output dalam alur kerja.

Informasi latar belakang

Data dalam alur kerja CloudFlow mengalir dari satu state ke state lainnya, mirip dengan pemanggilan fungsi dalam pemrograman fungsional. Setiap state menerima input dan menghasilkan output. Data output disimpan dalam konteks, sehingga memungkinkan otomatisasi proses dalam aplikasi bisnis yang memerlukan logika kompleks.

Catatan

Input dan output harus berupa objek JSON. Ukuran input dan output suatu state tidak boleh melebihi 64 KiB. Jika ukurannya melebihi batas tersebut, eksekusi alur akan gagal.

Input dan output eksekusi

Input eksekusi

Anda harus menyediakan informasi atau data untuk memulai eksekusi. Data tersebut dapat berfungsi sebagai input bagi satu atau beberapa state. Selama orkestrasi alur kerja, Anda dapat mengakses input eksekusi menggunakan ekspresi sistem $Context.Execution.Input.

Sebagai contoh, logika sistem pendaftaran mahasiswa online terdiri dari tiga proses: pengumpulan informasi mahasiswa, verifikasi informasi mahasiswa, dan pendaftaran mahasiswa. Informasi dasar mahasiswa diperlukan dalam setiap proses. Dalam kasus ini, Anda dapat meneruskan informasi dasar tersebut sebagai input eksekusi dan mengonfigurasi ketiga state terkait agar mengakses input tersebut melalui ekspresi sistem.

Di kotak dialog Execute Flow, atur Execution Name menjadi test. Pada bagian Execution Input, masukkan objek JSON berisi informasi dasar mahasiswa di editor JSON. Objek tersebut mencakup bidang seperti name, age, gender, country, city, occupation, hobbies (array), dan isActive (Boolean).

Output eksekusi

Output eksekusi adalah hasil dari eksekusi yang berhasil. Output ini tidak dapat diakses menggunakan variabel sistem selama orkestrasi alur kerja.

Input dan output state

Masukan suatu keadaan

Selama orkestrasi alur kerja, Anda dapat mengakses input state saat ini menggunakan ekspresi sistem $Context.Current.Input atau bentuk singkatnya $Input.

Keluaran keadaan

Selama orkestrasi alur kerja, Anda dapat mengakses output state saat ini menggunakan ekspresi sistem $Context.Current.Output atau bentuk singkatnya $Output. Perlu diperhatikan bahwa bentuk singkat $Output hanya dapat digunakan dalam cakupan konstruktor output.

Konstruktor

Ekspresi sistem yang dapat digunakan dalam konstruktor

Ekspresi sistem berikut dapat digunakan dalam konstruktor:

  • $Context: Siklus hidup $Context mencakup seluruh periode eksekusi alur kerja. Untuk informasi lebih lanjut tentang $Context, lihat Data passing.

  • $Input: Siklus hidup $Input dimulai saat alur kerja memasuki state dan berakhir saat alur kerja keluar dari state tersebut. $Input merupakan bentuk singkat dari $Context.Current.Input.

  • $Output: Siklus hidup $Output dimulai saat alur kerja memasuki state respons panggilan Task dan berakhir saat alur kerja keluar dari state tersebut. $Output merupakan bentuk singkat dari $Context.Current.Output.

  • $Global: Siklus hidup $Global mencakup seluruh periode eksekusi alur kerja. Untuk informasi lebih lanjut tentang $Global, lihat Global variables.

Penting
  • Kunci yang diakhiri dengan .$ dalam konstruktor input, konstruktor output, atau konstruktor parameter harus diberi nilai dalam bentuk ekspresi. Jika tidak, terjadi error.

  • Saat menggunakan fungsi bawaan atau variabel sistem yang diawali dengan $, tambahkan .$ di akhir kunci variabel untuk memastikan variabel tersebut tidak dianggap sebagai string.

  • Konstruktor input atau output mendukung hingga 10 tingkat penumpukan fungsi bawaan.

Gambar berikut menunjukkan siklus hidup ekspresi sistem $Input, $Output, $Context, dan $Global, serta proses penugasan dalam berbagai state.

  • $Input adalah input eksekusi.

  • Pada gambar sebelumnya, $Input=InputConstructor($Context,$Global) menunjukkan bahwa dalam cakupan tersebut, InputConstructor dapat merujuk ke $Context dan $Global serta mengekstraksi informasi darinya. Hasil konstruksi tersebut ditugaskan ke $Input.

  • $Output adalah hasil panggilan Task. Jika panggilan dilakukan dalam mode callback asinkron, nilai $Output adalah hasil callback tersebut.

  • $Output=OutputConstructor($Context,$Global) menunjukkan bahwa dalam cakupan tersebut, OutputConstructor dapat merujuk ke $Context dan $Global serta mengekstraksi informasi darinya. Hasil konstruksi tersebut ditugaskan ke $output.

  • $Global menunjukkan variabel global, yang dapat diakses sepanjang periode eksekusi alur kerja.

  • $Global=Merge($Global,GlobalConstructor($Context,$Global)) menunjukkan bahwa variabel yang dikonstruksi oleh konstruktor global digabungkan dengan variabel yang sudah ada di $Global, lalu semua variabel tersebut disimpan kembali di $Global untuk memperbarui variabel global bersama.

  • $Context tetap valid sepanjang eksekusi.

InputConstructor

InputConstructor mengonstruksi input alur kerja. Ekspresi InputConstructor berbeda dari ekspresi kondisional pada state Choice. Ekspresi kondisional hanya dapat mengembalikan Nilai Boolean, sedangkan ekspresi InputConstructor dapat mengembalikan nilai apa pun. Anda dapat menggunakan variabel sistem berikut dalam InputConstructor state:

  • $Context

  • $Input

  • $Global

Penting

Jika terdapat beberapa konfigurasi input, prioritas input berurutan menurun sebagai berikut: InputConstructor, ItemsPath, dan ItemConstructor.

Definisi mesin keadaan berikut memberikan contoh penggunaan InputConstructor.

Type: StateMachine
Name: test3-tx
SpecVersion: v1
StartAt: InvokeFunction1
States:
  - Type: Task
    Name: InvokeFunction
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    InputConstructor:
      FieldA.$: $Context.Execution.Input
      FieldB: World
      FieldC.$: length($Context.Execution.Input)
      FieldD.$: $Global.InvokeFunctionPayload
    Parameters:
      resourceArn: >-
        acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
      invocationType: Sync
      body.$: $Input
    End: true
  - Type: Task
    Name: InvokeFunction1
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Sync
      resourceArn: acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
    GlobalConstructor:
      InvokeFunctionPayload.$: $Output.Body
    Next: InvokeFunction
  • Pada contoh sebelumnya, struktur data InputConstructor adalah Map[String]Any.

  • FieldA.$: $Context.Execution.Input menunjukkan bahwa kunci FieldA secara dinamis mengambil nilai dari $Context.Execution.Input alih-alih dianggap sebagai string.

  • FieldB: World menunjukkan bahwa string statis 'World' ditugaskan ke FieldB. Nilai tidak diambil secara dinamis karena kunci FieldB tidak diakhiri dengan penanda .$.

  • FieldC.$: length($Context.Execution.Input) menunjukkan bahwa fungsi bawaan length digunakan untuk mengambil panjang nilai dalam $Context.Execution.Input dan panjang tersebut ditugaskan ke FieldC. Untuk informasi tentang fungsi bawaan yang dapat digunakan dalam konstruktor, lihat Built-in functions.

  • Ekspresi FieldD.$: $Global.InvokeFunctionPayload mengekstraksi nilai kunci InvokeFunctionPayload dalam storage space global dan meneruskan nilai tersebut sebagai bidang FieldD ke state Task.

OutputConstructor

Dibandingkan dengan InputConstructor, OutputConstructor dieksekusi pada waktu yang berbeda dan mendukung lebih banyak variabel dalam ekspresi konteks. Misalnya, Anda hanya dapat menggunakan $Context atau $Input dalam konstruktor input, sedangkan dalam konstruktor output Anda dapat menggunakan $Output untuk merepresentasikan output karena panggilan Task telah menghasilkan output tersebut. Anda dapat menggunakan variabel sistem berikut dalam OutputConstructor state:

  • $Context

  • $Input

  • $Output

  • $Global

Definisi mesin keadaan berikut memberikan contoh penggunaan OutputConstructor.

Type: StateMachine
Name: test3-tx
SpecVersion: v1
StartAt: InvokeFunction1
States:
  - Type: Task
    Name: InvokeFunction1
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Sync
      resourceArn: acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
    GlobalConstructor:
      InvokeFunctionPayload.$: $Output.Body
    Next: InvokeFunction
  - Type: Task
    Name: InvokeFunction
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: >-
        acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
      invocationType: Sync
      body.$: $Input
    OutputConstructor:
      returnID.$: uuid()
      functionResult.$: $Output
      functionResultStr.$: jsonToString($Output)
      executionInput.$: $Context.Execution.Input
      lastOutput.$: $Input
      demo.$: $Global
    End: true
  • Pada contoh sebelumnya, struktur data OutputConstructor adalah map[string]any.

  • functionResult.$ secara dinamis mengambil output state, executionInput.$ secara dinamis mengambil input eksekusi, dan lastOutput.$ secara dinamis mengambil input state.

  • returnID.$ mengambil ID unik, dan functionResultStr.$ mengambil string yang dibuat dari output state.