Auf dieser Seite wird gezeigt, wie Sie mit Jumps oder Schleifen die Reihenfolge steuern können, in der Ihre Workflowschritte ausgeführt werden. Mit einfachen Jumps können Sie definieren, welcher Schritt der Workflow als Nächstes ausgeführt wird. Bedingte Jumps basieren auf einfachen Jumps, sodass Sie bedingte Ausdrücke verwenden können, um die Reihenfolge der Ausführung über einen Workflow zu steuern. Sie können beispielsweise bestimmte Schritte nur ausführen, wenn eine Variable oder Antwort von einem anderen Workflowschritt bestimmte Kriterien erfüllt.
In den Beispielen auf dieser Seite wird eine Beispiel-API verwendet, die den Wochentag zurückgibt.
Hinweis
- 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.
- Sie sollten bereits einen Workflow haben, in dem Sie die Reihenfolge der Ausführung ändern möchten. Informationen zum Erstellen und Bereitstellen eines Workflows finden Sie unter Workflow erstellen und aktualisieren.
Ausführungsreihenfolge mithilfe von Jumps ändern
Standardmäßig sind alle Workflows sortiert, wobei jeder Schritt in der Reihenfolge ausgeführt wird, die Sie im Quellcode des Workflows definieren. Sie können diese Standardreihenfolge mithilfe von Jumps überschreiben.
Einfache Jumps
Sie können mithilfe von einfachen Jumps angeben, welcher Schritt im nächsten Workflow ausgeführt werden soll.
Console
Öffnen Sie die Seite „Workflows“ in der Google Cloud Console:
Zur Seite „Workflows“Wählen Sie den Namen des Workflows aus, bei dem Sie die Reihenfolge der vorhandenen Schritte ändern möchten.
Wählen Sie auf der Seite Workflow bearbeiten die Option Weiter aus, um zum Workflow-Editor zu wechseln.
Fügen Sie das Feld
next
am Ende eines Schritts hinzu, um den Workflow anzuweisen, zu einem bestimmten Schritt zu springen: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": { ... } } ]
Ersetzen Sie
STEP_NAME_TO_JUMP_TO
durch den Namen des Schritts, den der Workflow als Nächstes ausführen soll. Beispiel:next_step
.Wählen Sie Bereitstellen.
gcloud
Öffnen Sie die Definitionsdatei des Workflows in einem beliebigen Texteditor.
Fügen Sie das Feld
next
am Ende eines Schritts hinzu, um den Workflow anzuweisen, zu einem bestimmten Schritt zu springen: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": { ... } } ]
Ersetzen Sie
STEP_NAME_TO_JUMP_TO
durch den Namen des den Workflow als Nächstes ausführen soll. Beispiel:next_step
.Speichern Sie die Workflow-Datei.
Geben Sie den folgenden Befehl ein, um den Workflow bereitzustellen:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Ersetzen Sie Folgendes:
WORKFLOW_NAME
: erforderlich. Der Name Ihres Workflows.WORKFLOW_FILE.YAML
: erforderlich. Die Quelldatei für den Workflow.
Beispiel
Die Schritte des folgenden Workflows sind beispielsweise in der falschen Reihenfolge:
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 diesem Beispiel wurden die Schritte next
zu den Schritten get_daylight_savings_bool
und return_daylight_savings_bool
hinzugefügt, sodass die Schritte in der richtigen Reihenfolge ausgeführt werden:
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" } } ]
Bedingte Jumps
Sie können bedingte Jumps verwenden, um zu bestimmen, welcher Schritt als Nächstes in einem Workflow ausgeführt wird.
Für bedingte Jumps werden switch
-Blöcke verwendet, die zu einem angegebenen Schritt springen, wenn eine bestimmte Bedingung erfüllt ist. Jeder switch
-Block kann maximal 50 Bedingungen enthalten.
Console
Seite „Workflows“ im Google Cloud Console:
Zu WorkflowsWählen Sie den Namen des Workflows aus, dem Sie einen
switch
-Block hinzufügen möchten.Wählen Sie auf der Seite Workflow bearbeiten die Option Weiter aus, um zum Workflow-Editor zu wechseln.
Auf der Seite Workflow definieren wird die aktuelle Definition Ihres Workflows angezeigt. Fügen Sie einen Schritt mit einem
switch
-Block hinzu, um den Workflow so zu bearbeiten, dass er einen bestimmten Schritt basierend auf einer bedingten Anweisung ausführt: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": { ... } } ]
Ersetzen Sie Folgendes:
SWITCH_STEP_NAME
: Der Name des Schritts, der den Blockswitch
enthält.EXPRESSION_ONE
: Der erste auszuwertende Ausdruck. Wenn dieser Ausdruck als „true“ ausgewertet wird, führt der WorkflowSTEP_A
als Nächstes. Wenn dieser Ausdruck „false“ ergibt, wertet den nächsten Ausdruck aus.EXPRESSION_TWO
: Der zweite auszuwertende Ausdruck. Wenn dieser Ausdruck als „true“ ausgewertet wird, führt der WorkflowSTEP_B
als Nächstes. Wenn dieser Ausdruck als „false“ ausgewertet wird, führt der WorkflowSTEP_C
aus.STEP_A
,STEP_B
,STEP_C
: Platzhalterschrittnamen.
Wählen Sie Bereitstellen.
gcloud
Öffnen Sie die Definition des Workflows in einem beliebigen Texteditor.
Fügen Sie einen Schritt mit einem
switch
-Block hinzu, um den Workflow so zu bearbeiten, dass er einen bestimmten Schritt basierend auf einer bedingten Anweisung ausführt: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": { ... } } ]
Ersetzen Sie Folgendes:
SWITCH_STEP_NAME
: Der Name des Schritts, der den Blockswitch
enthält.EXPRESSION_ONE
: Der erste auszuwertende Ausdruck. Wenn dieser Ausdruck als „true“ ausgewertet wird, führt der WorkflowSTEP_A
als Nächstes. Wenn dieser Ausdruck „false“ ergibt, wertet den nächsten Ausdruck aus.EXPRESSION_TWO
: Der zweite auszuwertende Ausdruck. Wenn dieser Ausdruck als „true“ ausgewertet wird, führt der WorkflowSTEP_B
als Nächstes. Wenn dieser Ausdruck als „false“ ausgewertet wird, führt der WorkflowSTEP_C
aus.STEP_A
,STEP_B
,STEP_C
: Platzhalterschrittnamen.
Speichern Sie die Workflow-Datei.
Geben Sie den folgenden Befehl ein, um den Workflow bereitzustellen:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Ersetzen Sie Folgendes:
WORKFLOW_NAME
: erforderlich. Der Name Ihres Workflows.WORKFLOW_FILE.YAML
: erforderlich. Die Quelldatei für den Workflow.
Beispiel
Dieser Workflow verwendet beispielsweise einen Switch-Block, um die Reihenfolge der Workflows zu steuern:
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 diesem Beispiel hat der Block switch
zwei Bedingungen. Der Parser wertet jede Bedingung der Reihe nach aus. Wenn das Ergebnis des Ausdrucks der Bedingung true
lautet, wird der Schritt next
dieser Bedingung aufgerufen. Wenn keine der Bedingungen erfüllt ist, ruft der Workflow den Schritt auf, der im Feld next
außerhalb des Blocks switch
angegeben ist. In diesem Beispiel ist es der Schritt workWeek
.
Wenn der Wochentag beispielsweise "Saturday"
ist, springt der Workflow zum Schritt weekend
und gibt die Nachricht "It's the weekend!"
zurück. Der Workflow führt den Schritt friday
nicht aus, da der bedingte Jump diesen überspringt und der Workflow den Schritt workWeek
nicht ausführt, da return
die Ausführung des Workflows am Ende des weekend
-Schritts beendet.
Verwenden Sie for
-Schleifen zum Iterieren.
Sie können for
-Schleifen verwenden, um eine Sequenz von Zahlen oder eine Sammlung von Daten wie eine Liste oder Karte zu durchlaufen.
Sie können jedes Element einer Liste oder Karte mithilfe der elementbasierten Iteration durchlaufen. Wenn Sie einen bestimmten Bereich numerischer Werte durchlaufen möchten, können Sie die bereichsbasierte Iteration verwenden.
Weitere Informationen und Beispiele finden Sie in der Syntaxreferenz zur Iteration.