Ausführungsreihenfolge in Workflows steuern

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 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

  1. Öffnen Sie die Seite „Workflows“ in der Google Cloud Console:
    Zur Seite „Workflows“

  2. Wählen Sie den Namen des Workflows aus, bei dem Sie die Reihenfolge der vorhandenen Schritte ändern möchten.

  3. Wählen Sie auf der Seite Workflow bearbeiten die Option Weiter aus, um zum Workflow-Editor zu wechseln.

  4. 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.

  5. Wählen Sie Bereitstellen.

gcloud

  1. Öffnen Sie die Definitionsdatei des Workflows in einem beliebigen Texteditor.

  2. 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.

  3. Speichern Sie die Workflow-Datei.

  4. 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

  1. Seite „Workflows“ im Google Cloud Console:
    Zu Workflows

  2. Wählen Sie den Namen des Workflows aus, dem Sie einen switch-Block hinzufügen möchten.

  3. Wählen Sie auf der Seite Workflow bearbeiten die Option Weiter aus, um zum Workflow-Editor zu wechseln.

  4. 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 Block switch enthält.

    • EXPRESSION_ONE: Der erste auszuwertende Ausdruck. Wenn dieser Ausdruck als „true“ ausgewertet wird, führt der Workflow STEP_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 Workflow STEP_B als Nächstes. Wenn dieser Ausdruck als „false“ ausgewertet wird, führt der Workflow STEP_C aus.

    • STEP_A, STEP_B, STEP_C: Platzhalterschrittnamen.

  5. Wählen Sie Bereitstellen.

gcloud

  1. Öffnen Sie die Definition des Workflows in einem beliebigen Texteditor.

  2. 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 Block switch enthält.

    • EXPRESSION_ONE: Der erste auszuwertende Ausdruck. Wenn dieser Ausdruck als „true“ ausgewertet wird, führt der Workflow STEP_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 Workflow STEP_B als Nächstes. Wenn dieser Ausdruck als „false“ ausgewertet wird, führt der Workflow STEP_C aus.

    • STEP_A, STEP_B, STEP_C: Platzhalterschrittnamen.

  3. Speichern Sie die Workflow-Datei.

  4. 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.

Nächste Schritte