Puedes pasar argumentos del entorno de ejecución en una solicitud de ejecución de flujo de trabajo y acceder a esos argumentos con variables de flujo de trabajo.
Configura un flujo de trabajo que reciba argumentos del entorno de ejecución
Para configurar un flujo de trabajo para que reciba argumentos del entorno de ejecución que le pasas como parte de una solicitud de ejecución, haz lo siguiente:
Sigue los pasos para crear un flujo de trabajo nuevo o elige uno existente para actualizarlo, pero no lo implementes todavía.
Agrega un campo
paramsa la definición del flujo de trabajo principal. Asegúrate de que el nombre del argumento esté entre corchetes y que el flujo de trabajo principal se coloque en un bloquemain:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
El bloque
mainacepta un solo argumento que es el nombre de cualquier tipo de datos JSON válido; por ejemplo, un array, un objeto o una cadena.Como práctica recomendada, pasar un objeto con varios argumentos con nombre facilita la comprensión de su propósito y la adición de argumentos. También puedes usar la notación de puntos para acceder a los argumentos.
Otros subflujos de trabajo pueden tener varios argumentos.
Por ejemplo, el siguiente flujo de trabajo muestra un saludo de “Hello” a una persona cuyo nombre y apellido pasas como argumentos de entorno de ejecución:
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}" } } ] } }
Implementa tu flujo de trabajo para terminar de crearlo o actualizarlo.
Pasa datos en una solicitud de ejecución
Una vez que tu flujo de trabajo esté configurado para recibir argumentos del entorno de ejecución, puedes pasar una cadena
en formato JSON, como
{"firstName":"Workflows","lastName":"User"}, al flujo de trabajo en una
solicitud de ejecución.
Console
Para ejecutar un flujo de trabajo, en la Google Cloud consola de, ve a la Workflows página:
En la página Workflows, selecciona un flujo de trabajo para ir a su página de detalles.
En la página Workflow Details, haz clic en play_arrow Execute.
En la página "Execute workflow" que aparece, ingresa una cadena JSON que contenga los nombres de tus parámetros y los valores de los argumentos, como
{"firstName":"Workflows","lastName":"User"}, en el área "Input":
Haz clic en Execute.
En la página Execution details, puedes ver los resultados de la ejecución, incluida la salida
Hello, Workflows User!, el ID y el estado de la ejecución, y el paso actual o final de la ejecución del flujo de trabajo. Para obtener más información, consulta Accede a los resultados de la ejecución del flujo de trabajo.
gcloud
Agrega la --data
marca al
comando
gcloud workflows execute que usas para ejecutar tu flujo de trabajo. Esta marca toma una cadena JSON de tus datos. Por ejemplo, para pasar un firstName y un lastName al flujo de trabajo del ejemplo anterior:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Reemplaza lo siguiente:
WORKFLOW_NAME: el nombre del flujo de trabajoFIRST: la cadena que deseas pasar a tu flujo de trabajo parafirstNameLAST: la cadena que deseas pasar a tu flujo de trabajo paralastName
El resultado debería ser similar al siguiente ejemplo:
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
Bibliotecas cliente
Según el lenguaje de la biblioteca cliente, puedes pasar un argumento del entorno de ejecución en una solicitud de ejecución.
Por ejemplo, con JavaScript:
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId, location, workflow),
execution: {
argument: JSON.stringify({"firstName":"Workflows","lastName":"User"})
}
});
const executionName = createExecutionRes[0].name;
O bien, con Java:
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
Para obtener más información sobre la ejecución de un flujo de trabajo con las bibliotecas cliente de la API de Google, consulta Ejecuta un flujo de trabajo.
API de REST
Agrega la marca
dataal comando que usas para ejecutar tu flujo de trabajo. El valor dedataes una cadena con formato JSON con un argumento cuyo valor es uno o más pares de valor-parámetro de escape. Por ejemplo, para pasar unfirstNamey unlastNameal flujo de trabajo del ejemplo anterior:curl --request POST \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ --data '{"argument":"{\"firstName\":\"FIRST\",\"lastName\":\"LAST\"}"}' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions"
Reemplaza lo siguiente:
PROJECT_NUMBER: tu Google Cloud número de proyectoWORKFLOW_NAME: el nombre del flujo de trabajoFIRST: la cadena que deseas pasar a tu flujo de trabajo parafirstNameLAST: la cadena que deseas pasar a tu flujo de trabajo paralastName
El resultado debería ser similar al siguiente ejemplo:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2020-11-09T23:51:31.765761331Z", "state": "ACTIVE", "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "workflowRevisionId": "000001-08c" } ```Para obtener los resultados de la ejecución, ejecuta el siguiente comando:
curl --request GET \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID"Reemplaza
EXECUTION_IDpor el ID del resultado que mostró tu primer comando.Este resultado contiene líneas similares a las siguientes:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
Para obtener más información sobre la ejecución de un flujo de trabajo con la API de REST, consulta Ejecuta un flujo de trabajo.
Accede a los argumentos del entorno de ejecución
En este ejemplo, se accede a los argumentos del entorno de ejecución que se pasan al flujo de trabajo como parte de la solicitud de ejecución. Todos los argumentos se almacenan en el mismo mapa, declarado como un parámetro del flujo de trabajo principal.
Cuando ejecutes este flujo de trabajo, pasa los argumentos del entorno de ejecución con el siguiente formato:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
Puedes usar default con la función de biblioteca estándar,
map.get, para acceder a los argumentos opcionales del entorno de ejecución y mostrar un valor predeterminado si no se
encuentra la clave. En el siguiente ejemplo, si no se especifica una region, se usa northamerica-northeast1:
YAML
main: params: [input] steps: - init: assign: - region: ${default(map.get(input, "region"), "northamerica-northeast1")}
JSON
{ "main": { "params": [ "input" ], "steps": [ { "init": { "assign": [ { "region": "${default(map.get(input, \"region\"), \"northamerica-northeast1\")}" } ] } } ] } }