Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris
Semua perubahan data yang dibuat oleh pengguna dalam sistem biasanya dilakukan melalui sebuah aksi. Bentuknya biasanya berupa klik tombol. Tombol ini bisa jadi tombol kirim di formulir atau tombol aksi di blok data. Event pasca-aksi digunakan untuk mengikat alur kerja terkait ke aksi tombol-tombol ini, sehingga proses tertentu terpicu setelah aksi pengguna berhasil diselesaikan.
Misalnya, saat menambah atau memperbarui data, pengguna dapat mengonfigurasi opsi "Ikat alur kerja" pada tombol. Setelah aksi selesai, alur kerja yang terikat akan terpicu.
Pada tingkat implementasi, karena penanganan event pasca-aksi berada di lapisan middleware (middleware Koa), panggilan HTTP API ke NocoBase juga dapat memicu event pasca-aksi yang telah didefinisikan.
Ini adalah plugin bawaan, tidak perlu instalasi.
Saat membuat alur kerja, pilih "Event Pasca-Aksi" sebagai jenisnya:

Untuk event pasca-aksi, Anda juga dapat memilih mode eksekusi "Sinkron" atau "Asinkron" saat membuatnya:

Jika proses perlu dieksekusi dan dikembalikan segera setelah aksi pengguna, Anda dapat menggunakan mode sinkron; jika tidak, defaultnya adalah mode asinkron. Dalam mode asinkron, aksi selesai segera setelah alur kerja terpicu, dan alur kerja akan dieksekusi secara berurutan dalam antrean latar belakang aplikasi.
Masuk ke kanvas alur kerja, klik pemicu untuk membuka pop-up konfigurasi, dan pertama-tama pilih koleksi yang akan diikat:

Kemudian pilih mode pemicu, yang bisa berupa mode lokal atau global:

Di mana:
Dalam mode lokal, tombol aksi yang saat ini mendukung pengikatan adalah sebagai berikut:
Jika Anda memilih mode global, Anda juga perlu memilih jenis aksi. Saat ini, "Aksi buat data" dan "Aksi perbarui data" didukung. Kedua aksi ini memicu alur kerja setelah aksi berhasil.
Jika Anda perlu menggunakan data terkait dari data pemicu dalam proses selanjutnya, Anda dapat memilih bidang relasi yang akan dimuat awal:

Setelah terpicu, Anda dapat langsung menggunakan data terkait ini dalam proses.
Untuk aksi dalam mode pemicu lokal, setelah konfigurasi alur kerja selesai, Anda perlu kembali ke antarmuka pengguna dan mengikat alur kerja ini ke tombol aksi formulir dari blok data yang sesuai.
Alur kerja yang dikonfigurasi untuk tombol "Kirim" (termasuk tombol "Simpan data") akan terpicu setelah pengguna mengirimkan formulir yang sesuai dan aksi data selesai.

Pilih "Ikat alur kerja" dari menu konfigurasi tombol untuk membuka pop-up konfigurasi ikatan. Dalam pop-up, Anda dapat mengonfigurasi sejumlah alur kerja yang akan dipicu. Jika tidak ada yang dikonfigurasi, berarti tidak perlu ada pemicu. Untuk setiap alur kerja, Anda perlu terlebih dahulu menentukan apakah data pemicu adalah data seluruh formulir atau data dari bidang relasi tertentu dalam formulir. Kemudian, berdasarkan koleksi yang sesuai dengan model data yang dipilih, pilih alur kerja formulir yang telah dikonfigurasi untuk mencocokkan model koleksi tersebut.


Alur kerja harus diaktifkan sebelum dapat dipilih di antarmuka di atas.
Berikut adalah demonstrasi menggunakan aksi penambahan data.
Misalkan ada skenario "Permohonan Penggantian Biaya". Kita perlu melakukan peninjauan otomatis untuk jumlah dan peninjauan manual untuk jumlah yang melebihi batas setelah karyawan mengajukan permohonan penggantian biaya. Hanya permohonan yang lolos peninjauan yang disetujui, dan kemudian diserahkan kepada departemen keuangan untuk diproses.
Pertama, kita bisa membuat koleksi "Penggantian Biaya" dengan bidang-bidang berikut:
Kemudian, buat alur kerja bertipe "Event Pasca-Aksi" dan konfigurasikan model koleksi di pemicu menjadi koleksi "Penggantian Biaya":

Setelah alur kerja diatur ke status aktif, node pemrosesan spesifik dari proses akan dikonfigurasi nanti.
Kemudian, kita membuat blok tabel untuk koleksi "Penggantian Biaya" di antarmuka, dan menambahkan tombol "Tambah" ke bilah alat, mengonfigurasi bidang formulir yang sesuai. Lalu, di opsi konfigurasi tombol aksi "Kirim" formulir, buka dialog konfigurasi "Ikat alur kerja" tombol, pilih seluruh data formulir sebagai konteks, dan pilih alur kerja yang telah kita buat sebelumnya:

Setelah konfigurasi formulir selesai, kembali ke orkestrasi logika alur kerja. Misalnya, kita memerlukan peninjauan manual oleh administrator jika jumlahnya lebih besar dari 500, jika tidak langsung disetujui. Setelah disetujui, catatan penggantian biaya baru dibuat dan diproses lebih lanjut oleh departemen keuangan (dihilangkan).

Mengabaikan pemrosesan keuangan selanjutnya, konfigurasi proses permohonan penggantian biaya kini selesai. Ketika seorang karyawan mengisi dan mengirimkan permohonan penggantian biaya, alur kerja yang sesuai akan terpicu. Jika jumlah biaya kurang dari 500, catatan akan otomatis dibuat dan menunggu pemrosesan lebih lanjut oleh keuangan. Jika tidak, akan ditinjau oleh supervisor, dan setelah disetujui, catatan juga akan dibuat dan diserahkan kepada keuangan untuk diproses.
Proses dalam contoh ini juga dapat dikonfigurasi pada tombol "Kirim" biasa. Anda dapat memutuskan apakah akan membuat catatan terlebih dahulu sebelum menjalankan proses selanjutnya berdasarkan skenario bisnis spesifik.
Pemicuan event pasca-aksi tidak terbatas pada operasi antarmuka pengguna; ini juga dapat dipicu melalui panggilan HTTP API.
Saat memicu event pasca-aksi melalui panggilan HTTP API, Anda juga perlu memperhatikan status aktif alur kerja dan apakah konfigurasi koleksi cocok, jika tidak, panggilan mungkin tidak berhasil atau terjadi kesalahan.
Untuk alur kerja yang terikat secara lokal pada tombol aksi, Anda dapat memanggilnya seperti ini (menggunakan tombol buat koleksi posts sebagai contoh):
Di mana parameter URL triggerWorkflows adalah kunci alur kerja, dengan beberapa alur kerja dipisahkan oleh koma. Kunci ini dapat diperoleh dengan mengarahkan kursor mouse ke nama alur kerja di bagian atas kanvas alur kerja:

Setelah panggilan di atas berhasil, event pasca-aksi dari koleksi posts yang sesuai akan terpicu.
Karena panggilan eksternal juga perlu didasarkan pada identitas pengguna, saat memanggil melalui HTTP API, sama seperti permintaan yang dikirim dari antarmuka normal, informasi autentikasi harus disediakan, termasuk header permintaan Authorization atau parameter token (token yang diperoleh saat masuk), dan header permintaan X-Role (nama peran pengguna saat ini).
Jika Anda perlu memicu event untuk data relasi satu-ke-satu (satu-ke-banyak belum didukung) dalam aksi ini, Anda dapat menggunakan ! dalam parameter untuk menentukan data pemicu dari bidang relasi:
Setelah panggilan di atas berhasil, event pasca-aksi dari koleksi categories yang sesuai akan terpicu.
Jika event dikonfigurasi dalam mode global, Anda tidak perlu menggunakan parameter URL triggerWorkflows untuk menentukan alur kerja yang sesuai. Cukup memanggil aksi koleksi yang sesuai akan memicunya.
Seperti yang ditunjukkan pada gambar di bawah ini:

Event pasca-aksi dan event koleksi memiliki kesamaan, dari segi efek keduanya adalah proses yang terpicu setelah perubahan data. Namun, tingkat implementasinya berbeda. Event pasca-aksi menargetkan tingkat API, sedangkan event koleksi menargetkan perubahan data dalam koleksi.
Event koleksi lebih dekat ke lapisan dasar sistem. Dalam beberapa kasus, perubahan data yang disebabkan oleh satu event dapat memicu event lain, menciptakan reaksi berantai. Terutama ketika data di beberapa koleksi terkait juga berubah selama operasi koleksi saat ini, event yang terkait dengan koleksi terkait juga dapat dipicu.
Pemicuan event koleksi tidak menyertakan informasi terkait pengguna. Sementara itu, event pasca-aksi lebih dekat ke sisi pengguna, merupakan hasil dari aksi pengguna, dan konteks alur kerja juga akan menyertakan informasi terkait pengguna, sehingga cocok untuk menangani proses aksi pengguna. Dalam desain NocoBase di masa mendatang, lebih banyak event pasca-aksi yang dapat digunakan untuk memicu mungkin akan diperluas, jadi lebih disarankan untuk menggunakan event pasca-aksi untuk menangani proses di mana perubahan data disebabkan oleh aksi pengguna.
Perbedaan lainnya adalah event pasca-aksi dapat diikat secara lokal pada tombol formulir tertentu. Jika ada beberapa formulir, pengiriman dari sebagian formulir dapat memicu event ini, sementara yang lain tidak. Sedangkan event koleksi adalah untuk perubahan data di seluruh koleksi, dan tidak dapat diikat secara lokal.