Transmettre des arguments d'environnement d'exécution dans une requête d'exécution

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 :

  1. Suivez les étapes pour créer un workflow ou choisissez un workflow existant à mettre à jour, mais ne le déployez pas encore.

  2. 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 bloc main :

    YAML

    main:
      params: [ARG_NAME]
      steps:
        ...

    JSON

    {
      "main": {
        "params": ["ARG_NAME"],
        "steps": [
          ...
        ]
        ...
      }
    }
      

    Le bloc main accepte 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}"
            }
          }
        ]
      }
    }
      
  3. 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

  1. Pour exécuter un workflow, accédez à la page Workflows (Workflows) de la Google Cloud console :

    Accéder à "Workflows"

  2. Sur la page Workflows (Workflows), sélectionnez un workflow pour accéder à sa page d'informations.

  3. Sur la page Workflow Details (Détails du workflow), cliquez sur Execute (Exécuter).

  4. 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) :

    Zone d'entrée contenant l'exemple de chaîne JSON

  5. 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 workflow
  • FIRST: chaîne que vous souhaitez transmettre à votre workflow pour firstName
  • LAST: chaîne que vous souhaitez transmettre à votre workflow pour lastName

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