Questa pagina mostra come utilizzare 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 il passaggio successivo del workflow. I salti condizionali si basano sui salti di base e ti consentono di utilizzare espressioni condizionali per controllare l'ordine di esecuzione in un workflow. Ad esempio, puoi eseguire determinati passaggi solo quando una variabile o una risposta di un altro passaggio del workflow soddisfa criteri specifici.
Gli esempi in questa pagina utilizzano un'API di esempio che restituisce il giorno della settimana.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Devi già disporre di un flusso di lavoro esistente in cui vuoi modificare l'ordine di esecuzione. Per scoprire come creare ed eseguire il deployment di un workflow, consulta Creare e aggiornare un workflow.
Utilizzare i salti per modificare l'ordine di esecuzione
Per impostazione predefinita, tutti i workflow sono elenchi ordinati in cui ogni passaggio viene eseguito nell'ordine definito nel codice sorgente del workflow. Puoi scegliere di ignorare questo ordinamento predefinito utilizzando i salti.
Salti di base
Puoi specificare il passaggio successivo da eseguire in un workflow utilizzando i salti di base.
Console
Apri la pagina Workflows nella consoleGoogle Cloud :
Vai a WorkflowsSeleziona il nome del workflow in cui vuoi modificare l'ordine di esecuzione dei passaggi esistenti.
Nella pagina Modifica workflow, seleziona Avanti per andare all'editor del workflow.
Aggiungi il campo
nextalla fine di un passaggio per indicare al workflow di passare a un passaggio specifico: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_TOcon il nome del passaggio che vuoi che il workflow esegua successivamente. Ad esempio,next_step.Seleziona Esegui il deployment.
gcloud
Apri il file di definizione del flusso di lavoro nell'editor di testo che preferisci.
Aggiungi il campo
nextalla fine di un passaggio per indicare al workflow di passare a un passaggio specifico: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_TOcon il nome del passaggio che vuoi che il workflow esegua successivamente. Ad esempio,next_step.Salva il file del workflow.
Per eseguire il deployment del flusso di lavoro, inserisci questo comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Sostituisci quanto segue:
WORKFLOW_NAME: obbligatorio. Il nome del tuo flusso di lavoro.WORKFLOW_FILE.YAML: obbligatorio. Il file di origine del flusso di lavoro.
Esempio
Ad esempio, i passaggi del seguente workflow non sono in ordine:
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 ai passaggi 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 i blocchi switch, che saltano a un passaggio specificato se viene soddisfatta una
determinata condizione. Ogni blocco
switch può includere un massimo di 50 condizioni.
Console
Apri la pagina Workflows nella consoleGoogle Cloud :
Vai a WorkflowsSeleziona il nome del workflow a cui vuoi aggiungere un blocco
switch.Nella pagina Modifica workflow, seleziona Avanti per andare all'editor del workflow.
Nella pagina Definisci workflow, viene visualizzata la definizione attuale del workflow. Per modificare il workflow in modo che esegua un determinato passaggio in base a 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 da valutare. Se questa espressione restituisce true, il workflow esegueSTEP_A. Se questa espressione restituisce il valore false, il flusso di lavoro valuta l'espressione successiva.EXPRESSION_TWO: la seconda espressione da valutare. Se questa espressione restituisce true, il workflow esegueSTEP_B. Se questa espressione restituisce il valore 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 che preferisci.
Per modificare il workflow in modo che esegua un determinato passaggio in base a un'istruzione condizionale, aggiungi un passaggio che utilizzi 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 da valutare. Se questa espressione restituisce true, il workflow esegueSTEP_A. Se questa espressione restituisce il valore false, il flusso di lavoro valuta l'espressione successiva.EXPRESSION_TWO: la seconda espressione da valutare. Se questa espressione restituisce true, il workflow esegueSTEP_B. Se questa espressione restituisce il valore false, il flusso di lavoro esegueSTEP_C.STEP_A,STEP_B,STEP_C: nomi dei passaggi segnaposto.
Salva il file del workflow.
Per eseguire il deployment del flusso di lavoro, inserisci questo comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Sostituisci quanto segue:
WORKFLOW_NAME: obbligatorio. Il nome del tuo flusso di lavoro.WORKFLOW_FILE.YAML: obbligatorio. Il file di origine del flusso di lavoro.
Esempio
Ad esempio, questo workflow utilizza un blocco di opzioni per controllare l'ordine di esecuzione del workflow:
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 workflow chiama il passaggio specificato dal campo next al di fuori del
blocco switch, che in questo esempio è il passaggio workWeek.
Ad esempio, se il giorno della settimana è "Saturday", il workflow passa al passaggio weekend e restituisce il messaggio "It's the weekend!". Il workflow
non esegue il passaggio friday perché il salto condizionale lo salta,
e il workflow non esegue il passaggio workWeek perché return interrompe
l'esecuzione del workflow alla fine del passaggio weekend.
Utilizzare i loop for per iterare
Puoi utilizzare i cicli for per scorrere una sequenza di numeri o una raccolta di dati, ad esempio un elenco o una mappa.
Puoi scorrere ogni elemento di un elenco o di una mappa utilizzando l'iterazione basata sugli elementi. Se hai un intervallo specifico di valori numerici da scorrere, puoi utilizzare l'iterazione basata sull'intervallo.
Per ulteriori informazioni ed esempi, consulta il riferimento alla sintassi sull'iterazione.