Sie können Laufzeitargumente in einer Anfrage zur Workflowausführung übergeben und mithilfe von Workflowvariablen auf diese Argumente zugreifen.
Workflow einrichten, der Laufzeitargumente empfängt
So richten Sie einen Workflow für den Empfang von Laufzeitargumenten ein, die Sie im Rahmen einer Ausführungsanfrage an ihn übergeben:
Führen Sie die Schritte zum Erstellen eines neuen Workflows aus oder wählen Sie einen vorhandenen Workflow zum Aktualisieren aus, stellen Sie ihn aber noch nicht bereit.
Fügen Sie der Definition des Hauptworkflows das Feld
params
hinzu. Der Argumentname muss in eckige Klammern gesetzt werden und der Hauptworkflow muss in einemmain
-Block platziert werden:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
Der
main
-Block akzeptiert ein einzelnes Argument, das den Namen eines beliebigen gültigen JSON-Datentyps darstellt, z. B. ein Array, ein Objekt oder ein String.Die Übergabe eines Objekts mit mehreren benannten Argumenten hat sich als Best Practice bewährt, um deren Zweck besser zu verstehen und Argumente hinzuzufügen. Sie können dann auch die Punktnotation verwenden, um auf die Argumente zuzugreifen.
Andere untergeordnete Workflows können mehrere Argumente haben.
Der folgende Workflow gibt beispielsweise eine "Hello"-Begrüßung an eine Person zurück, deren Vor- und Nachname als Laufzeitargumente übergeben wird:
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Stellen Sie Ihren Workflow bereit, um ihn zu erstellen oder zu aktualisieren.
Daten in einer Ausführungsanfrage übergeben
Sobald der Workflow für den Empfang von Laufzeitargumenten eingerichtet ist, können Sie einen String im JSON-Format (z. B. {"firstName":"Workflows","lastName":"User"}
) an den Workflow in einer Ausführungsanfrage übergeben.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf, um einen Workflow auszuführen:
Wählen Sie auf der Seite Workflows einen Workflow aus, um die zugehörige Detailseite aufzurufen.
Klicken Sie auf der Seite Workflow-Details auf play_arrow Ausführen.
Geben Sie auf der Seite "Workflow ausführen" in den Bereich "Eingabe" einen JSON-String ein, der Ihre Parameternamen und Argumentwerte wie
{"firstName":"Workflows","lastName":"User"}
enthält:Klicken Sie auf Execute.
Auf der Seite Ausführungsdetails sehen Sie die Ergebnisse der Ausführung, einschließlich der Ausgabe-
Hello, Workflows User!
, der Ausführungs-ID und des Ausführungsstatus sowie des aktuellen oder letzten Schritts der Workflowausführung. Weitere Informationen finden Sie unter Ergebnisse der Workflowausführung aufrufen.
gcloud
Fügen Sie dem Befehl gcloud workflow execute das Flag --data hinzu, das Sie zum Ausführen Ihres Workflows verwenden. Dieses Flag verwendet einen JSON-String Ihrer Daten. So übergeben Sie beispielsweise firstName
und lastName
an den vorherigen Beispielworkflow:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Ersetzen Sie Folgendes:
WORKFLOW_NAME
: der Name des WorkflowsFIRST
: Der String, den Sie fürfirstName
an Ihren Workflow übergeben möchtenLAST
: Der String, den Sie fürlastName
an Ihren Workflow übergeben möchten
Die Ausgabe sollte in etwa so aussehen:
Waiting for execution [9379b067-306a-4db1-a58d-c9fc99aebfd4] to complete...done.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2022-07-19T13:52:47.659199466Z'
name: projects/1051295516635/locations/us-central1/workflows/workflow-6/executions/9379b067-306a-4db1-a58d-c9fc99aebfd4
result: '"Hello, Workflows User!"'
startTime: '2022-07-19T13:52:47.623862835Z'
state: SUCCEEDED
status:
currentSteps:
- routine: main
step: step2
workflowRevisionId: 000002-138
Clientbibliotheken
Je nach Sprache der Clientbibliothek können Sie in einer Ausführungsanfrage ein Laufzeitargument übergeben.
Zum Beispiel mit JavaScript:
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId, location, workflow),
execution: {
argument: JSON.stringify({"firstName":"Workflows","lastName":"User"})
}
});
const executionName = createExecutionRes[0].name;
Oder mit Java:
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
Weitere Informationen zum Ausführen eines Workflows mit den Google API-Clientbibliotheken finden Sie unter Workflow ausführen.
REST API
Hängen Sie das Flag
data
an den Befehl an, den Sie zum Ausführen Ihres Workflows verwenden. Der Wert vondata
ist ein JSON-formatierter String mit einem Argument, dessen Wert ein oder mehrere Escape-Parameter-Wert-Paare ist. So übergeben Sie beispielsweisefirstName
undlastName
an den vorherigen Beispielworkflow:curl --request POST \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ --data '{"argument":"{\"firstName\":\"FIRST\",\"lastName\":\"LAST\"}"}' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions"
Ersetzen Sie Folgendes:
PROJECT_NUMBER
: ist Ihre Google Cloud-Projektnummer.WORKFLOW_NAME
: der Name des WorkflowsFIRST
: String, den Sie an Ihren Workflow fürfirstName
übergeben möchtenLAST
: String, den Sie an Ihren Workflow fürlastName
übergeben möchten
Die Ausgabe sollte in etwa so aussehen:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2020-11-09T23:51:31.765761331Z", "state": "ACTIVE", "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "workflowRevisionId": "000001-08c" } ```
Führen Sie den folgenden Befehl aus, um die Ausführungsergebnisse abzurufen:
curl --request GET \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID"
Ersetzen Sie
EXECUTION_ID
durch die ID aus der Ausgabe, die Ihr erster Befehl zurückgegeben hat.Diese Ausgabe enthält Zeilen, die in etwa so aussehen:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
Weitere Informationen zum Ausführen eines Workflows mit der REST API finden Sie unter Workflow ausführen.
Auf Laufzeitargumente zugreifen
In diesem Beispiel wird auf Laufzeitargumente zugegriffen, die im Rahmen der Ausführungsanfrage an den Workflow übergeben werden. Alle Argumente werden in derselben Zuordnung gespeichert, die als Parameter des Hauptworkflows deklariert sind.
Übergeben Sie bei diesem Workflow Laufzeitargumente im folgenden Format:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
Sie können default
mit der Standardbibliotheksfunktion map.get verwenden, um auf optionale Laufzeitargumente zuzugreifen und einen Standardwert zurückzugeben, wenn der Schlüssel nicht gefunden wird. Wenn im folgenden Beispiel kein region
angegeben ist, wird northamerica-northeast1
verwendet:
YAML
main: params: [input] steps: - init: assign: - region: ${default(map.get(input, "region"), "northamerica-northeast1")}
JSON
{ "main": { "params": [ "input" ], "steps": [ { "init": { "assign": [ { "region": "${default(map.get(input, \"region\"), \"northamerica-northeast1\")}" } ] } } ] } }