Alur kerja Anda mungkin perlu menunggu proses eksternal. Anda dapat menggunakan callback HTTP untuk menunggu layanan lain membuat permintaan ke endpoint callback; permintaan tersebut akan melanjutkan eksekusi alur kerja. Anda juga dapat menunggu menggunakan polling.
Daripada menggunakan polling, tutorial ini menunjukkan cara menunggu peristiwa atau pesan Pub/Sub menggunakan callback HTTP dan pemicu Eventarc. Meskipun Anda dapat memicu alur kerja dengan peristiwa atau pesan Pub/Sub, Anda mungkin ingin menghentikan eksekusi tersebut untuk menunggu peristiwa lain sebelum melanjutkan. Misalnya, peristiwa memicu alur kerja untuk memulai proses, tetapi alur kerja perlu menunggu peristiwa lain yang menandakan bahwa proses telah selesai. Anda dapat menerapkannya dengan membuat satu alur kerja memanggil kembali alur kerja lain.
Membuat database Firestore
Firestore menyimpan data Anda dalam dokumen yang berisi kolom yang dipetakan ke nilai. Dokumen ini disimpan dalam koleksi, yang merupakan container untuk dokumen Anda yang dapat digunakan untuk mengatur data dan membuat kueri. Pelajari Firestore lebih lanjut.
Perhatikan bahwa setiap project Google Cloud dibatasi untuk satu database Firestore. Selesaikan langkah-langkah berikut jika Anda perlu membuat database baru.
Konsol
Di konsol Google Cloud , buka halaman Firestore Mulai.
Klik Pilih Mode Native .
Untuk panduan tentang memilih mode database dan perbandingan fitur demi fitur, lihat Memilih antara Mode Native dan Mode Datastore.
Di daftar Pilih lokasi, pilih nam5 (Amerika Serikat).
Lokasi berlaku untuk database Firestore dan aplikasi App Engine di project Google Cloud Anda. Setelah membuat database, Anda tidak dapat mengubah lokasinya.
Klik Buat database.
gcloud
Untuk membuat database Firestore, Anda harus membuat aplikasi App Engine terlebih dahulu, lalu menjalankan perintah
gcloud firestore databases create:
gcloud app create --region=us-central gcloud firestore databases create --region=us-central
Anda dapat mengabaikan peringatan us-central is not a valid Firestore location.
App Engine dan Firestore mendukung lokasi yang sama, tetapi region us-central (Iowa) App Engine dipetakan ke multi-region nam5 (Amerika Serikat) Firestore.
Membuat topik Pub/Sub
Tutorial ini menggunakan Pub/Sub sebagai sumber peristiwa. Buat topik Pub/Sub agar Anda dapat memublikasikan pesan ke topik tersebut. Pelajari lebih lanjut cara membuat dan mengelola topik.
Konsol
Di konsol Google Cloud , buka halaman Topics Pub/Sub.
Klik CREATE TOPIC.
Di kolom Topic ID, masukkan
topic-callback.Terima setelan default lainnya.
Klik Create topic.
gcloud
Untuk membuat topik, jalankan perintah
gcloud pubsub topics create:
gcloud pubsub topics create topic-callback
Membuat bucket Cloud Storage
Tutorial ini menggunakan Cloud Storage sebagai sumber peristiwa. Buat bucket Cloud Storage agar Anda dapat mengupload file ke bucket tersebut. Pelajari lebih lanjut cara membuat bucket penyimpanan.
Konsol
Di Google Cloud konsol, buka halaman Bucket Cloud Storage.
Klik Buat.
Untuk Name bucket Anda, masukkan
PROJECT_ID-bucket-callback.Project ID digunakan dalam alur kerja
callback-event-sampleuntuk mengidentifikasi bucket.Klik Lanjutkan.
Untuk Location type, pilih Region, lalu pilih us-central1 (Iowa).
Terima setelan default lainnya.
Klik Buat.
gcloud
Untuk membuat bucket, jalankan perintah
gcloud storage buckets create:
gcloud storage buckets create gs://PROJECT_ID-bucket-callback \ --location=us-central1
Project ID
digunakan dalam alur kerja callback-event-sample untuk mengidentifikasi bucket.
Setelah sumber peristiwa dibuat, Anda dapat men-deploy alur kerja penerima peristiwa.
Men-deploy alur kerja yang memproses peristiwa
Alur kerja callback-event-listener dipicu saat pesan dipublikasikan
ke topik Pub/Sub atau saat file diupload ke bucket
Cloud Storage. Alur kerja menerima peristiwa, mengambil detail callback yang sesuai dari database Firestore, lalu mengirim permintaan HTTP ke endpoint callback.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik Buat.
Masukkan nama untuk alur kerja baru:
callback-event-listener.Dalam daftar Region, pilih us-central1.
Pilih Service account yang Anda buat sebelumnya.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch callback-event-listener.yamlDi editor teks, salin alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy callback-event-listener \ --source=callback-event-listener.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti
SERVICE_ACCOUNT_NAMEdengan nama akun layanan yang Anda buat sebelumnya.
Men-deploy alur kerja yang menunggu peristiwa
Alur kerja callback-event-sample menyimpan detail callback-nya di database Firestore, menghentikan eksekusinya, lalu menunggu peristiwa tertentu terjadi.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik Buat.
Masukkan nama untuk alur kerja baru:
callback-event-sample.Dalam daftar Region, pilih us-central1.
Pilih Service account yang Anda buat sebelumnya.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch callback-event-sample.yamlDi editor teks, salin alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy callback-event-sample \ --source=callback-event-sample.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti
SERVICE_ACCOUNT_NAMEdengan nama akun layanan yang Anda buat sebelumnya.
Membuat pemicu Eventarc untuk merutekan peristiwa Pub/Sub
Pemicu Eventarc memungkinkan Anda merutekan peristiwa dengan menentukan
filter untuk pemicu, termasuk sumber peristiwa, dan alur kerja target.
Buat pemicu Eventarc untuk menjalankan alur kerja
callback-event-listener sebagai hasil dari memublikasikan pesan ke topik
Pub/Sub.
Pelajari lebih lanjut cara memicu alur kerja.
Konsol
Di konsol Google Cloud , buka halaman Eventarc.
Klik Create trigger.
Ketik Trigger name.
Misalnya,
trigger-pubsub-events-listener.Dalam daftar Event provider, pilih Cloud Pub/Sub.
Dalam daftar Peristiwa, di bagian Kustom, pilih google.cloud.pubsub.topic.v1.messagePublished.
Di daftar Select a Cloud Pub/Sub topic, pilih topik yang Anda buat sebelumnya.
Di daftar Region, pilih us-central1 (Iowa).
Jika diminta, berikan peran
iam.serviceAccountTokenCreatorke akun layanan Pub/Sub.Pilih Service account yang Anda buat sebelumnya.
Dalam daftar Tujuan peristiwa, pilih Alur kerja.
Di daftar Select a workflow, pilih alur kerja callback-event-listener.
Klik Buat.
gcloud
Untuk membuat pemicu, jalankan perintah
gcloud eventarc triggers create:
gcloud eventarc triggers create trigger-pubsub-events-listener \ --location=us-central1 \ --destination-workflow=callback-event-listener \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=topic-callback \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Peristiwa diubah dan diteruskan ke eksekusi alur kerja sebagai argumen runtime. Perhatikan bahwa perlu waktu hingga 2 menit agar pemicu baru menjadi aktif.
Membuat pemicu Eventarc untuk merutekan peristiwa Cloud Storage
Pemicu Eventarc memungkinkan Anda merutekan peristiwa dengan menentukan
filter untuk pemicu, termasuk sumber peristiwa, dan alur kerja target.
Buat pemicu Eventarc untuk menjalankan alur kerja
callback-event-listener sebagai hasil dari mengupload file ke bucket
Cloud Storage.
Pelajari lebih lanjut cara memicu alur kerja.
Konsol
Di konsol Google Cloud , buka halaman Eventarc.
Klik Create trigger.
Ketik Trigger name.
Misalnya,
trigger-storage-events-listener.Di daftar Event provider, pilih Cloud Storage.
Dalam daftar Event, di bagian Direct, pilih google.cloud.storage.object.v1.finalized.
Dalam daftar Bucket, telusuri bucket yang sebelumnya Anda buat dan pilih bucket tersebut.
Dalam daftar Region, berdasarkan bucket Cloud Storage Anda, terima default us-central1 (Iowa).
Jika diminta, berikan peran
iam.serviceAccountTokenCreatorke akun layanan Pub/Sub.Pilih Service account yang Anda buat sebelumnya.
Dalam daftar Tujuan peristiwa, pilih Alur kerja.
Di daftar Select a workflow, pilih alur kerja callback-event-listener.
Klik Buat.
gcloud
Untuk membuat pemicu, jalankan perintah
gcloud eventarc triggers create:
gcloud eventarc triggers create trigger-storage-events-listener \ --location=us-central1 \ --destination-workflow=callback-event-listener \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=PROJECT_ID-bucket-callback" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Peristiwa diubah dan diteruskan ke eksekusi alur kerja sebagai argumen runtime. Perhatikan bahwa perlu waktu hingga 2 menit agar pemicu baru menjadi aktif.
Menjalankan alur kerja utama
Mengeksekusi alur kerja menjalankan definisi alur kerja saat ini yang terkait dengan alur kerja. Jalankan alur kerja callback-event-sample. Ini adalah alur kerja
utama dan menunggu peristiwa tertentu terjadi, hanya melanjutkan eksekusinya
saat alur kerja sekunder membuat permintaan panggilan balik yang sesuai.
Konsol
Di konsol Google Cloud , buka halaman Workflows.
Di halaman Workflows, klik alur kerja callback-event-sample untuk membuka halaman detailnya.
Di halaman Workflow Details, klik play_arrow Execute.
Klik Execute lagi.
Eksekusi alur kerja dimulai. Saat eksekusi berjalan, Anda akan melihat Execution state
Runningdan entri log yang mirip dengan berikut:Started waiting 1hr for an event from source topic-callback.
gcloud
Untuk menjalankan alur kerja, jalankan perintah
gcloud workflows run:
gcloud workflows run callback-event-sample \ --location=us-central1
Eksekusi alur kerja dimulai. Saat eksekusi berjalan, Anda akan melihat status eksekusi yang mirip dengan berikut ini:
Waiting for execution [a848a164-268a-449c-b2fe-396f32f2ed66] to complete...working...
Buat peristiwa dan periksa status eksekusi
Anda dapat mengonfirmasi bahwa hasilnya sesuai yang diharapkan dengan membuat peristiwa, melihat entri log, dan memeriksa status eksekusi alur kerja.
Publikasikan pesan
Publikasikan pesan ke topik Pub/Sub yang sebelumnya Anda buat.
Konsol
Di konsol Google Cloud , buka halaman Topics Pub/Sub.
Klik topic-callback.
Klik tab Pesan.
Klik Publikasikan pesan.
Di kolom Isi pesan, masukkan
Hello World.Klik Publikasikan.
gcloud
Untuk memublikasikan pesan, gunakan perintah gcloud pubsub topics publish:
gcloud pubsub topics publish topic-callback \ --message="Hello World"
Mengunggah objek
Upload file ke bucket Cloud Storage yang Anda buat sebelumnya.
Konsol
- Di Google Cloud konsol, buka halaman Bucket Cloud Storage.
Klik nama bucket yang telah Anda buat sebelumnya.
Di tab Objek, lakukan salah satu hal berikut:
Tarik lalu lepas file yang diinginkan dari desktop atau pengelola file ke panel utama di konsol Google Cloud .
Klik Upload file, pilih file yang ingin diupload, lalu klik Buka.
gcloud
Untuk mengupload file, jalankan perintah gcloud storage cp:
gcloud storage cp OBJECT_LOCATION gs://PROJECT_ID-bucket-callback/
Ganti OBJECT_LOCATION dengan jalur lokal ke objek Anda. Contoh, random.txt.
Melihat entri log dan status eksekusi
Pastikan alur kerja callback-event-sample berhasil diselesaikan.
Konsol
Di konsol Google Cloud , buka halaman Workflows.
Di halaman Workflows, klik alur kerja callback-event-sample untuk membuka halaman detailnya.
Di halaman Workflow Details, untuk mengambil detail eksekusi tertentu, klik ID eksekusi yang sesuai.
Execution state harus Succeeded dan, di panel Output, Anda akan melihat peristiwa Pub/Sub dan Cloud Storage yang diterima.
gcloud
Filter entri log dan tampilkan output dalam format JSON:
gcloud logging read "resource.type=workflows.googleapis.com/Workflow AND textPayload:calling OR textPayload:waiting" \ --format=json
Cari entri log yang mirip dengan:
"textPayload": "Stopped waiting for an event from source..." "textPayload": "Calling back url https://workflowexecutions.googleapis.com/v1/projects/..." "textPayload": "Started waiting 1hr for an event from source..."
Periksa status upaya eksekusi terakhir:
gcloud workflows executions wait-last
Hasilnya akan mirip dengan berikut ini:
Using cached execution name: projects/1085953646031/locations/us-central1/workflows/callback-event-sample/executions/79929e4e-82c1-4da1-b068-f828034c01b7 Waiting for execution [79929e4e-82c1-4da1-b068-f828034c01b7] to complete...done. [...] state: SUCCEEDED