Pode transmitir argumentos de tempo de execução num pedido de execução do fluxo de trabalho e aceder a esses argumentos através de variáveis do fluxo de trabalho.
Configure um fluxo de trabalho que receba argumentos de tempo de execução
Para configurar um fluxo de trabalho para receber argumentos de tempo de execução que lhe transmite como parte de um pedido de execução, faça o seguinte:
Siga os passos para criar um novo fluxo de trabalho ou escolha um fluxo de trabalho existente para o atualizar, mas não o implemente ainda.
Adicione um campo
params
à definição do fluxo de trabalho principal. Certifique-se de que o nome do argumento está entre parênteses retos e que o fluxo de trabalho principal está num blocomain
:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
O bloco
main
aceita um único argumento que é o nome de qualquer tipo de dados JSON válido; por exemplo, uma matriz, um objeto ou uma string.Como prática recomendada, a transmissão de um objeto com vários argumentos com nomes facilita a compreensão da respetiva finalidade e a adição de argumentos. Em seguida, também pode usar a notação de ponto para aceder aos argumentos.
Outros subfluxos de trabalho podem ter vários argumentos.
Por exemplo, o fluxo de trabalho seguinte devolve a saudação "Olá" a uma pessoa cujo nome próprio e apelido transmite como argumentos de tempo de execução:
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}" } } ] } }
Implemente o fluxo de trabalho para concluir a criação ou a atualização.
Transmita dados num pedido de execução
Depois de configurar o fluxo de trabalho para receber argumentos de tempo de execução, pode transmitir uma string no formato JSON, como {"firstName":"Workflows","lastName":"User"}
, para o fluxo de trabalho num pedido de execução.
Consola
Para executar um fluxo de trabalho, na Google Cloud consola, aceda à página Fluxos de trabalho:
Na página Fluxos de trabalho, selecione um fluxo de trabalho para aceder à respetiva página de detalhes.
Na página Detalhes do fluxo de trabalho, clique em play_arrow Executar.
Na página "Executar fluxo de trabalho" apresentada, introduza uma string JSON com os nomes dos parâmetros e os valores dos argumentos, como
{"firstName":"Workflows","lastName":"User"}
, na área "Entrada":Clique em Executar.
Na página Detalhes da execução, pode ver os resultados da execução, incluindo o resultado
Hello, Workflows User!
, o ID de execução e o estado, bem como o passo atual ou final da execução do fluxo de trabalho. Para mais informações, consulte o artigo Aceda aos resultados da execução do fluxo de trabalho.
gcloud
Adicione a flag --data ao comando gcloud workflows execute que usa para executar o fluxo de trabalho. Esta flag recebe uma string JSON dos seus dados. Por exemplo, para transmitir um firstName
e um lastName
para o fluxo de trabalho do exemplo anterior:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Substitua o seguinte:
WORKFLOW_NAME
: o nome do fluxo de trabalhoFIRST
: a string que quer transmitir ao seu fluxo de trabalho parafirstName
LAST
: a string que quer transmitir ao seu fluxo de trabalho paralastName
O resultado deve ser semelhante ao seguinte:
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
Consoante a linguagem da biblioteca cliente, pode transmitir um argumento de tempo de execução num pedido de execução.
Por exemplo, usando 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;
Em alternativa, usando Java:
// Creates the execution object. CreateExecutionRequest request = CreateExecutionRequest.newBuilder() .setParent(parent.toString()) .setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build()) .build();
Para mais informações sobre a execução de um fluxo de trabalho através das bibliotecas cliente de APIs Google, consulte o artigo Executar um fluxo de trabalho.
API REST
Anexe a flag
data
ao comando que usa para executar o seu fluxo de trabalho. O valor dedata
é uma string formatada em JSON com um argumento cujo valor é um ou mais pares parâmetro-valor com carateres de escape. Por exemplo, para transmitir umfirstName
e umlastName
ao fluxo de trabalho do exemplo 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"
Substitua o seguinte:
PROJECT_NUMBER
: o número do seu Google Cloud projetoWORKFLOW_NAME
: o nome do fluxo de trabalhoFIRST
: a string que quer transmitir ao seu fluxo de trabalho parafirstName
LAST
: a string que quer transmitir ao seu fluxo de trabalho paralastName
O resultado deve ser semelhante ao seguinte:
{ "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 obter os resultados da execução, execute o seguinte 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"
Substitua
EXECUTION_ID
pelo ID do resultado devolvido pelo primeiro comando.Esta saída contém linhas semelhantes às seguintes:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
Para mais informações sobre a execução de um fluxo de trabalho através da API REST, consulte o artigo Executar um fluxo de trabalho.
Aceda aos argumentos de tempo de execução
Este exemplo acede aos argumentos de tempo de execução transmitidos ao fluxo de trabalho como parte do pedido de execução. Todos os argumentos são armazenados no mesmo mapa, declarado como um parâmetro do fluxo de trabalho principal.
Quando executar este fluxo de trabalho, transmita argumentos de tempo de execução com o seguinte formato:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
Pode usar default
com a função da biblioteca padrão map.get para aceder a argumentos de tempo de execução opcionais e devolver um valor predefinido se a chave não for encontrada. No exemplo seguinte, se não for especificado um region
, é usado 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\")}" } ] } } ] } }