

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyatakan struktur mesin di Amazon States Language untuk alur kerja Step Functions
<a name="statemachine-structure"></a>

**Mengelola status dan mengubah data**  
Pelajari tentang [Melewati data antar status dengan variabel](workflow-variables.md) dan [Mengubah data dengan JSONata](transforming-data.md).

Mesin status ditentukan menggunakan teks JSON yang menunjukkan struktur yang berisi bidang-bidang berikut.

** `Comment` (Opsional)**  
Deskripsi tentang mesin status yang dapat dibaca manusia.

** `QueryLanguage`(Opsional; ketika dihilangkan, default ke) `JSONPath`**  
+ Nama bahasa query yang digunakan oleh mesin negara. Nilai yang diizinkan adalah `JSONPath` dan `JSONata`.
+ Jika tidak disediakan untuk mesin negara, nilai default untuk setiap negara adalah JSONPath.
+ Ketika bahasa kueri mesin status tingkat atas adalah`JSONPath`, masing-masing negara dapat mengganti bahasa kueri dengan QueryLanguage menyetelnya. `JSONata` Dengan pendekatan ini, Anda dapat secara bertahap mengonversi mesin status dari JSONPath JSONata satu status pada satu waktu. 
+ **Catatan:** Anda tidak dapat mengembalikan mesin status JSONata berbasis tingkat atas ke campuran JSONata dan JSONPath status.

** `StartAt` (Wajib)**  
String yang harus sama persis (bersifat peka huruf besar kecil) dengan nama salah satu objek status.

**`TimeoutSeconds`(Opsional)**  
Jumlah detik maksimum eksekusi mesin status dapat berjalan. Jika berjalan lebih lama dari waktu yang ditentukan, eksekusi gagal dengan `States.Timeout` [Nama kesalahan](concepts-error-handling.md#error-handling-error-representation).

** `Version` (Opsional)**  
Versi Amazon States Language yang digunakan dalam mesin status (default adalah "1.0").

** `States` (Wajib)**  
Objek yang berisi set status yang dibatasi koma.

Bidang `States` berisi [Status](workflow-states.md).

```
{
    "State1" : {
    },

    "State2" : {
    },
    ...
}
```

Mesin status ditentukan oleh status yang dimilikinya dan hubungan diantaranya.

Berikut ini contohnya.

```
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state",
  "StartAt": "HelloWorld",
  "States": {
    "HelloWorld": {
      "Type": "Pass",
      "Result": "Hello World!",
      "End": true
    }
  }
}
```

Ketika eksekusi mesin status ini diluncurkan, sistem dimulai dengan status yang direferensikan dalam bidang `StartAt` (`"HelloWorld"`). Jika status ini memiliki bidang `"End": true`, eksekusi berhenti dan mengembalikan hasilnya. Jika tidak, sistem mencari bidang `"Next":` dan berlanjut dengan status berikutnya. Proses ini berulang sampi sistem mencapai status terminal (status dengan `"Type": "Succeed"`, `"Type": "Fail"`, atau`"End": true`), atau terjadi kesalahan waktu aktif.

Aturan berikut berlaku untuk status dalam mesin status:
+ Status dapat muncul dalam urutan apa pun dalam blok terlampir, tetapi urutan daftarnya tidak memengaruhi urutan status berjalan. Isi status menentukan urutan ini.
+ Dalam mesin status, hanya ada satu status yang ditetapkan sebagai status `start`, yang ditetapkan oleh nilai bidang `StartAt` dalam struktur tingkat atas. Status ini adalah salah satu yang dijalankan pertama ketika eksekusi dimulai.
+ Setiap status dengan bidang `End` adalah `true` dianggap sebagai status `end` (atau `terminal`). Tergantung pada logika mesin status Anda—misalnya, jika mesin status Anda memiliki beberapa cabang eksekusi—Anda mungkin memiliki lebih dari satu status `end`.
+ Jika mesin status Anda hanya terdiri dari satu status, maka dapat menjadi status `start` dan status `end`.

## Bidang status umum dalam alur kerja
<a name="amazon-states-language-common-fields"></a>

Bidang berikut adalah umum untuk semua elemen negara.

** `Type` (Wajib)**  
Jenis negara bagian: Tugas, Pilihan, Paralel, Peta, Lulus, Tunggu, Sukses, Gagal.

**`QueryLanguage`(Opsional; ketika dihilangkan, default ke) `JSONPath`**  
+ Nama bahasa query yang digunakan oleh negara. Nilai yang diizinkan adalah `JSONPath` dan `JSONata`.
+ Ketika bahasa kueri mesin status tingkat atas adalah`JSONPath`, masing-masing negara dapat mengganti bahasa kueri dengan QueryLanguage menyetelnya. `JSONata` Dengan pendekatan ini, Anda dapat secara bertahap mengonversi mesin status dari JSONPath JSONata satu status pada satu waktu.

** `Next` **  
Nama status berikutnya yang dijalankan ketika status saat ini selesai. Beberapa tipe status, seperti `Choice`, mengizinkan beberapa status transisi.  
Jika status saat ini adalah status terakhir dalam alur kerja Anda, atau status terminal, seperti [Status alur kerja yang berhasil](state-succeed.md) atau[Status alur kerja gagal](state-fail.md), Anda tidak perlu menentukan `Next` bidang.

** `End` **  
Menunjuk status ini sebagai status terminal (mengakhiri eksekusi) jika diatur ke `true`. Jumlah status terminal per mesin status bisa berapa saja. Hanya satu `Next` atau `End` yang dapat digunakan dalam suatu status. Beberapa jenis status, seperti`Choice`, atau status terminal, seperti [Status alur kerja yang berhasil](state-succeed.md) dan[Status alur kerja gagal](state-fail.md), tidak mendukung atau menggunakan `End` bidang.

** `Comment` (Opsional)**  
Menyediakan deskripsi tentang mesin status yang dapat dibaca manusia.

** `Assign` (Opsional)**  
Digunakan untuk menyimpan variabel. `Assign`Bidang menerima objek JSON dengan key/value pasangan yang mendefinisikan nama variabel dan nilai yang ditetapkan. Nilai string apa pun, termasuk yang ada di dalam objek atau array, akan dievaluasi seperti JSONata ketika dikelilingi oleh karakter `{% %}`  
Untuk informasi selengkapnya, lihat [Melewati data antar negara bagian dengan variabel](workflow-variables.md).

** `Output`(Opsional, JSONata hanya)**  
Digunakan untuk menentukan dan mengubah output dari negara. Ketika ditentukan, nilai mengesampingkan default output status.   
Bidang output menerima nilai JSON apa pun (objek, array, string, angka, boolean, null). Nilai string apa pun, termasuk yang ada di dalam objek atau array, akan dievaluasi JSONata seolah-olah dikelilingi oleh karakter \$1%%\$1.  
 Output juga menerima JSONata ekspresi secara langsung, misalnya: “Output”: “\$1% jsonata expression%\$1”   
Untuk informasi selengkapnya, lihat [Pemrosesan Input dan Output](concepts-input-output-filtering.md).

** `InputPath`(Opsional, JSONPath hanya)**  
[Jalur](concepts-input-output-filtering.md) yang memilih sebagian input status yang akan diteruskan ke tugas status untuk pemrosesan. Jika dihilangkan, jalur memiliki nilai `$` yang menunjuk seluruh input. Untuk informasi selengkapnya, lihat [Pemrosesan Input dan Output](concepts-input-output-filtering.md).

** `OutputPath`(Opsional, JSONPath hanya)**  
[Path](concepts-input-output-filtering.md) yang memilih sebagian dari output state yang akan diteruskan ke state berikutnya. Jika dihilangkan, ia memiliki nilai `$` yang menunjuk seluruh output. Untuk informasi selengkapnya, lihat [Pemrosesan Input dan Output](concepts-input-output-filtering.md).