

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

# Status alur kerja paralel
<a name="state-parallel"></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).

`Parallel`State (`"Type": "Parallel"`) dapat digunakan untuk menambahkan cabang eksekusi terpisah di mesin negara Anda.

Selain [bidang status umum](statemachine-structure.md#amazon-states-language-common-fields), status `Parallel` memperkenalkan bidang tambahan ini.

** `Branches` (Wajib)**  
Array objek yang menentukan mesin status untuk mengeksekusi secara paralel. Setiap objek mesin status tersebut harus memiliki bidang dengan nama `States` dan `StartAt`, yang maknanya persis seperti yang ada di tingkat atas mesin status.

**`Parameters`(Opsional, JSONPath hanya)**  
Digunakan untuk meneruskan informasi ke mesin negara yang didefinisikan dalam `Branches` array.

**`Arguments`(Opsional, JSONata hanya)**  
Digunakan untuk menyampaikan informasi ke tindakan API dari sumber daya yang terhubung. Nilai dapat mencakup JSONata ekspresi. Untuk informasi selengkapnya, lihat [Mengubah data dengan Step JSONata Functions](transforming-data.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 [Mengubah data dengan Step JSONata Functions](transforming-data.md).

** `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).

** `ResultPath`(Opsional, JSONPath hanya)**  
Menentukan tempat (dalam input) untuk meletakkan output cabang. Input kemudian difilter sebagaimana ditentukan oleh bidang `OutputPath` (jika ada) sebelum digunakan sebagai output status. Untuk informasi selengkapnya, lihat [Pemrosesan Input dan Output](concepts-input-output-filtering.md).

** `ResultSelector`(Opsional, JSONPath hanya)**  
Teruskan koleksi pasangan nilai kunci, tempat nilai-nilai bersifat statis atau dipilih dari hasil. Untuk informasi selengkapnya, lihat [ResultSelector](input-output-inputpath-params.md#input-output-resultselector).

** `Retry` (Opsional)**  
Array objek, yang disebut Retriers, yang menentukan kebijakan percobaan ulang jika status menemukan kesalahan waktu aktif. Untuk informasi selengkapnya, lihat [Contoh mesin negara menggunakan Coba Ulang dan Tangkap](concepts-error-handling.md#error-handling-examples).

** `Catch` (Opsional)**  
Array objek, yang disebut Catcher, yang menentukan status fallback yang dijalankan jika status menemukan kesalahan waktu aktif dan kebijakan percobaan ulang habis atau tidak ditentukan. Untuk informasi selengkapnya, lihat [Status Fallback](concepts-error-handling.md#error-handling-fallback-states).

Sebuah `Parallel` status menyebabkan AWS Step Functions untuk mengeksekusi setiap cabang, dimulai dengan status yang disebutkan di `StartAt` bidang cabang itu, serentetan mungkin, dan menunggu sampai semua cabang berakhir (mencapai status terminal) sebelum memproses bidang `Parallel` status. `Next`

## Contoh Status Paralel
<a name="parallel-example"></a>

```
{
  "Comment": "Parallel Example.",
  "StartAt": "LookupCustomerInfo",
  "States": {
    "LookupCustomerInfo": {
      "Type": "Parallel",
      "End": true,
      "Branches": [
        {
         "StartAt": "LookupAddress",
         "States": {
           "LookupAddress": {
             "Type": "Task",
             "Resource": "arn:aws:lambda:region:account-id:function:AddressFinder",
             "End": true
           }
         }
       },
       {
         "StartAt": "LookupPhone",
         "States": {
           "LookupPhone": {
             "Type": "Task",
             "Resource": "arn:aws:lambda:region:account-id:function:PhoneFinder",
             "End": true
           }
         }
       }
      ]
    }
  }
}
```

Dalam contoh ini, cabang `LookupAddress` dan `LookupPhone` dieksekusi secara paralel. Berikut adalah bagaimana alur kerja visual terlihat di konsol Step Functions.

![\[Grafik visual dari alur kerja paralel contoh.\]](http://docs.aws.amazon.com/id_id/step-functions/latest/dg/images/parallel-state.png)


Setiap cabang harus mandiri. Status di cabang status `Parallel` tidak boleh memiliki bidang `Next` yang menargetkan sebuah bidang di luar cabang tersebut, begitu pula status lain di luar cabang tidak boleh bertransisi ke cabang tersebut.

## Pemrosesan Input dan Output Status Paralel
<a name="state-parallel-output"></a>

Status `Parallel` menyediakan setiap cabang dengan salinan data inputnya sendiri (tunduk pada modifikasi oleh bidang `InputPath`). Ini menghasilkan output yang merupakan array dengan satu elemen untuk setiap cabang, yang berisi output dari cabang tersebut. Tidak ada persyaratan bahwa semua elemen harus dengan tipe yang sama. Array output dapat dimasukkan ke dalam data input (dan seluruhnya dikirim sebagai output status `Parallel`) dengan menggunakan bidang `ResultPath` dengan cara umum (lihat [Pemrosesan Input dan Output](concepts-input-output-filtering.md)).

```
{
  "Comment": "Parallel Example.",
  "StartAt": "FunWithMath",
  "States": {
    "FunWithMath": {
      "Type": "Parallel",
      "End": true,
      "Branches": [
        {
          "StartAt": "Add",
          "States": {
            "Add": {
              "Type": "Task",
              "Resource": "arn:aws:states:region:123456789012:activity:Add",
              "End": true
            }
          }
        },
        {
          "StartAt": "Subtract",
          "States": {
            "Subtract": {
              "Type": "Task",
              "Resource": "arn:aws:states:region:123456789012:activity:Subtract",
              "End": true
            }
          }
        }
      ]
    }
  }
}
```

Jika status `FunWithMath` diberikan array `[3, 2]` sebagai input, maka kedua status `Add` dan `Subtract` menerima array tersebut sebagai masukan. Output dari `Subtract` tugas `Add` dan akan menjadi jumlah dan perbedaan antara elemen array 3 dan 2, yaitu `5` dan`1`, sedangkan output dari `Parallel` keadaan akan menjadi array.

```
[ 5, 1 ]
```

**Tip**  
Jika status Paralel atau Peta yang Anda gunakan di mesin status Anda mengembalikan array array, Anda dapat mengubahnya menjadi array datar dengan [ResultSelector](input-output-inputpath-params.md#input-output-resultselector) bidang. Untuk informasi selengkapnya, lihat [Meratakan array array](input-output-inputpath-params.md#flatten-array-of-arrays-result-selector).

## Penanganan Kesalahan
<a name="error-handling"></a>

Jika setiap cabang gagal karena kesalahan tidak tertangani atau dengan transisi ke status `Fail`, seluruh status `Parallel` dianggap telah gagal dan semua cabangnya dihentikan. Jika kesalahan tidak ditangani oleh status `Parallel`itu sendiri, Step Functions menghentikan eksekusi dengan kesalahan.

**catatan**  
Ketika status paralel gagal, fungsi Lambda Invoke terus berjalan dan pekerja aktivitas yang memproses token tugas tidak dihentikan.   
Untuk menghentikan aktivitas yang berjalan lama, gunakan heartbeat untuk mendeteksi apakah cabangnya telah dihentikan oleh Step Functions, dan menghentikan pekerja yang memproses tugas. Memanggil [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html), [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html), atau [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html) akan mengembalikan kesalahan jika status telah gagal. Lihat [Kesalahan Heartbeat](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html#API_SendTaskHeartbeat_Errors).
Menjalankan fungsi Lambda tidak dapat dihentikan. Jika Anda telah menerapkan fallback, gunakan status `Wait` sehingga pekerjaan pembersihan terjadi setelah fungsi Lambda telah selesai.