Panduan Migrasi Client v1 ke v2
Panduan ini menjelaskan cara memigrasikan kode client plugin ekstensi workflow dari v1 ke v2. Perubahan inti pada client v2 adalah mengganti UI konfigurasi deklaratif Formily Schema dengan pendekatan Loader + komponen React/antd murni.
Ikhtisar
Perubahan Utama
- Perubahan path import:
@nocobase/plugin-workflow/client→@nocobase/plugin-workflow/client-v2, base class plugin@nocobase/client→@nocobase/client-v2 - Perubahan pola UI konfigurasi: Dari objek Formily Schema (
fieldset) ke komponen React lazy-loaded melalui Loader (FieldsetLoader) - Properti
scope/componentsdihapus: Tidak lagi perlu meng-inject objek scope atau komponen ke dalam Schema; cukup import dan gunakan langsung di komponen React
Mapping Path Import
Aturan Umum
Pola Loader
v2 menggunakan properti bertipe LoaderOf untuk menggantikan fieldset dan objek Formily Schema lainnya di v1. Loader pada dasarnya adalah fungsi yang mengembalikan Promise<{ default: ComponentType }>, memungkinkan code splitting dan lazy loading melalui import() dinamis:
Jika perlu menunjuk ke named export (bukan default export), gunakan .then() untuk me-remap:
Sintaks Komponen Konfigurasi
Komponen yang di-load oleh Loader adalah komponen fungsi React standar yang menggunakan Form.Item dari antd untuk membangun form. Path field secara konsisten menggunakan format array bersarang ['config', 'fieldName']:
Migrasi Trigger
Tabel Mapping Properti
Contoh Migrasi
Sintaks v1:
Sintaks v2:
Registrasi Plugin
Migrasi Node
Tabel Mapping Properti
Contoh Migrasi
Sintaks v1:
Sintaks v2:
Catatan Lainnya
Bagian yang Tidak Berubah
Properti dan method berikut pada dasarnya memiliki signature yang sama di v1 dan v2, dan dapat dipertahankan apa adanya saat migrasi:
useVariables(node/config, options)— Menyediakan opsi variableuseScopeVariables(node, options)— Menyediakan variable lokal cabangisAvailable(ctx)— Pemeriksaan ketersediaan Node (v2NodeAvailableContextmenambahkan propertienginebaru)
Properti Baru di v2
getCreateModelMenuItem— Mendefinisikan konfigurasi untuk membuat item menu sub-model untuk Node/Trigger di kanvas v2useTempAssociationSource— Menyediakan informasi sumber data asosiasi sementaravalidate(config)— Validasi konfigurasi Trigger (khusus Trigger)branching— Mendeklarasikan apakah Node adalah Node cabang (khusus Node)end— Mendeklarasikan apakah Node adalah Node terminal (khusus Node)testable— Mendeklarasikan apakah Node mendukung uji coba (khusus Node)
Konsistensi Semantik Nilai
Saat migrasi, pastikan nilai form yang dihasilkan komponen v2 konsisten dengan v1, terutama bentuk payload saat eksekusi manual. Misalnya, jika form eksekusi manual v1 menyimpan objek record lengkap, versi v2 harus mempertahankan struktur nilai yang sama daripada hanya menyimpan primary key.

