Este tópico descreve os conceitos básicos da Flow Definition Language e fornece exemplos de uso.
Conceitos básicos
A Flow Definition Language (FDL) define a lógica de negócios. Durante a execução de um fluxo, o service Serverless Workflow executa as etapas em sequência conforme a definição do fluxo. Na FDL, um fluxo contém etapas, que podem ser atômicas e simples, como task, succeed, fail, wait e pass. Também podem ser etapas complexas de controle, como choice, parallel e foreach. Combine essas etapas para construir lógicas de negócios complexas. Por exemplo, uma ramificação de uma etapa paralela pode conter uma sequência de etapas. Se ocorrer um erro durante a execução, a FDL oferece os recursos retry e catch para tratar a falha.
As etapas da FDL assemelham-se a funções em uma linguagem de programação, e combiná-las equivale a invocar funções. Os dados trafegam entre as etapas por meio de entradas e saídas. Cada etapa utiliza variáveis locais para armazenar dados. Caso uma etapa contenha outra, a etapa externa atua como pai e a interna como filho.
Ao definir um fluxo, utilize as seguintes etapas:
Utilize uma etapa
passcomo marcador para planejar a estrutura básica do fluxo.Use uma etapa
taskpara invocar uma função no Function Compute.Use uma etapa
waitpara pausar a execução do fluxo por um período determinado.Use uma etapa
choicepara definir diferentes caminhos de execução.Use uma etapa
succeedoufailpara interromper o fluxo antecipadamente.Use uma etapa
parallelpara executar múltiplas ramificações simultaneamente.Use uma etapa
foreachpara processar dados de array em paralelo.
Um fluxo possui as seguintes propriedades:
version (Obrigatório): A versão do fluxo. Apenas a versão v1 é suportada.
type (Obrigatório): O tipo da definição. Defina este valor como flow.
steps (Obrigatório): A sequência de etapas no fluxo. Após a execução bem-sucedida de uma etapa, a próxima da sequência é iniciada. Para encerrar o fluxo antecipadamente, use a propriedade
endda etapa ou uma etapa succeed ou fail.inputMappings (Opcional): O mapeamento de entrada. A variável
$inputreferenciada neste mapeamento corresponde ao parâmetroInputda requisição da APIStartExecution.-
outputMappings (Opcional): O mapeamento de saída. A variável
$localreferenciada aqui é um objeto JSON que armazena o resultado da execução de cada etapa na sequência.NotaCaso você não especifique um mapeamento de saída,
$local
será utilizado como a saída final do fluxo.
timeoutSeconds (Opcional): O tempo limite para o fluxo, em segundos. Se a duração da execução ultrapassar o período especificado, a execução expira.
Exemplos
-
O fluxo de exemplo abaixo contém uma etapa task que invoca uma função no Function Compute.
version: v1 type: flow steps: - type: task name: hello resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello -
O próximo exemplo apresenta uma sequência de duas etapas,
step1estep4. A primeira,step1, é uma etapa pai que engloba duas etapas filhas:step2estep3.version: v1 type: flow steps: - type: parallel name: step1 branches: - steps: - type: pass name: step2 - steps: - type: pass name: step3 - type: pass name: step4
Mais informações
Para obter mais detalhes sobre os recursos da Flow Definition Language, consulte os seguintes tópicos: