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 ada untuk diupdate, tetapi jangan deploy dulu.
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 memudahkan Anda memahami tujuannya, dan menambahkan argumen. Anda juga dapat menggunakan notasi titik untuk mengakses argumen.
Subalur kerja lainnya dapat memiliki beberapa argumen.
Misalnya, alur kerja berikut menampilkan ucapan "Halo" kepada seseorang 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 untuk menyelesaikan pembuatan atau pembaruannya.
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, seperti
{"firstName":"Workflows","lastName":"User"}
, ke area "Input":Klik Jalankan.
Di halaman Detail eksekusi, Anda dapat melihat hasil eksekusi, termasuk output
Hello, Workflows User!
, ID dan status eksekusi, serta langkah saat ini atau akhir dari eksekusi alur kerja. Untuk mengetahui informasi selengkapnya, lihat Mengakses hasil eksekusi alur kerja.
gcloud
Tambahkan flag --data ke perintah gcloud workflows execute yang Anda gunakan untuk menjalankan alur kerja. Flag ini menggunakan 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, 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, menggunakan Java:
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
Untuk informasi selengkapnya tentang cara 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 alur kerja contoh 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 informasi selengkapnya tentang cara 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, yang 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. Pada 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\")}" } ] } } ] } }