Memperluas Tipe Trigger
Setiap Workflow harus mengonfigurasi Trigger tertentu sebagai pintu masuk untuk memulai eksekusi alur.
Tipe Trigger biasanya merepresentasikan event lingkungan sistem tertentu. Selama siklus runtime aplikasi, setiap titik yang menyediakan event yang dapat di-subscribe dapat digunakan untuk mendefinisikan tipe Trigger. Misalnya menerima request, operasi tabel data, tugas terjadwal, dll.
Tipe Trigger didaftarkan pada tabel Trigger plugin berdasarkan identifier string. Plugin Workflow memiliki beberapa Trigger bawaan:
'collection': Trigger operasi tabel data;'schedule': Trigger tugas terjadwal;'action': Trigger event setelah action;
Tipe Trigger yang diperluas perlu memastikan identifier unik. Implementasi subscribe/unsubscribe Trigger didaftarkan di server, dan implementasi antarmuka konfigurasi didaftarkan di client.
Server
Setiap Trigger perlu di-extend dari kelas dasar Trigger, dan mengimplementasikan method on/off, masing-masing untuk subscribe dan unsubscribe event lingkungan tertentu. Pada method on, perlu memanggil this.workflow.trigger() di dalam fungsi callback event tertentu untuk akhirnya memicu event. Pada method off, perlu melakukan pekerjaan pembersihan unsubscribe terkait.
this.workflow adalah instance plugin Workflow yang diteruskan dalam konstruktor kelas dasar Trigger.
Kemudian pada plugin yang memperluas Workflow, daftarkan instance Trigger ke engine Workflow:
Setelah server di-load saat startup, Trigger dengan tipe 'interval' dapat ditambahkan dan dieksekusi.
Client
Bagian client terutama menyediakan antarmuka konfigurasi sesuai item konfigurasi yang dibutuhkan tipe Trigger. Setiap tipe Trigger juga perlu mendaftarkan konfigurasi tipe yang sesuai ke plugin Workflow.
Antarmuka konfigurasi Trigger didefinisikan melalui Loader (fungsi lazy-loading), yang menunjuk ke komponen React biasa yang membangun form menggunakan Form.Item dari antd.
Trigger Paling Sederhana
Misalnya untuk Trigger timer interval yang dijelaskan di atas, definisikan item konfigurasi waktu interval (interval) yang dibutuhkan dalam form antarmuka konfigurasi:
Di sini, FieldsetLoader adalah fungsi yang mengembalikan Promise<{ default: ComponentType }>, mengimplementasikan lazy loading melalui import() dinamis. Komponen yang ditunjuknya adalah komponen fungsi React standar:
Perhatikan bahwa name pada field form menggunakan format array bersarang ['config', 'fieldName'], yang merupakan konvensi standar antd Form.
Beberapa Antarmuka Konfigurasi
Sebuah Trigger dapat menyediakan beberapa antarmuka konfigurasi untuk skenario yang berbeda:
-
PresetFieldsetLoader— Form preset saat membuat Workflow (biasanya hanya berisi field wajib)
-
FieldsetLoader— Form konfigurasi Trigger lengkap (ditampilkan di drawer konfigurasi)
-
TriggerFieldsetLoader— Form input untuk eksekusi manual
Saat Loader perlu menunjuk ke named export (bukan default export) dalam sebuah file, gunakan .then() untuk me-remap:
Mendaftarkan Trigger
Daftarkan tipe Trigger ke instance plugin Workflow di dalam plugin yang diperluas:
Setelah itu, tipe Trigger baru akan terlihat di antarmuka konfigurasi Workflow.
Identifier tipe Trigger yang didaftarkan di client harus konsisten dengan yang ada di server, jika tidak akan menyebabkan error.
Untuk contoh lengkap pada proyek nyata, lihat: source code CollectionTrigger
Untuk detail lain tentang pendefinisian tipe Trigger, lihat bagian Referensi API Workflow.
Jika sebelumnya Anda menggunakan kode client versi lama (v1) dan ingin bermigrasi ke versi v2 yang baru, lihat Panduan Migrasi v1 ke v2.

