Di DataWorks, Anda dapat menggunakan ekstensi untuk menentukan logika kustom guna memantau operasi pengguna. Fitur ini memungkinkan Anda mengintersepsi dan memblokir tindakan yang tidak sesuai, mengirim notifikasi untuk event tertentu, serta mengelola alur kerja. Topik ini menjelaskan cara mengembangkan dan mendeploy ekstensi menggunakan Function Compute.
Informasi latar belakang
Function Compute adalah layanan komputasi berbasis event yang sepenuhnya dikelola. Anda dapat mendeploy ekstensi di lingkungan eksekusi Function Compute, dan DataWorks mendorong pesan event titik ekstensi ke kelas ExtensionRequest. Dalam kode ekstensi Anda, dengan mengimplementasikan metode handleRequest dari antarmuka PojoRequestHandler, Anda dapat membuat objek ExtensionRequest untuk menerima pesan event titik ekstensi dan konteks (Context) dari DataWorks, menentukan logika pemrosesan untuk ekstensi Anda, serta mengembalikan hasil pemrosesan menggunakan kelas ExtensionResponse. DataWorks secara otomatis mengambil hasil pemrosesan dari ExtensionResponse untuk menentukan apakah akan memblokir alur operasi titik ekstensi saat ini.
Batasan
-
Hanya pengguna DataWorks Edisi Perusahaan yang dapat menggunakan modul Ekstensi.
-
Modul Ekstensi tersedia di wilayah berikut: Tiongkok (Beijing), Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Zhangjiakou), Tiongkok (Shenzhen), Tiongkok (Chengdu), AS (Silicon Valley), AS (Virginia), Jerman (Frankfurt), Jepang (Tokyo), Tiongkok (Hong Kong), dan Singapura.
Catatan
-
Hanya Open Platform administrator, tenant administrator, akun Alibaba Cloud, dan Pengguna RAM yang memiliki kebijakan AliyunDataWorksFullAccess yang dilampirkan yang memiliki izin baca dan tulis pada backend developer. Untuk informasi lebih lanjut tentang pengelolaan izin, lihat Kontrol izin untuk layanan global dan Kebijakan RAM untuk izin layanan dan konsol.
-
Batasan versi: Jika langganan DataWorks Edisi Perusahaan Anda kedaluwarsa, semua ekstensi menjadi tidak aktif dan tidak dapat lagi dipicu untuk pemeriksaan event. Setiap pemeriksaan yang telah dipicu tetapi belum mencapai status akhir akan secara otomatis dilewati.
-
Batasan node: Saat node komposit yang berisi node internal—seperti node Platform for AI, node do-while, atau node for-each—memicu pemeriksaan, semua node internal harus lolos pemeriksaan sebelum operasi selanjutnya dapat dilanjutkan.
-
Pemicuan: Anda dapat mengaitkan beberapa ekstensi dengan event titik ekstensi yang sama. Artinya, satu event dapat memicu beberapa ekstensi.
-
Batasan event: Ekstensi yang dideploy menggunakan Function Compute saat ini mendukung pre-event untuk unduh data, pre-event untuk publikasi dan pembatalan publikasi aset, serta pre-event untuk unggah data.
Cara kerja
Gambar berikut menunjukkan alur kerja dasar bagaimana ekstensi yang dikembangkan dan dideploy menggunakan Function Compute memproses event titik ekstensi.
Setelah event titik ekstensi dipicu, proses terkait memasuki status Checking sambil menunggu ekstensi mengembalikan hasil melalui callback API. Proses tetap dalam status ini hingga ekstensi mengirim hasil ke DataWorks. Berdasarkan hasil yang dikembalikan, DataWorks menentukan apakah akan memblokir proses tersebut.
Tugas developer
Anda harus mengembangkan ekstensi sebelum mendeploynya di Function Compute. Gunakan library fc-java-core untuk menjalankan handler. Kode contoh disediakan dalam file fc_dataworks_demo01-1.0-SNAPSHOT.jar. Untuk informasi lebih lanjut, lihat Event handlers.
Langkah 1: Konfigurasikan dependensi ekstensi
Saat mengembangkan ekstensi Anda, tambahkan dependensi berikut ke file pom.xml.
Dependensi DataWorks
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dataworks_public20200518</artifactId>
<version>5.6.0</version>
</dependency>
Dependensi Function Compute
<!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-core -->
<dependency>
<groupId>com.aliyun.fc.runtime</groupId>
<artifactId>fc-java-core</artifactId>
<version>1.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-event -->
<dependency>
<groupId>com.aliyun.fc.runtime</groupId>
<artifactId>fc-java-event</artifactId>
<version>1.2.0</version>
</dependency>
Dependensi pengemasan
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Anda dapat menggunakan plugin Apache Maven Shade atau plugin Apache Maven Assembly. Contoh di atas menggunakan plugin Apache Maven Shade.
Langkah 2: Kembangkan kode ekstensi
Untuk mengembangkan ekstensi di Function Compute, Anda harus menggunakan antarmuka PojoRequestHandler untuk mengimplementasikan metode handleRequest. Metode ini menerima permintaan dari kelas ExtensionRequest dan Context. Anda kemudian dapat menentukan logika pemrosesan ekstensi dan mengembalikan hasil menggunakan kelas ExtensionResponse .
-
Pertimbangkan poin-poin berikut saat mengembangkan kode.
Uraikan konten pesan
Untuk informasi tentang format pesan event yang didorong oleh DataWorks, lihat Referensi developer: Daftar event dan format pesan. Dalam format pesan,
messageBodyberisi konten spesifik pesan tersebut. Selama pengembangan, Anda dapat menggunakan bidangmessageBody.eventCodeuntuk mengidentifikasi jenis pesan dan bidangmessageIduntuk mendapatkan detail pesan.Logika pemrosesan
Tulis logika pemrosesan pesan berdasarkan kebutuhan bisnis Anda. Selama pengembangan, Anda dapat menggunakan metode berikut untuk meningkatkan efisiensi dan efektivitas:
-
Gunakan Fitur lanjutan: Konfigurasikan parameter untuk ekstensi. Misalnya, Anda dapat menggunakan parameter
extension.project.disableduntuk menonaktifkan ekstensi pada ruang kerja tertentu. -
Saat memproses titik ekstensi yang terkait dengan modul DataStudio, panggil operasi GetIDEEventDetail dan gunakan
MessageIduntuk mendapatkan snapshot data saat event titik ekstensi dipicu.
CatatanParameter
MessageIdberkorespondensi dengan bidangiddalam pesan event. Untuk informasi lebih lanjut, lihat Lampiran: Format pesan yang dikirim dari DataWorks ke EventBridge.Hasil pemrosesan
Saat mengemas hasil
ExtensionResponse, Anda harus menentukanCheckResult. DataWorks secara otomatis membacaCheckResultakhir untuk menentukan apakah proses gagal.-
OK: Pemeriksaan ekstensi lolos untuk event titik ekstensi ini. -
FAIL: Pemeriksaan ekstensi gagal untuk event titik ekstensi ini. Anda harus menyelidiki dan menyelesaikan error tersebut agar proses selanjutnya berjalan sesuai harapan. -
WARN: Pemeriksaan ekstensi lolos untuk event titik ekstensi ini, tetapi peringatan dihasilkan.
Anda dapat mengunduh file kode contoh fc_dataworks_demo01-1.0-SNAPSHOT.jar dan mengunggahnya ke Function Compute untuk verifikasi. Kode berikut memberikan detail lebih lanjut:
-
-
Setelah mengembangkan kode, kemas program menjadi file
.jaratau.zipyang dapat dijalankan untuk Function Compute.Buka jendela command line di editor kode Anda, arahkan ke direktori root, lalu jalankan perintah
mvn clean packageuntuk mengemas kode.-
Jika kompilasi gagal, sesuaikan kode berdasarkan pesan error pada output.
-
Jika kompilasi berhasil, file JAR yang dikompilasi berada di direktori target proyek. Nama file tersebut didasarkan pada bidang artifactId dan version dalam file pom.xml, misalnya java-example-1.0-SNAPSHOT.jar.
CatatanPada macOS dan Linux, pastikan file kode memiliki izin baca dan eksekusi sebelum pengemasan.
-
Tugas Function Compute
Langkah 1: Deploy ekstensi
-
Masuk ke Konsol Function Compute 2.0 dan buka halaman Tugas.
-
Klik Create Function untuk membuat layanan dan fungsi yang diperlukan, lalu deploy ekstensi. Pesan event spesifik dari ekstensi yang dikembangkan dikirim langsung ke layanan ini. Untuk informasi lebih lanjut, lihat Buat layanan dan Buat fungsi. Di panel Create Function, pilih Create with built-in runtimes, pilih Process event requests sebagai tipe handler, pilih Upload code via JAR package sebagai metode unggah kode, lalu unggah paket kode yang telah disiapkan.
-
Pilih lingkungan runtime berdasarkan kode Anda. Paket contoh yang disediakan di Langkah 1,
fc_dataworks_demo01-1.0-SNAPSHOT.jar, sesuai dengan lingkungan Java 8. Anda harus mengunduhfc_dataworks_demo01-1.0-SNAPSHOT.jarke komputer lokal Anda dan mengunggahnya sebagai code package. Konfigurasikan parameter lain sesuai kebutuhan Anda. -
Untuk informasi lebih lanjut tentang operasi fungsi, lihat Kelola fungsi.
-
-
Ubah handler fungsi.
Anda dapat mengonfigurasi handler di Konsol Function Compute. Untuk fungsi Java, format handler adalah
[Nama paket].[Nama kelas]::[Nama metode]. Contohnya:-
Nama paket:
example. -
Nama kelas:
HelloFC. -
Nama metode:
handleRequest.
Handler dapat dikonfigurasi sebagai
example.HelloFC::handleRequest.CatatanHandler default di Function Compute adalah
example.App::handleRequest. Anda harus mengubah handler sesuai dengan kode aktual Anda. Untuk informasi lebih lanjut tentang handler, lihat Handlers. -
Langkah 2: Uji fungsi
Setelah membuat fungsi, buka halaman detail fungsi, klik tab Code, lalu klik Test Function. Jika pesan Execution succeeded dikembalikan, Anda dapat melanjutkan ke pendaftaran ekstensi di DataWorks.
Tugas DataWorks
Langkah 1: Daftarkan ekstensi
Setelah mendeploy ekstensi di Function Compute, Anda harus mendaftarkannya di DataWorks. Ikuti langkah-langkah berikut:
Masuk ke Konsol DataWorks. Di wilayah target, klik di panel navigasi kiri. Klik Go to Open Platform untuk membuka halaman Developer Backend.
-
Daftarkan ekstensi.
-
Di panel navigasi kiri, klik Extensions untuk membuka halaman Extensions.
-
Klik , pilih Deploy Based on Function Compute, lalu konfigurasikan informasi ekstensi.
Anda dapat mengonfigurasi parameter sesuai kebutuhan. Tabel berikut menjelaskan parameter tersebut.
-
-
Selesaikan pendaftaran.
Klik OK. Setelah pendaftaran selesai, Anda dapat melihat ekstensi di List of Extensions.
Langkah 2: Publikasikan ekstensi
Setelah mengembangkan, mendeploy, dan mendaftarkan ekstensi di DataWorks, Anda harus mengujinya, menyetujuinya, lalu mempublikasikannya. Setelah dipublikasikan, administrator selain pemilik ekstensi dapat mengaktifkan ekstensi di Management Center. Untuk informasi lebih lanjut, lihat Terapkan ekstensi.
Lampiran: Format pesan event DataWorks
Kode berikut menunjukkan format pesan umum untuk jenis pesan saat menggunakan Function Compute. messageBody berisi detail event DataWorks. Konten body pesan bervariasi tergantung jenis pesan.
{
"blockBusiness": true,
"eventCategoryType": "resources-download",// Kategori event.
"eventType": "upload-data-to-table",// Jenis event.
"extensionBizId": "job_6603643923728775070",
"messageBody": {
// Konten pesan bervariasi berdasarkan jenis pesan. Dua bidang berikut bersifat tetap.
"tenantId": 28378****10656, // ID tenant. Setiap Akun Alibaba Cloud berkorespondensi dengan satu tenant di DataWorks, dan setiap tenant memiliki ID unik. Anda dapat menemukan ID ini di bagian informasi pengguna di pojok kanan atas DataStudio.
"eventCode": "xxxx"//
},
"messageId": "52d44ee7-b51f-4d4d-afeb-*******" // ID event. Ini adalah pengenal unik untuk event tersebut.
}
Konten bidang messageBody bervariasi tergantung jenis pesan. Untuk detail tentang pesan event, lihat Referensi developer: Daftar event dan format pesan.
Dokumentasi terkait
-
Untuk informasi lebih lanjut tentang Function Compute, lihat Apa itu Function Compute?
-
Anda juga dapat mendeploy ekstensi menggunakan layanan yang dikelola sendiri. Untuk informasi lebih lanjut, lihat Kembangkan dan deploy ekstensi menggunakan layanan yang dikelola sendiri.