É possível transmitir argumentos de ambiente de execução em uma solicitação de execução de fluxo de trabalho e acessá-los usando variáveis de fluxo de trabalho.
Configurar um fluxo de trabalho que receba argumentos de ambiente de execução
Para configurar um fluxo de trabalho para receber argumentos de ambiente de execução que você transmite a ele como parte de uma solicitação de execução, faça o seguinte:
Siga as etapas para criar um novo fluxo de trabalho ou escolher um fluxo de trabalho existente para update, mas não o implante ainda.
Adicione um campo
params
à definição do fluxo de trabalho principal. Verifique se o nome do argumento está entre colchetes e se o fluxo de trabalho principal está em um blocomain
:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
O bloco
main
aceita um único argumento que seja o nome de qualquer tipo de dados JSON válido. por exemplo, uma matriz, um objeto ou uma string.Como prática recomendada, transmitir um objeto com vários argumentos nomeados facilita a compreensão da finalidade e a adição de argumentos. Use a notação de ponto para acessar os argumentos.
Outros subfluxos de trabalho podem ter vários argumentos.
Por exemplo, esse fluxo de trabalho retorna uma saudação "Hello" para uma pessoa com nome e sobrenome que você transmite como argumentos 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}" } } ] } }
Implante seu fluxo de trabalho para concluir a criação ou atualização.
Transmitir dados em uma solicitação de execução
Depois que o fluxo de trabalho estiver configurado para receber argumentos de ambiente de execução, será possível transmitir uma string
no formato JSON, como
{"firstName":"Workflows","lastName":"User"}
, ao fluxo de trabalho em uma
solicitação de execução.
Console
Para executar um fluxo de trabalho, no console do Google Cloud, acesse Página Fluxos de trabalho:
Na página Fluxos de trabalho, selecione um fluxo de trabalho para acessar o respectivo página de detalhes.
Na página Detalhes do fluxo de trabalho, clique em play_arrow Executar.
Na página "Executar fluxo de trabalho", insira 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, é possível ver os resultados da execução, incluindo a saída
Hello, Workflows User!
, o ID de execução e o estado e a etapa atual ou final da execução do fluxo de trabalho. Para mais informações, consulte Acesse os resultados da execução do fluxo de trabalho.
gcloud
Adicione a sinalização --data
ao comando
gcloud workflows execute
usado para executar o fluxo de trabalho. Essa sinalização usa uma string JSON
dos dados. Por exemplo, para transmitir firstName
e lastName
ao
fluxo de trabalho do exemplo anterior:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Substitua:
WORKFLOW_NAME
: o nome do fluxo de trabalhoFIRST
: a string que você quer transmitir ao fluxo de trabalho parafirstName
LAST
: a string que você quer transmitir ao fluxo de trabalho paralastName
A saída será semelhante a esta:
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 de cliente
Dependendo da linguagem da biblioteca de cliente, é possível transmitir um argumento de tempo de execução em uma solicitação 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;
Ou, 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 como executar um fluxo de trabalho usando o as bibliotecas de cliente das APIs do Google, consulte Executar um fluxo de trabalho.
API REST
Anexe a sinalização
data
ao comando usado para executar o fluxo de trabalho. O valor dedata
é uma string em formato JSON com um argumento no valor de um ou mais pares de valor-parâmetro de escape. Por exemplo, para transmitirfirstName
elastName
para o 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:
PROJECT_NUMBER
: o número do projeto do Google Cloud.WORKFLOW_NAME
: o nome do fluxo de trabalhoFIRST
: a string que você quer transmitir para o fluxo de trabalho parafirstName
LAST
: a string que você quer transmitir para o fluxo de trabalho paralastName
A saída será semelhante a esta:
{ "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 ver os resultados, 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 da saída. seu primeiro comando retornou.Essa saída inclui linhas semelhantes às seguintes:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
Para mais informações sobre como executar um fluxo de trabalho usando a API REST, consulte Executar um fluxo de trabalho.
Acessar argumentos de ambiente de execução
Essa amostra acessa os argumentos do ambiente de execução transmitidos para o fluxo de trabalho como parte da solicitação de execução. Todos os argumentos são armazenados no mesmo mapa, declarados como um parâmetro do fluxo de trabalho principal.
Ao executar esse fluxo de trabalho, transmita argumentos de ambiente de execução usando o seguinte formato:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
Você pode usar default
com a função da biblioteca padrão.
map.get, para acessar
argumentos opcionais do tempo de execução e retornam um valor padrão se a chave não for
encontradas. No exemplo a seguir, se um region
não for especificado,
northamerica-northeast1
é usado:
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\")}" } ] } } ] } }