Parallel state, birden fazla dalı aynı anda çalıştırır. Bir iş akışını eşzamanlı yollara bölmek için bu durumu kullanın; örneğin, verileri birkaç kaynaktan eşzamanlı olarak almak veya bildirimleri farklı kanallardan paralel şekilde göndermek gibi senaryolarda uygundur.
Nasıl çalışır
Bir Parallel state, bir veya daha fazla dal içerir ve her dal kendi alt durum dizisini barındırır. Çalışma zamanında:
Parallel state tüm dalları eşzamanlı olarak başlatır.
Her dal, alt durumlarını bağımsız olarak çalıştırır.
Tüm dallar tamamlandıktan sonra, Parallel state sonuçları tek bir
map[string]anyçıktısında toplar. Her dalın sonucu,Branch<Index>adlı bir anahtar altında saklanır (örneğin,Branch0,Branch1).Bir
OutputConstructortanımlanmışsa, Parallel state birleştirilmiş çıktıyı dönüştürmek için bunu uygulayarak sonucu bir sonraki duruma iletir.
Sınırlamalar
Bir Parallel state başına maksimum dal sayısı: 50
Nitelikler
Parallel state nitelikleri
| **Nitelik** | **Tür** | **Zorunlu** | **Açıklama** |
|---|---|---|---|
Name |
string | Evet | Durum adı. |
Description |
string | Hayır | Durum açıklaması. |
Type |
string | Evet | Durum türü. Parallel olarak ayarlayın. |
InputConstructor |
map[string]any | Hayır | Girdiyi dallara iletmeden önce dönüştürür. Bkz. Girdiler ve çıktılar. |
Branches |
ParallelBranch[] | Evet | Paralel olarak çalıştırılacak dallar. Bkz. ParallelBranch. |
OutputConstructor |
map[string]any | Hayır | Birleştirilmiş dal sonuçlarını bir sonraki duruma iletmeden önce dönüştürür. "Girdiler ve çıktılar" bölümündeki Durum OutputConstructor'ı konusuna bakın. |
Next |
string | Hayır | Parallel state tamamlandıktan sonra çalıştırılacak bir sonraki durum. End değeri true ise zorunlu değildir. |
End |
bool | Hayır | Parallel state tamamlandıktan sonra mevcut kapsamın sonlandırılıp sonlandırılmayacağı. |
Retry |
Retry | Hayır | Yeniden deneme ilkesi. Bkz. Hata yönetimi. |
Catch |
Catch | Hayır | Yakalama ilkesi. Bkz. Hata yönetimi. |
ParallelBranch
ParallelBranch nitelikleri
| **Nitelik** | **Tür** | **Zorunlu** | **Açıklama** |
|---|---|---|---|
States |
array | Evet | Dal içindeki durum dizisi. |
StartAt |
string | Evet | Dalda çalıştırılacak ilk durumun adı. |
Örnek
Aşağıdaki iş akışı, iki dal içeren Parallel1 adlı bir Parallel state tanımlar. Her dal, statik bir çıktı üreten tek bir Pass durumu içerir.
Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Parallel1
States:
- Type: Parallel
Name: Parallel1
End: true
Branches:
- StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: true
OutputConstructor:
FieldA: 123
- StartAt: Pass2
States:
- Type: Pass
InputConstructor:
FieldA: 321
Name: Pass2
End: true
Dal çıktısı
Her dal kendi çıktısını bağımsız olarak üretir:
-
Pass1çıktısı (Branch0):{ "FieldA": 123 } -
Pass2çıktısı (Branch1):{ "FieldA": 321 }
Birleştirilmiş Parallel state çıktısı
Parallel state, tüm dal çıktılarını tek bir haritada birleştirir. Her dala Branch<Index> biçiminde varsayılan bir anahtar atanır:
{
"Branch0": {
"FieldA": 123
},
"Branch1": {
"FieldA": 321
}
}
Sonraki adımlar
Girdiler ve çıktılar: Durumlar arasında akan verileri
InputConstructorveOutputConstructorile dönüştürün.Hata yönetimi: Dal hatalarını işlemek için
RetryveCatchilkelerini yapılandırın.