Questa pagina mostra come usare i salti o i loop for per controllare l'ordine in cui vengono eseguiti i passaggi del flusso di lavoro. I salti di base ti consentono di definire quale passaggio successivo al flusso di lavoro. I salti condizionali si basano su salti di base, consentendoti di usa condizionale espressioni per controllare l'ordine di esecuzione tramite un flusso di lavoro. Ad esempio, puoi eseguire determinati passaggi solo quando una variabile o una risposta di un altro passaggio del flusso di lavoro soddisfa criteri specifici.
Gli esempi in questa pagina utilizzano un'API di esempio che restituisce il giorno della settimana.
Prima di iniziare
- 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.
- Dovresti già avere un flusso di lavoro esistente in cui vuoi modificare l'ordine di esecuzione. Per scoprire come creare ed eseguire il deployment di un flusso di lavoro, consulta Crea e aggiorna un del flusso di lavoro.
Utilizza i salti per modificare l'ordine di esecuzione
Per impostazione predefinita, tutti i flussi di lavoro sono elenchi ordinati in cui viene eseguito ogni passaggio nell'ordine da te definito nel codice sorgente del flusso di lavoro. Puoi scegliere per eseguire l'override dell'ordine predefinito usando i salti.
Salti di base
Puoi specificare il passaggio successivo di un flusso di lavoro utilizzando i salti di base.
Console
Apri la pagina Workflows nella console Google Cloud:
Vai a WorkflowsSeleziona il nome del flusso di lavoro di cui vuoi modificare l'ordine dei passaggi esistenti.
Nella pagina Modifica flusso di lavoro, seleziona Avanti per passare al flusso di lavoro. editor.
Aggiungi il campo
next
alla fine di un passaggio per indicare al flusso di lavoro di passare a un determinato passaggio:YAML
- step_a: ... next: STEP_NAME_TO_JUMP_TO - step_b: ... - next_step: ...
JSON
[ { "step_a": { ... "next": "STEP_NAME_TO_JUMP_TO" } } { "step_b": { ... } } { "next_step": { ... } } ]
Sostituisci
STEP_NAME_TO_JUMP_TO
con il nome del passaggio successivo nel flusso di lavoro. Ad esempio:next_step
.Seleziona Esegui il deployment.
gcloud
Apri il file di definizione del flusso di lavoro nell'editor di testo di tua scelta.
Aggiungi il campo
next
alla fine di un passaggio per indicare al flusso di lavoro di passare a un determinato passaggio:YAML
- step_a: ... next: STEP_NAME_TO_JUMP_TO - step_b: ... - next_step: ...
JSON
[ { "step_a": { ... "next": "STEP_NAME_TO_JUMP_TO" } } { "step_b": { ... } } { "next_step": { ... } } ]
Sostituisci
STEP_NAME_TO_JUMP_TO
con il nome del del flusso di lavoro. Ad esempio,next_step
.Salva il file del flusso di lavoro.
Per eseguire il deployment del flusso di lavoro, inserisci il seguente comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Sostituisci quanto segue:
WORKFLOW_NAME
: obbligatorio. Il nome del flusso di lavoro.WORKFLOW_FILE.YAML
: obbligatorio. Il file di origine per il flusso di lavoro.
Esempio
Ad esempio, i passaggi del seguente flusso di lavoro non sono nell'ordine corretto:
YAML
- get_time: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime - return_daylight_savings_bool: return: ${daylightSavings} - get_daylight_savings_bool: assign: - daylightSavings: ${currentTime.body.isDayLightSavingsTime}
JSON
[ { "get_time": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime" } }, { "return_daylight_savings_bool": { "return": "${daylightSavings}" } }, { "get_daylight_savings_bool": { "assign": [ { "daylightSavings": "${currentTime.body.isDayLightSavingsTime}" } ] } } ]
In questo esempio, i campi next
sono stati aggiunti a get_daylight_savings_bool
e return_daylight_savings_bool
, in modo che vengano eseguiti
nell'ordine corretto:
YAML
- get_time: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime next: get_daylight_savings_bool - return_daylight_savings_bool: return: ${daylightSavings} - get_daylight_savings_bool: assign: - daylightSavings: ${currentTime.body.isDayLightSavingsTime} next: return_daylight_savings_bool
JSON
[ { "get_time": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime", "next": "get_daylight_savings_bool" } }, { "return_daylight_savings_bool": { "return": "${daylightSavings}" } }, { "get_daylight_savings_bool": { "assign": [ { "daylightSavings": "${currentTime.body.isDayLightSavingsTime}" } ], "next": "return_daylight_savings_bool" } } ]
Salti condizionali
Puoi utilizzare i salti condizionali per determinare quale passaggio eseguire successivamente in un flusso di lavoro.
I salti condizionali utilizzano blocchi switch
, che consentono di passare a un passaggio specificato se
se è soddisfatta una determinata condizione. Ciascuna
Il blocco switch
può includere un massimo di 50 condizioni.
Console
Apri la pagina Workflows nel Console Google Cloud:
Vai a WorkflowsSeleziona il nome del flusso di lavoro a cui vuoi aggiungere un blocco
switch
.Nella pagina Modifica flusso di lavoro, seleziona Avanti per passare al flusso di lavoro. editor.
Nella pagina Definisci flusso di lavoro, la definizione corrente del flusso di lavoro è visualizzati. Per modificare il flusso di lavoro in modo che esegua un determinato passaggio in base in un'istruzione condizionale, aggiungi un passaggio che utilizza un blocco
switch
:YAML
- SWITCH_STEP_NAME: switch: - condition: ${EXPRESSION_ONE} next: STEP_A - condition: ${EXPRESSION_TWO} next: STEP_B ... next: STEP_C - STEP_A ... - STEP_B ... - STEP_C ...
JSON
[ { "SWITCH_STEP_NAME": { "switch": [ { "condition": "${EXPRESSION_ONE}", "next": "STEP_A" }, { "condition": "${EXPRESSION_TWO}", "next": "STEP_B" } ], "next": "STEP_C" } "STEP_A": { ... } "STEP_B": { ... } "STEP_C": { ... } } ]
Sostituisci quanto segue:
SWITCH_STEP_NAME
: il nome del passaggio contenente il bloccoswitch
.EXPRESSION_ONE
: la prima espressione per valutare. Se questa espressione restituisce true, il flusso di lavoro viene eseguito AvantiSTEP_A
. Se questa espressione restituisce false, il flusso di lavoro valuta l'espressione successiva.EXPRESSION_TWO
: la seconda espressione per valutare. Se questa espressione restituisce true, il flusso di lavoro viene eseguito AvantiSTEP_B
. Se questa espressione restituisce false, il flusso di lavoro esegueSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nomi dei passaggi segnaposto.
Seleziona Esegui il deployment.
gcloud
Apri la definizione del flusso di lavoro nell'editor di testo desiderato.
Per modificare il flusso di lavoro in modo che esegua un determinato passaggio in base a un l'istruzione condizionale, aggiungi un passaggio che utilizza un blocco
switch
:YAML
- SWITCH_STEP_NAME: switch: - condition: ${EXPRESSION_ONE} next: STEP_A - condition: ${EXPRESSION_TWO} next: STEP_B ... next: STEP_C - STEP_A ... - STEP_B ... - STEP_C ...
JSON
[ { "SWITCH_STEP_NAME": { "switch": [ { "condition": "${EXPRESSION_ONE}", "next": "STEP_A" }, { "condition": "${EXPRESSION_TWO}", "next": "STEP_B" } ], "next": "STEP_C" } "STEP_A": { ... } "STEP_B": { ... } "STEP_C": { ... } } ]
Sostituisci quanto segue:
SWITCH_STEP_NAME
: il nome del passaggio contenente il bloccoswitch
.EXPRESSION_ONE
: la prima espressione per valutare. Se questa espressione restituisce true, il flusso di lavoro viene eseguito AvantiSTEP_A
. Se questa espressione restituisce false, il flusso di lavoro valuta l'espressione successiva.EXPRESSION_TWO
: la seconda espressione per valutare. Se questa espressione restituisce true, il flusso di lavoro viene eseguito AvantiSTEP_B
. Se questa espressione restituisce false, il flusso di lavoro esegueSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nomi dei passaggi segnaposto.
Salva il file del flusso di lavoro.
Per eseguire il deployment del flusso di lavoro, inserisci il seguente comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Sostituisci quanto segue:
WORKFLOW_NAME
: obbligatorio. Il nome del flusso di lavoro.WORKFLOW_FILE.YAML
: obbligatorio. Il file di origine per il flusso di lavoro.
Esempio
Ad esempio, questo flusso di lavoro utilizza un blocco di switch per controllare lo stato ordine di esecuzione:
YAML
- getCurrentTime: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime - conditionalSwitch: switch: - condition: ${currentTime.body.dayOfTheWeek == "Friday"} next: friday - condition: ${currentTime.body.dayOfTheWeek == "Saturday" OR currentTime.body.dayOfTheWeek == "Sunday"} next: weekend next: workWeek - friday: return: "It's Friday! Almost the weekend!" - weekend: return: "It's the weekend!" - workWeek: return: "It's the work week."
JSON
[ { "getCurrentTime": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime" } }, { "conditionalSwitch": { "switch": [ { "condition": "${currentTime.body.dayOfTheWeek == "Friday"}", "next": "friday" }, { "condition": "${currentTime.body.dayOfTheWeek == "Saturday" OR currentTime.body.dayOfTheWeek == "Sunday"}", "next": "weekend" } ], "next": "workWeek" } }, { "friday": { "return": "It's Friday! Almost the weekend!" } }, { "weekend": { "return": "It's the weekend!" } }, { "workWeek": { "return": "It's the work week." } } ]
In questo esempio, il blocco switch
ha due condizioni. Il parser valuta ogni condizione in ordine e, se il risultato dell'espressione della condizione è true
, viene chiamato il passaggio next
della condizione. Se nessuna delle condizioni è soddisfatta,
il flusso di lavoro chiama il passaggio specificato dal campo next
al di fuori
switch
, che in questo esempio è il passaggio workWeek
.
Ad esempio, se il giorno della settimana è "Saturday"
, il flusso di lavoro passa a
il passaggio weekend
e restituisce il messaggio "It's the weekend!"
. Il flusso di lavoro
non esegue il passaggio friday
perché il salto condizionale la salta,
e il flusso di lavoro non esegue il passaggio workWeek
perché return
interrompe la
del flusso di lavoro alla fine del passaggio weekend
.
Usa i loop for
per l'iterazione
Puoi utilizzare i loop for
per eseguire l'iterazione su una sequenza di numeri o attraverso una
raccolta di dati, ad esempio un elenco o una mappa.
Puoi esaminare tutti gli elementi di un elenco o di una mappa usando dell'iterazione. Se hai un intervallo specifico di valori numerici da ripetere, puoi usare l'iterazione basata su intervallo.
Per ulteriori informazioni ed esempi, consulta il riferimento alla sintassi sull'iterazione.