Um estado Parallel executa várias ramificações simultaneamente. Use esse recurso para dividir um fluxo de trabalho em caminhos concorrentes — por exemplo, ao buscar dados de múltiplas origens ao mesmo tempo ou enviar notificações por diferentes canais em paralelo.
Funcionamento
O estado Parallel contém uma ou mais ramificações, e cada uma possui sua própria sequência de estados filhos. Durante a execução:
O estado Parallel inicia todas as ramificações simultaneamente.
Cada ramificação executa seus estados filhos independentemente.
Após a conclusão de todas as ramificações, o estado Parallel consolida os resultados em uma única saída do tipo
map[string]any. O resultado de cada ramificação é armazenado sob uma chave no formatoBranch<Index>(por exemplo,Branch0,Branch1).Se houver um
OutputConstructordefinido, o estado Parallel o aplica para transformar a saída combinada antes de passar o resultado ao próximo estado.
Limites
Número máximo de ramificações por estado Parallel: 50
Atributos
Atributos do estado Parallel
|
**Atributo** |
**Tipo** |
**Obrigatório** |
**Descrição** |
|
|
string |
Sim |
Nome do estado. |
|
|
string |
Não |
Descrição do estado. |
|
|
string |
Sim |
Tipo do estado. Defina como |
|
|
map[string]any |
Não |
Transforma a entrada antes de passá-la às ramificações. Consulte Entradas e saídas. |
|
|
ParallelBranch[] |
Sim |
Ramificações a executar em paralelo. Consulte ParallelBranch. |
|
|
map[string]any |
Não |
Transforma os resultados combinados das ramificações antes de passá-los ao próximo estado. Consulte OutputConstructor do estado em "Entradas e saídas". |
|
|
string |
Não |
Próximo estado a executar após a conclusão do estado Parallel. Não obrigatório se |
|
|
bool |
Não |
Indica se o escopo atual deve terminar após a conclusão do estado Parallel. |
|
|
Retry |
Não |
Política de nova tentativa. Consulte Tratamento de erros. |
|
|
Catch |
Não |
Política de captura. Consulte Tratamento de erros. |
ParallelBranch
Atributos de ParallelBranch
|
**Atributo** |
**Tipo** |
**Obrigatório** |
**Descrição** |
|
|
array |
Sim |
Array de estados na ramificação. |
|
|
string |
Sim |
Nome do primeiro estado a executar na ramificação. |
Exemplo
O fluxo de trabalho a seguir define um estado Parallel chamado Parallel1 com duas ramificações. Cada ramificação contém um único estado Pass que gera uma saída estática.
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
Saída da ramificação
Cada ramificação produz sua própria saída independentemente:
-
Saída de
Pass1(Branch0):{ "FieldA": 123 } -
Saída de
Pass2(Branch1):{ "FieldA": 321 }
Saída combinada do estado Parallel
O estado Parallel mescla todas as saídas das ramificações em um único mapa. Cada ramificação recebe uma chave padrão no formato Branch<Index>:
{
"Branch0": {
"FieldA": 123
},
"Branch1": {
"FieldA": 321
}
}
Próximos passos
Entradas e saídas: Transforme os dados que fluem pelos estados com
InputConstructoreOutputConstructor.Tratamento de erros: Configure as políticas
RetryeCatchpara lidar com falhas nas ramificações.