Puoi passare argomenti di runtime in una richiesta di esecuzione di un flusso di lavoro e accedervi utilizzando le variabili del flusso di lavoro.
Configurare un flusso di lavoro che riceve argomenti di runtime
Per configurare un flusso di lavoro per ricevere gli argomenti di runtime che passi come di una richiesta di esecuzione, procedi nel seguente modo:
Segui i passaggi per creare un nuovo flusso di lavoro o scegli un flusso di lavoro esistente da aggiornare, ma non eseguire ancora il deployment.
Aggiungi un campo
params
alla definizione del flusso di lavoro principale. Assicurati che è inserito tra parentesi quadre e il flusso di lavoro principale è in un bloccomain
:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
Il blocco
main
accetta un singolo argomento che è il nome di qualsiasi JSON valido tipo di dati; ad esempio un array, un oggetto o una stringa.Come best practice, passare un oggetto con più argomenti con nome rende ne facilitano l'individuazione e l'aggiunta di argomenti. Puoi anche utilizza la notazione punto per accedere agli argomenti.
Altri sottoworkflow possono avere più argomenti.
Ad esempio, il seguente flusso di lavoro restituisce un saluto "Un saluto da Google" a una persona di cui hai trasmesso il nome e il cognome come argomenti di runtime:
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}" } } ] } }
Esegui il deployment del flusso di lavoro per completarne la creazione o l'aggiornamento.
Trasmettere i dati in una richiesta di esecuzione
Una volta configurato il flusso di lavoro per ricevere gli argomenti di runtime, puoi passare una stringa in formato JSON, ad esempio {"firstName":"Workflows","lastName":"User"}
, al flusso di lavoro in una richiesta di esecuzione.
Console
Per eseguire un flusso di lavoro, nella console Google Cloud vai alla pagina Flussi di lavoro:
Nella pagina Flussi di lavoro, seleziona un flusso di lavoro per accedere al relativo pagina dei dettagli.
Nella pagina Dettagli flusso di lavoro, fai clic su play_arrow Esegui.
Nella sezione "Esegui flusso di lavoro" pagina visualizzata, inserisci una stringa JSON contenenti i nomi dei parametri e i valori di argomenti, come
{"firstName":"Workflows","lastName":"User"}
, nel campo "Input" area:Fai clic su Execute (Esegui).
Nella pagina Dettagli esecuzione, puoi visualizzare i risultati dell'esecuzione, tra cui l'output
Hello, Workflows User!
, l'ID esecuzione e lo stato, nonché il passaggio corrente o finale dell'esecuzione del flusso di lavoro. Per maggiori informazioni, consulta Accedere ai risultati dell'esecuzione del flusso di lavoro.
gcloud
Aggiungi il flag --data al comando gcloud workflows execute che utilizzi per eseguire il flusso di lavoro. Questo flag accetta un file JSON
una stringa di dati. Ad esempio, per passare firstName
e lastName
a
il flusso di lavoro di esempio precedente:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Sostituisci quanto segue:
WORKFLOW_NAME
: il nome del flusso di lavoroFIRST
: la stringa da passare al flusso di lavoro perfirstName
LAST
: la stringa per cui vuoi passare al flusso di lavorolastName
L'output dovrebbe essere simile al seguente:
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
Librerie client
A seconda del linguaggio della libreria client, puoi passare un argomento di runtime in una richiesta di esecuzione.
Ad esempio, utilizzando 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;
In alternativa, utilizzando Java:
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
Per saperne di più sull'esecuzione di un flusso di lavoro utilizzando le librerie client delle API di Google, consulta Eseguire un flusso di lavoro.
API REST
Aggiungi il flag
data
al comando che utilizzi per eseguire un flusso di lavoro di machine learning. Il valore didata
è una stringa in formato JSON con un argomento il cui valore corrisponde a una o più coppie parametro-valore con caratteri di escape. Ad esempio, per trasmettere unfirstName
e unlastName
al flusso di lavoro di esempio precedente: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"
Sostituisci quanto segue:
PROJECT_NUMBER
: il tuo progetto Google Cloud numeroWORKFLOW_NAME
: il nome del flusso di lavoroFIRST
: la stringa da passare al flusso di lavoro perfirstName
LAST
: la stringa da passare al flusso di lavoro perlastName
L'output dovrebbe essere simile al seguente:
{ "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" } ```
Per ottenere i risultati dell'esecuzione, esegui questo 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"
Sostituisci
EXECUTION_ID
con l'ID dell'output è stato restituito il primo comando.Questo output contiene righe simili alle seguenti:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
Per ulteriori informazioni sull'esecuzione di un flusso di lavoro utilizzando l'API REST, consulta Eseguire un flusso di lavoro.
Accedere agli argomenti di runtime
Questo esempio accede agli argomenti di runtime passati al flusso di lavoro come parte della di esecuzione della richiesta di esecuzione. Tutti gli argomenti vengono memorizzati nella stessa mappa, dichiarata come parametro del flusso di lavoro principale.
Quando esegui questo flusso di lavoro, passa gli argomenti di runtime utilizzando il seguente formato:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
Puoi utilizzare default
con la funzione libreria standard,
map.get, per accedere
argomenti di runtime facoltativi e restituisce un valore predefinito se la chiave non è
trovato. Nel seguente esempio, se non viene specificato un region
, viene utilizzato 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\")}" } ] } } ] } }