logologo
Mulai
Panduan
Pengembangan
Plugin
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Mulai
Panduan
Pengembangan
Plugin
API
logologo
Pengguna

Peran dan Izin

Konfigurasi Peran
Konfigurasi Izin
Terapkan di UI
Gabungan Peran

Panduan Pengembang

Perluas Bar Konfigurasi Izin

Departemen

Manajemen Departemen
Manajemen Peran Departemen

Sinkronisasi Data Pengguna

Manajemen Sinkronisasi

Sumber Data

WeChat Work
HTTP API

Panduan Pengembang

Perluas Sumber Data Sinkronisasi
Perluas Sumber Daya Target Sinkronisasi
Previous PagePerluas Sumber Data Sinkronisasi
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Memperluas Sumber Daya Target Sinkronisasi

#Gambaran Umum

NocoBase secara bawaan mendukung sinkronisasi data pengguna ke tabel Pengguna dan Departemen. NocoBase juga mendukung perluasan sumber daya target untuk sinkronisasi data sesuai kebutuhan, memungkinkan penulisan data ke tabel lain atau melakukan pemrosesan kustom.

Eksperimental

Dokumentasi lengkap masih dalam proses.

#Antarmuka Penangan Sumber Daya Target

export abstract class UserDataResource {
  name: string;
  accepts: SyncAccept[];
  db: Database;
  logger: SystemLogger;

  constructor(db: Database, logger: SystemLogger) {
    this.db = db;
    this.logger = logger;
  }

  abstract update(
    record: OriginRecord,
    resourcePks: PrimaryKey[],
    matchKey?: string,
  ): Promise<RecordResourceChanged[]>;
  abstract create(
    record: OriginRecord,
    matchKey: string,
  ): Promise<RecordResourceChanged[]>;

  get syncRecordRepo() {
    return this.db.getRepository('userDataSyncRecords');
  }

  get syncRecordResourceRepo() {
    return this.db.getRepository('userDataSyncRecordsResources');
  }
}

#Mendaftarkan Sumber Daya Target

registerResource(resource: UserDataResource, options?: ToposortOptions)

import { Plugin } from '@nocobase/server';
import PluginUserDataSyncServer from '@nocobase/plugin-user-data-sync';

class CustomUserResourcePluginServer extends Plugin {
  async load() {
    const userDataSyncPlugin = this.app.pm.get(PluginUserDataSyncServer);
    if (userDataSyncPlugin && userDataSyncPlugin.enabled) {
      userDataSyncPlugin.resourceManager.registerResource(new CustomDataSyncResource(this.db, this.app.logger)
    }
  }
}