L'esecuzione di un flusso di lavoro esegue la definizione attuale del flusso di lavoro associata al flusso di lavoro.
Puoi passare argomenti di runtime in una richiesta di esecuzione di un flusso di lavoro e accedervi utilizzando una variabile di flusso di lavoro. Per ulteriori informazioni, consulta Passare gli argomenti di runtime in una richiesta di esecuzione.
Al termine dell'esecuzione di un flusso di lavoro, la relativa cronologia e i risultati vengono conservati per un periodo di tempo limitato. Per saperne di più, consulta Quote e limiti.
Prima di iniziare
I vincoli di sicurezza definiti dalla tua organizzazione potrebbero impedirti di completare i passaggi seguenti. Per informazioni sulla risoluzione dei problemi, vedi Sviluppare applicazioni in un ambiente Google Cloud vincolato.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Se un flusso di lavoro accede ad altre risorse Google Cloud, assicurati che sia
associati a un account di servizio che dispone delle autorizzazioni corrette per farlo.
Per sapere quale account di servizio è associato a un flusso di lavoro esistente, consulta
Verifica un
associato al tuo flusso di lavoro.
Tieni presente che per creare una risorsa e collegare un account di servizio, devi disporre delle autorizzazioni per creare la risorsa e per rubare l'identità dell'account di servizio che collegherai alla risorsa. Per ulteriori informazioni, consulta Autorizzazioni degli account di servizio.
- Esegui il deployment di un flusso di lavoro utilizzando la console Google Cloud o Google Cloud CLI.
Esegui un flusso di lavoro
Puoi eseguire un flusso di lavoro utilizzando le librerie client, nella console Google Cloud, con la CLI gcloud o inviando una richiesta all'API REST di Workflows.
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 pagina Esegui flusso di lavoro, nel riquadro Input, puoi inserire argomenti di runtime facoltativi da passare al flusso di lavoro prima dell'esecuzione. Gli argomenti devono essere in formato JSON formato; ad esempio
{"animal":"cat"}
. Se il flusso di lavoro non utilizza di runtime, lascia vuoto questo campo.Se vuoi, specifica il livello logging delle chiamate che vuoi da applicare all'esecuzione del flusso di lavoro. Nella sezione Livello registro chiamate seleziona una delle seguenti opzioni:
- Non specificato: non è specificato alcun livello di logging. Questa è l'impostazione predefinita. Un livello di log dell'esecuzione ha la precedenza su qualsiasi livello di log del flusso di lavoro, a meno che il livello di log dell'esecuzione non sia specificato (valore predefinito). In questo caso, viene applicato il livello di log del flusso di lavoro.
- Solo errori: registra tutte le eccezioni rilevate o quando una chiamata viene interrotta a causa di un'eccezione.
- Tutte le chiamate: registra tutte le chiamate a flussi di lavoro secondari o funzioni di libreria e i propri risultati.
- Nessun log: nessun logging delle chiamate.
Fai clic su Execute (Esegui).
Nella pagina Dettagli esecuzione, puoi visualizzare i risultati dell'esecuzione, inclusi eventuali output, l'ID esecuzione e lo stato, nonché il passaggio corrente o finale dell'esecuzione del flusso di lavoro. Per ulteriori informazioni, vedi Accedi ai risultati di esecuzione del flusso di lavoro.
gcloud
Apri un terminale.
Trova il nome del flusso di lavoro da eseguire. Se non conosci il nome del flusso di lavoro, puoi inserire il seguente comando per elencare tutti i tuoi flussi di lavoro:
gcloud workflows list
Puoi eseguire il flusso di lavoro utilizzando
gcloud workflows run
o il comandogcloud workflows execute
:Esegui il flusso di lavoro e attendi il completamento dell'esecuzione:
gcloud workflows run WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --data=DATA
Esegui il flusso di lavoro senza attendere il tentativo di esecuzione finisci:
gcloud workflows execute WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --data=DATA
Sostituisci quanto segue:
WORKFLOW_NAME
: il nome del flusso di lavoro.CALL_LOGGING_LEVEL
(facoltativo): il livello di registrazione delle chiamate da applicare durante l'esecuzione. Può essere uno dei seguenti:none
: non è specificato alcun livello di logging. Questa è l'impostazione predefinita. Un di log dell'esecuzione ha la precedenza su qualsiasi livello di log del flusso di lavoro a meno che non venga specificato il livello di log dell'esecuzione (predefinito); in questo caso, si applica il livello di log del flusso di lavoro.log-errors-only
: registra tutte le eccezioni rilevate; o quando viene effettuata una chiamata interrotto a causa di un'eccezione.log-all-calls
: registra tutte le chiamate ai sottoprocessi o alle funzioni della libreria e i relativi risultati.log-none
: nessun registro chiamate.
DATA
(facoltativo): argomenti di runtime per il flusso di lavoro in formato JSON.
Se hai eseguito
gcloud workflows execute
, viene restituito l'ID univoco del tentativo di esecuzione del flusso di lavoro e l'output è simile al seguente:To view the workflow status, you can use following command: gcloud workflows executions describe b113b589-8eff-4968-b830-8d35696f0b33 --workflow workflow-2 --location us-central1
Per visualizzare lo stato dell'esecuzione, inserisci il comando restituito dal passaggio precedente.
Se il tentativo di esecuzione è riuscito, l'output è simile al seguente, con un state
che indica l'esito positivo del flusso di lavoro e un status
che specifica il passaggio finale del flusso di lavoro dell'esecuzione.
argument: '{"searchTerm":"Friday"}' endTime: '2022-06-22T12:17:53.086073678Z' name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/c4dffd1f-13db-46a0-8a4a-ee39c144cb96 result: '["Friday","Friday the 13th (franchise)","Friday Night Lights (TV series)","Friday the 13th (1980 film)","Friday the 13th","Friday the 13th (2009 film)","Friday the 13th Part III","Friday the 13th Part 2","Friday (Rebecca Black song)","Friday Night Lights (film)"]' startTime: '2022-06-22T12:17:52.799387653Z' state: SUCCEEDED status: currentSteps: - routine: main step: returnOutput workflowRevisionId: 000001-ac2
Librerie client
I seguenti esempi presuppongono che tu abbia già implementato un flusso di lavoro,myFirstWorkflow
.
Installa la libreria client e configura l'ambiente di sviluppo. Per vedi i dettagli. Panoramica delle librerie client di Workflows.
Clona il repository dell'app di esempio nella tua macchina locale:
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Passa alla directory che contiene il codice di esempio di Workflows:
Java
cd java-docs-samples/workflows/cloud-client/
Node.js
cd nodejs-docs-samples/workflows/quickstart/
Python
cd python-docs-samples/workflows/cloud-client/
Dai un'occhiata al codice di esempio:
Java
Node.js (JavaScript)
Node.js (TypeScript)
Python
L'esempio esegue le seguenti operazioni:
- Configura le librerie client di Cloud per Workflows.
- Esegue un flusso di lavoro.
- Esegue il polling dell'esecuzione del flusso di lavoro (utilizzando il backoff esponenziale) fino al termine dell'esecuzione.
- Stampa i risultati dell'esecuzione.
Per eseguire l'esempio, installa prima le dipendenze:
Java
mvn compile
Node.js (JavaScript)
npm install
Node.js (TypeScript)
npm install && npm run build
Python
pip3 install -r requirements.txt
Esegui lo script:
Java
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME mvn compile exec:java -Dexec.mainClass=com.example.workflows.WorkflowsQuickstart
Node.js (JavaScript)
npm start PROJECT_ID CLOUD_REGION WORKFLOW_NAME
Node.js (TypeScript)
npm start PROJECT_ID CLOUD_REGION WORKFLOW_NAME
Python
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME python3 main.py
Sostituisci quanto segue:
PROJECT_ID
(obbligatorio): l'ID progetto del progetto Google CloudCLOUD_REGION
: la posizione del flusso di lavoro (valore predefinito:us-central1
)WORKFLOW_NAME
: l'ID del flusso di lavoro (valore predefinito:myFirstWorkflow
)
L'output è simile al seguente:
Execution finished with state: SUCCEEDED ["Sunday","Sunday in the Park with George","Sunday shopping","Sunday Bloody Sunday","Sunday Times Golden Globe Race","Sunday All Stars","Sunday Night (South Korean TV series)","Sunday Silence","Sunday Without God","Sunday Independent (Ireland)"]
API REST
Per creare una nuova esecuzione utilizzando l'ultima revisione di un determinato flusso di lavoro, usa
il
projects.locations.workflows.executions.create
.
Tieni presente che per l'autenticazione è necessario un account di servizio con privilegi sufficienti per eseguire il flusso di lavoro. Ad esempio, puoi concedere a un servizio
il ruolo Invoker flussi di lavoro
(roles/workflows.invoker
) in modo che l'account abbia l'autorizzazione a
attivare l'esecuzione del flusso di lavoro. Per saperne di più, consulta
Eseguire chiamate a Workflows.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il tuo account Google Cloud di progetto elencato nella sezione IAM e Amministratore Impostazioni.LOCATION
: la regione in cui è stato eseguito il deployment del flusso di lavoro, ad esempious-central1
.WORKFLOW_NAME
: il nome definito dall'utente per il flusso di lavoro, ad esempiomyFirstWorkflow
.PARAMETER
: facoltativo. Se il flusso di lavoro che stai eseguendo possono ricevere argomenti di runtime, che li passi come parte di una richiesta di esecuzione, puoi aggiungere al corpo della richiesta una stringa in formato JSON il cui valore contiene uno o più caratteri di escape in coppie parametro-valore, ad esempio"{\"searchTerm\":\"asia\"}"
.VALUE
: facoltativo. Il valore di un che il flusso di lavoro può ricevere come argomento di runtime.CALL_LOGGING_LEVEL
: facoltativo. Il livello di registrazione delle chiamate da applicare durante l'esecuzione. L'impostazione predefinita è che nessun livello di logging specificato e al suo posto si applica il livello di log del flusso di lavoro. Per ulteriori informazioni, consulta la sezione Inviare log a Logging. Uno dei seguenti:CALL_LOG_LEVEL_UNSPECIFIED
: non è specificato alcun livello di logging e viene applicato il livello di log del flusso di lavoro. Questa è l'impostazione predefinita. In caso contrario, il livello di log dell'esecuzione e ha la precedenza sul livello di log del flusso di lavoro.LOG_ERRORS_ONLY
: registra tutte le eccezioni rilevate oppure quando una chiamata viene bloccata a causa di un'eccezione.LOG_ALL_CALLS
: registra tutte le chiamate ai sottoprocessi o alle funzioni della libreria e i relativi risultati.LOG_NONE
: nessun registro chiamate.
BACKLOG_EXECUTION
: facoltativo. Se impostato sutrue
, l'esecuzione non viene inserita in coda quando la quota di concorrenza è esaurita. Per ulteriori informazioni, vedi Gestire il backlogging dell'esecuzione.
Corpo JSON della richiesta:
{ "argument": "{\"PARAMETER\":\"VALUE\"}", "callLogLevel": "CALL_LOGGING_LEVEL", "disableConcurrencyQuotaOverflowBuffering": "BACKLOG_EXECUTION" }
Per inviare la richiesta, espandi una di queste opzioni:
In caso di esito positivo, il corpo della risposta contiene un'istanza di Execution
appena creata:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2023-11-07T14:35:27.215337069Z", "state": "ACTIVE", "argument": "{\"PARAMETER\":\"VALUE\"}", "workflowRevisionId": "000001-2df", "callLogLevel": "CALL_LOGGING_LEVEL", "status": {} }
Controllare lo stato delle esecuzioni
Esistono diversi comandi che ti aiutano a controllare lo stato dell'esecuzione di un flusso di lavoro.
Per recuperare un elenco dei tentativi di esecuzione di un flusso di lavoro e dei relativi ID, inserisci il seguente comando:
gcloud workflows executions list WORKFLOW_NAME
Sostituisci
WORKFLOW_NAME
con il nome del flusso di lavoro.Il comando restituisce un valore
NAME
simile al seguente:projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
Copia l'ID esecuzione da utilizzare nel comando successivo.
Per controllare lo stato di un tentativo di esecuzione e attendere che venga eseguito inserisci questo comando:
gcloud workflows executions wait EXECUTION_ID
Sostituisci
EXECUTION_ID
con l'ID del tentativo di esecuzione.Il comando attende il completamento del tentativo di esecuzione e poi restituisce i risultati.
Per attendere il completamento dell'ultima esecuzione e restituire il risultato dell'esecuzione completata, inserisci il seguente comando:
gcloud workflows executions wait-last
Se hai eseguito un tentativo di esecuzione precedente nella stessa sessione
gcloud
, il comando attende il completamento del tentativo di esecuzione precedente e poi restituisce i risultati dell'esecuzione completata. Se non esiste alcun tentativo precedente,gcloud
restituisce il seguente errore:ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
Per ottenere lo stato dell'ultima esecuzione, inserisci il seguente comando:
gcloud workflows executions describe-last
Se hai effettuato un precedente tentativo di esecuzione nella stessa sessione di
gcloud
, il valore restituisce i risultati dell'ultima esecuzione anche se è in esecuzione. Se non esiste alcun tentativo precedente,gcloud
restituisce il seguente errore:ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
Filtra esecuzioni
Puoi applicare filtri all'elenco di esecuzioni del flusso di lavoro restituite dal
Metodo workflows.executions.list
.
Puoi filtrare in base ai seguenti campi:
createTime
disableOverflowBuffering
duration
endTime
executionId
label
startTime
state
stepName
workflowRevisionId
Ad esempio, per filtrare in base a un'etichetta (labels."fruit":"apple"
), puoi creare una
Richiesta API simile alla seguente:
GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
Dove:
view=full
specifica una vista che definisce i campi da compilare esecuzioni restituite; In questo caso, tutti i datilabels.%22fruit%22%3A%22apple%22
è la sintassi del filtro con codifica URL
Per ulteriori informazioni, vedi Filtro AIP-160.
Gestire il backlog di esecuzione
Puoi utilizzare il backlogging dell'esecuzione per evitare i nuovi tentativi lato client e rimuovere l'esecuzione dei carichi di lavoro e massimizzare la velocità effettiva. Le esecuzioni in backlog vengono eseguite automaticamente non appena quando diventa disponibile la quota di contemporaneità di esecuzione.
Esiste un numero massimo di esecuzioni di flussi di lavoro attivi che possono essere eseguite contemporaneamente. Una volta esaurita questa quota, se la funzionalità di posticipazione delle esecuzioni è disattivata o se viene raggiunta la quota per le esecuzioni in coda, le nuove esecuzioni non vanno a buon fine con un codice di stato HTTP 429 Too many requests
. Con il backlogging delle esecuzioni abilitato, le nuove esecuzioni vengono eseguite e vengono
creato in uno stato QUEUED
. Non appena la quota di contemporaneità di esecuzione diventa
se disponibile, le esecuzioni vengono eseguite automaticamente e entrano nello stato ACTIVE
.
Per impostazione predefinita, il backlogging dell'esecuzione è abilitato per tutte le richieste (incluse quelle attivate da Cloud Tasks) con le seguenti eccezioni:
- Quando si crea un'esecuzione utilizzando
executions.run
oppureexecutions.create
connettore in un flusso di lavoro, il backlogging dell'esecuzione è disattivato per impostazione predefinita. Puoi configurarlo impostando esplicitamente il campodisableConcurrencyQuotaOverflowBuffering
dell'esecuzione sufalse
. - Per le esecuzioni attivate da Pub/Sub, il backlogging delle esecuzioni è è disattivata e non può essere configurata.
Tieni presente quanto segue:
- Le esecuzioni in coda vengono avviate in ordine FIFO (first in, first out), su una base di miglior impegno.
- Un campo timestamp
createTime
indica quando viene creata un'esecuzione. Il timestampstartTime
indica quando un'esecuzione viene estratta automaticamente dalla coda del backlog e inizia a essere eseguita. Per le esecuzioni senza backlog, entrambi i valori del timestamp sono identici. - Il limite per le esecuzioni in backlog può essere osservato utilizzando
workflowexecutions.googleapis.com/executionbacklogentries
metrica della quota. Per maggiori informazioni, consulta Visualizzare e gestire le quote.
Disabilita backlogging di esecuzione
Puoi disabilitare il backlogging dell'esecuzione impostando un flag quando utilizzi con Google Cloud CLI. Ad esempio:
gcloud workflows execute WORKFLOW_NAME --disable-concurrency-quota-overflow-buffering
In alternativa, puoi disabilitare il backlogging dell'esecuzione impostando
Campo disableConcurrencyQuotaOverflowBuffering
in true
nel file JSON della richiesta
quando si invia una richiesta di esecuzione all'API REST Workflows.
Ad esempio:
{ "argument": {"arg1":"value1"}, "callLogLevel": "LOG_NONE", "disableConcurrencyQuotaOverflowBuffering": true }
Per saperne di più, consulta Eseguire un flusso di lavoro.