Bir iş akışının bir dizideki her öğeye aynı işlem mantığını uygulaması gerektiğinde — örneğin bir sipariş grubunu doğrulamak, görüntü kümesini yeniden boyutlandırmak veya kayıt listesini zenginleştirmek — Map durumu bu işlemi, diziyi yineleyerek ve her öğeyi paralel olarak bir alt akıştan geçirerek gerçekleştirir. Bu süreç, eşzamanlı çalıştırma sağlayan bir foreach döngüsüne benzer. Map durumları varsayılan olarak satır içi modda çalışır. Satır içi mod tek bir düğüme odaklanır ve bir koleksiyondaki her öğenin işlem gerektirdiği senaryolar için uygundur.
Çalışma mekanizması
ItemsPathifadesini kullanarak girişten bir dizi çıkarın.Processoriçinde tanımlanan durumları çalıştırarak her öğe için bağımsız bir alt akış başlatın.Tüm alt akışları,
MaxConcuccencysınırına kadar paralel olarak çalıştırın.Tüm alt akışlar tamamlandıktan sonra sonuçları,
Itemsanahtarı altında birmap[string]anyçıktısı olarak birleştirin.
Alan referansı
| Alan | Tür | Gerekli | Açıklama |
|---|---|---|---|
| Name | string | Evet | Durum adı. |
| Type | string | Evet | Değeri Map olmalıdır. |
| ItemsPath | string | Evet | Hedef diziyi giriştenden çıkaran ifade. $Input ve $Context değişkenlerini destekler. Bkz. ItemsPath. |
| Processor | Processor | Evet | Her dizi öğesi için çalışan alt akış tanımı. Bkz. Processor. |
| InputConstructor | map[string]any | Hayır | Yinelemeden önce girişi oluşturur veya yeniden şekillendirir. Bkz. Girişler ve çıkışlar. |
| OutputConstructor | map[string]any | Hayır | Tüm alt akışlar tamamlandıktan sonra birleştirilmiş çıktıyı yeniden şekillendirir. Bkz. Durum OutputConstructor'ı. |
| MaxConcuccency | int | Hayır | Maksimum paralel alt akış sayısı. Üst sınır 40'tır. Bkz. MaxConcuccency. |
| Next | string | Hayır | Tamamlandıktan sonra geçiş yapılacak durum. End değeri true ise gerekli değildir. |
| End | bool | Hayır | Bu durumu geçerli kapsamın sonlandırıcı durumu olarak işaretler. |
| Retry | Retry | Hayır | Hata yeniden deneme ilkesi. Bkz. Hata işleme. |
| Catch | Catch | Hayır | Hata yakalama ilkesi. Bkz. Hata işleme. |
| Description | string | Hayır | Durum açıklaması. |
Temel alanlar
ItemsPath
Girişten bir dizi çıkaran ifadedir. İfade bir JSON dizisi döndürürse, Map durumu her öğe üzerinde yineleme yapar ve öğeyi Processor'a bağımsız olarak iletir.
$Input ve $Context ifade değişkenlerini destekler:
$Input.FieldA
Bu ifade, giriştenden FieldA dizisini çıkarır. Her öğe daha sonra ayrı bir paralel alt akışta işlenir.
Processor
Her dizi öğesi için çalışan alt akışı tanımlar.
| Alan | Tür | Gerekli | Açıklama |
|---|---|---|---|
| StartAt | string | Evet | Alt akışta çalıştırılacak ilk durum. |
| States | array | Evet | Alt akışı oluşturan durumlar. |
Örnek:
Processor:
StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: true
MaxConcuccency
Paralel olarak çalışan maksimum alt akış sayısıdır. Üst sınır 40'tır.
Örnek
Aşağıdaki akış, üç öğeli bir dizi üzerinde yineleme yapan bir Map durumu tanımlar. Her öğe tek bir Pass durumundan geçer.
Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Map1
States:
- Type: Map
Name: Map1
End: true
InputConstructor:
FieldA:
- a: b
- c: d
- e: f
ItemsPath: $Input.FieldA
Processor:
StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: true
Giriş
InputConstructor aşağıdaki girişi oluşturur:
{
"FieldA": [
{ "a": "b" },
{ "c": "d" },
{ "e": "f" }
]
}
Her yinelemenin aldığı veriler
ItemsPath FieldA dizisini çıkarır. Her alt akış, giriş olarak tek bir öğe alır. Örneğin, ilk yineleme şunu alır:
{
"a": "b"
}
İkinci yineleme { "c": "d" } değerini, üçüncü yineleme ise { "e": "f" } değerini alır. Üç alt akışın tümü paralel olarak çalışır.
Çıkış
Tüm alt akışlar tamamlandıktan sonra, Map durumu sonuçları Items anahtarı altında birleştirir:
{
"Items": [
{ "a": "b" },
{ "c": "d" },
{ "e": "f" }
]
}
Bu birleştirilmiş çıktıyı yeniden şekillendirmek için OutputConstructor kullanın.