Cette rubrique présente les principes de base du langage Flow Definition Language (FDL) et fournit des exemples d'utilisation.
Principes de base
Le langage Flow Definition Language (FDL) définit la logique métier. Lors de l'exécution d'un flux, le service Serverless Workflow exécute les étapes séquentiellement selon la définition du flux. Dans le FDL, un flux contient des étapes. Celles-ci peuvent être des étapes atomiques simples, telles que task, succeed, fail, wait et pass. Elles peuvent également être des étapes de contrôle complexes, comme choice, parallel et foreach. Combinez ces étapes pour construire une logique métier complexe. Par exemple, une branche d'une étape parallèle peut être constituée d'une séquence d'étapes. Si une étape rencontre une erreur lors de son exécution, le FDL propose les fonctionnalités retry et catch pour la gérer.
Les étapes du FDL sont similaires aux fonctions d'un langage de programmation. Combiner des étapes s'apparente à invoquer des fonctions. Les données transitent entre les étapes via des entrées et des sorties. Chaque étape utilise des variables locales pour stocker les données. Si une étape en contient une autre, l'étape externe est l'étape parent et l'étape interne est l'étape enfant.
Pour définir un flux, utilisez les étapes suivantes :
Utilisez une étape
passcomme espace réservé pour planifier la structure de base du flux.Utilisez une étape
taskpour appeler une fonction dans Function Compute.Utilisez une étape
waitpour suspendre l'exécution du flux pendant une période donnée.Utilisez une étape
choicepour définir différents chemins d'exécution.Utilisez une étape
succeedoufailpour interrompre prématurément le flux.Utilisez une étape
parallelpour exécuter plusieurs branches en parallèle.Utilisez une étape
foreachpour traiter des données de type tableau en parallèle.
Un flux possède les propriétés suivantes :
version (obligatoire) : version du flux. Seule la version v1 est prise en charge.
type (obligatoire) : type de la définition. Définissez cette valeur sur
flow.steps (obligatoire) : séquence d'étapes du flux. Lorsqu'une étape s'exécute avec succès, l'étape suivante de la séquence se lance. Pour terminer le flux prématurément, utilisez la propriété
endd'une étape, ou bien une étapesucceedoufail.inputMappings (facultatif) : mappage d'entrée. La variable
$inputréférencée dans le mappage d'entrée correspond au paramètreInputde la requête APIStartExecution.-
outputMappings (facultatif) : mappage de sortie. La variable
$localréférencée dans le mappage de sortie est un objet JSON qui stocke le résultat d'exécution de chaque étape de la séquence.RemarqueSi vous ne spécifiez pas de mappage de sortie,
$local
est utilisé comme sortie finale du flux.
timeoutSeconds (facultatif) : délai d'expiration du flux, en secondes. Si la durée d'exécution du flux dépasse le délai d'expiration spécifié, l'exécution expire.
Exemples
-
L'exemple de flux suivant contient une étape
task. Cette étape appelle une fonction dans Function Compute.version: v1 type: flow steps: - type: task name: hello resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello -
L'exemple de flux ci-dessous comprend une séquence de deux étapes,
step1etstep4. La première étape,step1, est une étape parent qui contient deux étapes enfants,step2etstep3.version: v1 type: flow steps: - type: parallel name: step1 branches: - steps: - type: pass name: step2 - steps: - type: pass name: step3 - type: pass name: step4
Informations complémentaires
Pour plus d'informations sur les fonctionnalités du langage Flow Definition Language, consultez les rubriques suivantes :