Testfunktion durch parallelen Schritt ersetzen

Die experimentelle Funktion experimental.executions.map in Workflows startet für jedes entsprechende Argument eine Workflowausführung und wartet, bis alle Ausführungen abgeschlossen sind. Sie gibt eine Liste zurück, in der jedes Element das Ergebnis einer Ausführung ist.

Wenn Sie experimental.executions.map zur Unterstützung paralleler Arbeit verwenden, können Sie Ihren Workflow migrieren, um stattdessen parallele Schritte zu verwenden, bei denen normale for-Schleifen parallel ausgeführt werden.

Mit einem parallel-Schritt wird ein Teil des Workflows definiert, in dem zwei oder mehr Schritte gleichzeitig ausgeführt werden können. Ein parallel-Schritt wartet, bis alle darin definierten Schritte abgeschlossen oder durch eine unbehandelte Ausnahme unterbrochen wurden. Die Ausführung wird dann fortgesetzt. Wie bei experimental.executions.map ist die Ausführungsreihenfolge nicht garantiert. Weitere Informationen finden Sie auf der Syntaxreferenzseite für parallele Schritte.

Für die Verwendung von experimental.executions.map oder workflows.executions.run ist ein zusätzliches Kontingent für gleichzeitige Ausführungen erforderlich. Wenn Sie jedoch parallele Schritte mit Inline-Aufrufen von Connectors verwenden (siehe Beispiel für Übersetzungs-Connector), ist kein zusätzliches Ausführungskontingent erforderlich.

Die folgenden Beispiele sollen Ihnen helfen, die Verwendung von experimental.executions.map durch einen parallel-Schritt zu ersetzen.

Übersetzungsworkflow

Der folgende Workflow mit dem Namen translate verwendet den Cloud Translation-Connector, um einen Eingabetext in eine bestimmte Ausgangs- und Zielsprache zu übersetzen und das Ergebnis zurückzugeben. Die Cloud Translation API muss aktiviert sein.

YAML

  main:
    params: [args]
    steps:
    - basic_translate:
        call: googleapis.translate.v2.translations.translate
        args:
          body:
            q: ${args.text}
            target: ${args.target}
            format: "text"
            source: ${args.source}
        result: r
    - return_step:
        return: ${r}

JSON

  {
    "main": {
      "params": [
        "args"
      ],
      "steps": [
        {
          "basic_translate": {
            "call": "googleapis.translate.v2.translations.translate",
            "args": {
              "body": {
                "q": "${args.text}",
                "target": "${args.target}",
                "format": "text",
                "source": "${args.source}"
              }
            },
            "result": "r"
          }
        },
        {
          "return_step": {
            "return": "${r}"
          }
        }
      ]
    }
  }

Eingabe für das vorherige Beispiel:

{
  "text": "Bonjour",
  "target": "en",
  "source": "fr"
}

Die Ausgabe sollte in etwa so aussehen:

{
 "data": {
   "translations": [
     {
       "translatedText": "Hello"
     }
   ]
 }
}

Workflow für die Batchübersetzung mit experimental.executions.map

Im folgenden Workflow wird eine Reihe von Texten übersetzt. Für jede Eingabe führt experimental.executions.map den zuvor erstellten Workflow translate aus.

YAML

  main:
     steps:
     - init:
         assign:
         - workflow_id: "translate"
         - texts_to_translate:
             - text: