Vous pouvez transmettre des arguments d'exécution dans une requête d'exécution de workflow et y accéder à l'aide de variables de workflow.
Configurer un workflow qui reçoit les arguments d'exécution
Pour configurer un workflow afin de recevoir des arguments d'exécution que vous lui transmettez lors d'une requête d'exécution, procédez comme suit :
Suivez les étapes pour créer un workflow ou choisissez un workflow existant à mettre à jour, mais ne le déployez pas encore.
Ajoutez un champ
paramsà la définition du workflow principal. Assurez-vous que le nom de l'argument est placé entre crochets et que le workflow principal est placé dans un blocmain:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
Le bloc
mainaccepte un seul argument correspondant au nom de n'importe quel type de données JSON valide. Par exemple, un tableau, un objet ou une chaîne.La pratique recommandée consiste à transmettre un objet avec plusieurs arguments nommés afin de comprendre plus facilement leur objectif, puis d'ajouter des arguments. Par la suite, vous pouvez aussi utiliser la notation par points pour accéder aux arguments.
D'autres sous-workflows peuvent comporter plusieurs arguments.
Par exemple, le workflow suivant renvoie un message d'accueil "Hello" à une personne dont vous transmettez le prénom et le nom en tant qu'arguments d'exécution:
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Déployez votre workflow pour terminer sa création ou sa mise à jour.
Transmettre des données dans une requête d'exécution
Une fois votre workflow configuré pour recevoir des arguments d'exécution, vous pouvez transmettre une chaîne
au format JSON, telle que
{"firstName":"Workflows","lastName":"User"}, au workflow dans une
requête d'exécution.
Console
Pour exécuter un workflow, accédez à la page Workflows (Workflows) de la Google Cloud console :
Sur la page Workflows (Workflows), sélectionnez un workflow pour accéder à sa page d'informations.
Sur la page Workflow Details (Détails du workflow), cliquez sur play_arrow Execute (Exécuter).
Sur la page "Execute workflow" (Exécuter le workflow) qui s'affiche, saisissez une chaîne JSON contenant les noms de vos paramètres et vos valeurs d'argument, tels que
{"firstName":"Workflows","lastName":"User"}, dans la zone "Input" (Entrée) :
Cliquez sur Execute (Exécuter).
Sur la page Execution details (Détails de l'exécution), vous pouvez afficher les résultats de l' exécution, y compris la sortie
Hello, Workflows User!, l'ID et l'état de l' exécution, ainsi que l'étape actuelle ou finale de l'exécution du workflow. Pour en savoir plus, consultez la page Accéder aux résultats d'exécution du workflow.
gcloud
Ajoutez l'indicateur --data à la commande gcloud workflows execute que vous utilisez pour exécuter votre workflow. Cet indicateur prend une chaîne JSON de vos données. Par exemple, pour transmettre les firstName et lastName à l'exemple de workflow précédent:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Remplacez les éléments suivants :
WORKFLOW_NAME: nom du workflowFIRST: chaîne que vous souhaitez transmettre à votre workflow pourfirstNameLAST: chaîne que vous souhaitez transmettre à votre workflow pourlastName
La sortie devrait ressembler à ce qui suit :
Waiting for execution [9379b067-306a-4db1-a58d-c9fc99aebfd4] to complete...done.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2022-07-19T13:52:47.659199466Z'
name: projects/1051295516635/locations/us-central1/workflows/workflow-6/executions/9379b067-306a-4db1-a58d-c9fc99aebfd4
result: '"Hello, Workflows User!"'
startTime: '2022-07-19T13:52:47.623862835Z'
state: SUCCEEDED
status:
currentSteps:
- routine: main
step: step2
workflowRevisionId: 000002-138
Bibliothèques clientes
Selon le langage de la bibliothèque cliente, vous pouvez transmettre un argument d'exécution dans une requête d'exécution.
Par exemple, en JavaScript :
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId