全部产品
Search
文档中心

CloudFlow:Pengoperan Data

更新时间:Jul 02, 2025

Pengoperan data di antara beberapa status dalam sebuah alur mirip dengan pengoperan data dalam bahasa pemrograman fungsional. Status dalam CloudFlow serupa dengan fungsi dalam pemrograman. Status-status tersebut menerima input, mengembalikan output, dan menyimpan output dalam konteks. Topik ini menjelaskan ikhtisar dan contoh penggunaan dari pengoperan data.

Ikhtisar

Anda dapat menggabungkan dan menumpuk status dalam CloudFlow. Data dalam lingkungan runtime dari sebuah status disebut konteks. Data tersebut dapat dikategorikan ke dalam kategori berikut:

  • Data Alur: mencakup nama dan wilayah alur, nama status yang membentuk alur, serta peran Resource Access Management (RAM) yang digunakan untuk mengeksekusi alur.

  • Data Eksekusi: mencakup nama dan input eksekusi, input dan output status saat ini, token yang digunakan untuk panggilan balik, informasi kesalahan yang dihasilkan selama eksekusi, dan jumlah percobaan ulang untuk penanganan kesalahan.

Akses Data

Gunakan ekspresi $Context yang disediakan oleh sistem untuk mengakses data terkait alur dan eksekusi alur, baik data statis maupun dinamis. Konteks mencakup konten berikut:

{
  "Execution": {
    "Name": "String",
    "Input": {},
    "RoleArn": "String"
  },
  "Current": {
    "Name": "String",
    "Input": {},
    "Output": {},
    "Error": {
      "Code": "String",
      "Detail": "String"
    },
    "RetryCount": "Number",
    "TaskToken": "String"
  }
}

Konteks dapat digunakan untuk membangun data dalam skenario berikut:

  • Pembuat Input dan Output. Untuk informasi lebih lanjut, lihat Input dan Output.

  • Bidang ItemsPath dalam status Map. Contoh: $Context.Current.Input.

  • Bidang Condition dalam status Choice. Contoh: $Context.Current.Input.Size>=1024.

  • Penentuan informasi penanganan kesalahan. Contoh: $Context.Current.Error.Code dan $Context.Current.Error.Detail.

  • Pengoperan token panggilan balik tugas. Contoh: $Context.Current.TaskToken.

CloudFlow menyediakan pintasan umum seperti $Input dan $Output. Anda dapat menggunakan pintasan ini untuk mengakses input dan output node saat ini dengan cepat.

  • $Input setara dengan $Context.Current.Input.

  • $Output setara dengan $Context.Current.Output.

Pengoperan Data

Status yang berbeda memiliki logika input dan output yang berbeda. Jika pembuat input dan output tidak didefinisikan, status memiliki logika input dan output berikut:

  • Pass, Succeed, Fail, dan Wait: Status ini menerima input dan menggunakan input asli yang tidak diproses sebagai output.

  • Choice: Status ini hanya menerima input dan meneruskan input ke status tujuan tanpa mengembalikan output. Sebagai contoh, status Choice dapat meneruskan input ke cabang Default atau cabang tertentu untuk menentukan apakah kondisi yang diperlukan terpenuhi. Jika kondisi terpenuhi, status Choice meneruskan input ke status berikutnya.

  • Parallel: Sistem membuat salinan mendalam dari input dan meneruskan salinan tersebut ke beberapa cabang secara bersamaan. Output dari status ini berada dalam format Map[String]Any. Kunci dalam Map[String]Any adalah nama implisit Branch N dari cabang paralel. Nilai dalam Map[String]Any adalah hasil pemrosesan input aktual dalam cabang paralel.

  • Map: Sistem menentukan apakah input adalah array atau Map[String]Any. Jika input dari status Map bukan array dan Anda tidak menentukan konten yang akan diiterasi menggunakan parameter ItemsPath, sistem secara otomatis mendapatkan nilai dari status Map sebagai array iteratif. Sistem melakukan iterasi pada array. Elemen array digunakan sebagai input untuk prosesor iterasi. Output dari status Map berada dalam format Map[String]Any. Kunci dalam Map[String]Any adalah string Items. Nilai dalam Map[String]Any adalah array yang terdiri dari beberapa hasil iterasi.

  • Task: Status ini menerima data input dari status sebelumnya atau sumber data eksternal, mengeksekusi logika bisnis spesifik dalam skrip tugas, menggunakan ekspresi $Context untuk mengakses dan memanipulasi data, lalu meneruskan hasil eksekusi tugas sebagai data output ke status berikutnya atau menyimpannya dalam sistem eksternal.

Contoh

Type: StateMachine
Name: DataTransferExample
SpecVersion: v1
StartAt: Step1
States:
  - Type: Pass
    Name: Step1
    Next: Step2
  - Type: Parallel
    Name: Step2
    InputConstructor:
      FieldA: 123
    Branches:
      - StartAt: Pass1
        States:
          - Type: Pass
            Name: Pass1
            End: true
      - StartAt: Pass2
        States:
          - Type: Pass
            Name: Pass2
            End: true
    Next: Step3
  - Type: Pass
    Name: Step3
    End: true

Dalam contoh di atas, InputConstructor digunakan dalam status Parallel bernama Step2 untuk membangun objek JSON yang berisi properti FieldA. Nilai dari properti FieldA adalah 123. Secara default, input diteruskan ke ParallelBranch #0 dan ParallelBranch #1. Sebagai contoh, dalam cabang ParallelBranch #0, input diteruskan ke status Pass1. Kode berikut memberikan contoh data konteks dari status Pass1.

{
  "Execution": {
    "Name": "xxxx-xxxx-xxxx-xxxx",
    "Input": {},
    "RoleArn": "xxxx"
  },
  "Current": {
    "Name": "Pass1",
    "Input": {
      "FieldA": 123
    },
    "Output": {
      "FieldA": 123
    },
    "Error": null,
    "RetryCount": 0
  }
}