Anda dapat meneruskan argumen runtime dalam permintaan eksekusi alur kerja dan mengakses argumen tersebut menggunakan variabel alur kerja.
Menyiapkan alur kerja yang menerima argumen runtime
Untuk menyiapkan alur kerja guna menerima argumen runtime yang Anda teruskan sebagai bagian dari permintaan eksekusi, lakukan hal berikut:
Ikuti langkah-langkah untuk membuat alur kerja baru, atau pilih alur kerja yang sudah ada untuk memperbarui, tetapi jangan men-deploy-nya terlebih dahulu.
Tambahkan kolom
params
ke definisi alur kerja utama. Pastikan nama argumen ditempatkan di dalam tanda kurung siku, dan alur kerja utama ditempatkan dalam blokmain
:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
Blok
main
menerima satu argumen yang merupakan nama jenis data JSON yang valid; misalnya, array, objek, atau string.Sebagai praktik terbaik, meneruskan objek dengan beberapa argumen yang dinamai akan mempermudah Anda memahami tujuannya, dan menambahkan argumen. Anda juga dapat menggunakan notasi titik untuk mengakses argumen.
Sub-alur kerja lainnya dapat memiliki beberapa argumen.
Misalnya, alur kerja berikut menampilkan sapaan "Halo" kepada orang yang nama depan dan belakangnya Anda teruskan sebagai argumen runtime:
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}" } } ] } }
Deploy alur kerja Anda untuk menyelesaikan pembuatan atau pembaruan.
Meneruskan data dalam permintaan eksekusi
Setelah alur kerja disiapkan untuk menerima argumen runtime, Anda dapat meneruskan string
dalam format JSON, seperti
{"firstName":"Workflows","lastName":"User"}
, ke alur kerja dalam
permintaan eksekusi.
Konsol
Untuk menjalankan alur kerja, di Konsol Google Cloud, buka halaman Workflows:
Di halaman Workflows, pilih alur kerja untuk membuka halaman detailnya.
Di halaman Workflow Details, klik play_arrow Execute.
Di halaman "Execute Workflow" yang ditampilkan, masukkan string JSON yang berisi nama parameter dan nilai argumen Anda, seperti
{"firstName":"Workflows","lastName":"User"}
, ke area "Input":Klik Jalankan.
Di halaman Execution details, Anda dapat melihat hasil eksekusi termasuk output
Hello, Workflows User!
, ID dan status eksekusi, serta langkah saat ini atau terakhir dari eksekusi alur kerja. Untuk mengetahui informasi selengkapnya, lihat Mengakses hasil eksekusi alur kerja.
gcloud
Tambahkan flag --data ke perintah gcloud Workflowexecute yang Anda gunakan untuk menjalankan alur kerja. Penanda ini mengambil
string JSON data Anda. Misalnya, untuk meneruskan firstName
dan lastName
ke contoh alur kerja sebelumnya:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
Ganti kode berikut:
WORKFLOW_NAME
: nama alur kerjaFIRST
: string yang ingin Anda teruskan ke alur kerja untukfirstName
LAST
: string yang ingin Anda teruskan ke alur kerja untuklastName
Outputnya akan mirip dengan berikut ini:
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
Library klien
Bergantung pada bahasa library klien, Anda dapat meneruskan argumen runtime dalam permintaan eksekusi.
Misalnya, dengan menggunakan 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;
Atau, dengan menggunakan Java:
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
Untuk mengetahui informasi selengkapnya tentang menjalankan alur kerja menggunakan Library Klien Google API, lihat Menjalankan alur kerja.
REST API
Tambahkan flag
data
ke perintah yang Anda gunakan untuk menjalankan alur kerja. Nilaidata
adalah string berformat JSON dengan argumen yang nilainya adalah satu atau beberapa pasangan parameter-value yang di-escape. Misalnya, untuk meneruskanfirstName
danlastName
ke contoh alur kerja sebelumnya: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"
Ganti kode berikut:
PROJECT_NUMBER
: nomor project Google Cloud AndaWORKFLOW_NAME
: nama alur kerjaFIRST
: string yang ingin Anda teruskan ke alur kerja untukfirstName
LAST
: string yang ingin Anda teruskan ke alur kerja untuklastName
Outputnya akan mirip dengan berikut ini:
{ "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" } ```
Untuk mendapatkan hasil eksekusi, jalankan perintah berikut:
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"
Ganti
EXECUTION_ID
dengan ID dari output yang ditampilkan perintah pertama Anda.Output ini berisi baris yang mirip dengan berikut ini:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
Untuk mengetahui informasi selengkapnya tentang menjalankan alur kerja menggunakan REST API, lihat Menjalankan alur kerja.
Mengakses argumen runtime
Contoh ini mengakses argumen runtime yang diteruskan ke alur kerja sebagai bagian dari permintaan eksekusi. Semua argumen disimpan dalam peta yang sama, dideklarasikan sebagai parameter alur kerja utama.
Saat menjalankan alur kerja ini, teruskan argumen runtime menggunakan format berikut:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
Anda dapat menggunakan default
dengan fungsi library standar, map.get, untuk mengakses argumen runtime opsional, dan menampilkan nilai default jika kunci tidak ditemukan. Dalam contoh berikut, jika region
tidak ditentukan,
northamerica-northeast1
akan digunakan:
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\")}" } ] } } ] } }