Event Action Kustom
Workflow: Event Action KustomCommunity Edition+Pengantar
NocoBase memiliki operasi data umum bawaan (tambah, hapus, perbarui, kueri, dll.). Ketika operasi-operasi ini tidak dapat memenuhi kebutuhan bisnis kompleks, Anda dapat menggunakan event action kustom dalam Workflow, dan ikat event ini pada tombol "Picu Workflow" di Block halaman. Setelah pengguna klik, akan memicu Workflow operasi kustom.
Membuat Workflow
Saat membuat Workflow, pilih "Event Action Kustom":

Konfigurasi Trigger
Tipe Konteks
v.1.6.0+
Tipe konteks yang berbeda akan menentukan tombol Block mana yang dapat diikat dengan Workflow ini:
- Tanpa Konteks: yaitu event global, dapat diikat pada tombol operasi panel operasi, tombol operasi Block data;
- Single Row Data: dapat diikat pada tombol operasi pada baris data table, formulir, detail, dan Block data lainnya;
- Multi Row Data: dapat diikat pada tombol operasi batch table.

Tabel Data
Ketika tipe konteks adalah single row data atau multi row data, Anda perlu memilih tabel data yang akan diikat dengan model datanya:

Data Relasi yang Akan Digunakan
Jika perlu menggunakan data terkait dari baris data pemicu dalam Workflow, Anda dapat memilih field relasi tingkat dalam di sini:

Field-field ini akan otomatis di-preload ke konteks Workflow setelah event dipicu, untuk digunakan dalam Workflow.
Konfigurasi Operasi
Berdasarkan tipe konteks Workflow yang dikonfigurasi berbeda, konfigurasi tombol operasi pada Block yang berbeda juga berbeda.
Tanpa Konteks
v1.6.0+
Pada panel operasi dan Block data lainnya, semua dapat menambahkan tombol "Picu Workflow":



Setelah menambahkan tombol, ikat dengan Workflow tanpa konteks yang sebelumnya dibuat, contoh tombol di panel operasi:


Single Record
Pada Block data apa pun, pada bilah operasi data single row dapat menambahkan tombol "Picu Workflow", seperti formulir, baris data table, detail, dll.:



Setelah menambahkan tombol, ikat dengan Workflow yang sebelumnya dibuat:


Setelah itu klik tombol ini akan memicu event action kustom tersebut:

Multi Record
v1.6.0+
Pada bilah operasi Block table, saat menambahkan tombol "Picu Workflow" akan ada opsi tambahan, pilih tipe konteks "Tanpa Konteks" atau "Multi Row Data":

Saat memilih "Tanpa Konteks", yaitu event global, hanya dapat mengikat Workflow tipe tanpa konteks.
Saat memilih "Multi Row Data", dapat mengikat Workflow tipe multi row data, dapat digunakan untuk operasi batch setelah multi-select data (saat ini hanya didukung table). Saat ini lingkup Workflow yang dapat dipilih hanya Workflow yang dikonfigurasi cocok dengan tabel data Block data saat ini:

Saat klik tombol untuk memicu, harus sudah memilih sebagian baris data dalam table, jika tidak Workflow tidak akan dipicu:

Contoh
Misalnya, kita memiliki tabel data "Sampel", untuk sampel "Sudah Dikumpulkan" (status), perlu menyediakan operasi "Kirim untuk Pemeriksaan". Pengiriman pemeriksaan akan memeriksa informasi dasar sampel terlebih dahulu, kemudian menghasilkan satu data "Record Pengiriman Pemeriksaan", lalu mengubah status sampel menjadi "Sudah Dikirim untuk Pemeriksaan". Sedangkan rangkaian proses ini tidak dapat diselesaikan dengan klik tombol "tambah, hapus, perbarui, kueri" sederhana, saat ini dapat menggunakan event action kustom untuk implementasi.
Buat dulu satu tabel data "Sampel" dan satu tabel data "Record Pengiriman Pemeriksaan", masukkan data uji dasar ke tabel sampel:

Kemudian buat sebuah Workflow "Event Action Kustom", jika perlu alur operasi memberikan umpan balik yang relatif tepat waktu, dapat memilih mode sinkron (pada mode sinkron tidak dapat menggunakan Node tipe asinkron seperti penanganan manual):

Pada konfigurasi Trigger, tabel data pilih "Sampel":

Berdasarkan kebutuhan bisnis, orkestrasikan logika dalam alur, misalnya hanya mengizinkan kirim pemeriksaan saat parameter indikator lebih besar dari 90, jika tidak menampilkan masalah terkait:

Node "Response Message" dapat digunakan dalam event action kustom sinkron, untuk mengembalikan informasi tip ke client. Tidak dapat digunakan pada mode asinkron.
Setelah alur dikonfigurasi dan diaktifkan, kembali ke antarmuka table, tambahkan tombol "Picu Workflow" di kolom operasi table:

Kemudian pada menu konfigurasi tombol pilih ikat Workflow, buka dialog konfigurasi:

Tambahkan Workflow yang sebelumnya diaktifkan:

Setelah dikirim, ubah teks tombol menjadi nama operasi, seperti kata "Kirim untuk Pemeriksaan", konfigurasi alur sudah selesai.
Saat menggunakan, di table pilih satu data sampel, dan klik tombol "Kirim untuk Pemeriksaan", akan memicu event action kustom. Seperti logika orkestrasi sebelumnya, jika parameter indikator sampel kurang dari 90, setelah klik akan menampilkan tip seperti berikut:

Jika parameter indikator lebih besar dari 90, akan mengeksekusi alur secara normal, menghasilkan data "Record Pengiriman Pemeriksaan", dan mengubah status sampel menjadi "Sudah Dikirim untuk Pemeriksaan":

Sampai di sini, sebuah event action kustom sederhana sudah selesai. Sama halnya, untuk bisnis serupa dengan operasi kompleks, seperti pemrosesan pesanan, pengiriman laporan, dll., semuanya dapat diimplementasikan melalui event action kustom.
Panggilan Eksternal
Pemicuan event action kustom tidak terbatas pada operasi antarmuka pengguna, juga dapat dipicu melalui panggilan API HTTP. Khususnya, event action kustom menyediakan tipe operasi baru trigger untuk semua operasi tabel data untuk memicu Workflow, dapat dipanggil dengan API operasi standar NocoBase.
Karena panggilan eksternal juga perlu berbasis identitas pengguna, jadi saat memanggil melalui API HTTP, sama dengan request yang dikirim antarmuka biasa, perlu menyediakan informasi autentikasi, termasuk request header Authorization atau parameter token (token yang diperoleh saat login), serta request header X-Role (nama peran pengguna saat ini).
Tanpa Konteks
Workflow tanpa konteks perlu memicu operasi terhadap resource workflows:
Single Record
Mirip dengan Workflow yang dipicu tombol di contoh, dapat dipanggil seperti ini:
Karena operasi ini ditujukan untuk single record, jadi saat memanggil untuk data yang sudah ada, perlu menentukan ID baris data, ganti bagian <:id> dalam URL.
Jika ditujukan untuk panggilan formulir (seperti tambah atau perbarui), untuk formulir tambah data dapat tidak memasukkan ID, tetapi perlu memasukkan data yang dikirim, sebagai data konteks eksekusi:
Untuk formulir perbarui, perlu memasukkan ID baris data sekaligus, dan data yang diperbarui:
Jika memasukkan ID dan data sekaligus, akan terlebih dahulu memuat baris data yang sesuai dengan ID, kemudian menggunakan properti dalam objek data yang dimasukkan untuk menimpa baris data asli untuk mendapatkan konteks data pemicu akhir.
Jika memasukkan data relasi, juga akan dilakukan penimpaan, terutama saat dikonfigurasi pre-load menggunakan item data relasi, perlu hati-hati menangani data yang dimasukkan, agar data relasi tidak ditimpa secara tidak sesuai harapan.
Selain itu, parameter URL triggerWorkflows adalah key Workflow, beberapa Workflow dipisahkan dengan koma. Key tersebut dapat diperoleh dengan hover mouse di nama Workflow di bagian atas kanvas Workflow:

Setelah panggilan di atas sukses, akan memicu event action kustom dari tabel samples yang sesuai.
Saat memicu event setelah action melalui panggilan API HTTP, juga perlu memperhatikan status aktivasi Workflow, dan apakah konfigurasi tabel data cocok, jika tidak mungkin tidak akan terpanggil sukses, atau muncul error.
Multi Record
Mirip dengan cara panggilan single record, tetapi data yang dimasukkan hanya perlu beberapa parameter primary key (filterByTk[]), dan tidak perlu memasukkan bagian data:
Panggilan ini akan memicu event action kustom mode multi record, dan menggunakan data dengan id 1 dan 2 sebagai data dalam konteks Trigger.

