Di DataWorks, Anda dapat membuat ekstensi kustom untuk memantau tindakan pengguna. Misalnya, Anda dapat mencegat dan memblokir tindakan yang tidak sesuai, atau mengirim notifikasi serta mengelola proses untuk event tertentu. Topik ini menjelaskan cara mengembangkan dan mendeploy ekstensi menggunakan Function Compute.
Informasi latar belakang
Function Compute adalah layanan komputasi yang sepenuhnya dikelola dan berbasis event. Anda dapat mendeploy ekstensi di lingkungan eksekusi Function Compute. DataWorks mendorong pesan event titik ekstensi ke kelas ExtensionRequest. Dalam kode ekstensi Anda, implementasikan metode handleRequest dari antarmuka PojoRequestHandler untuk membuat objek ExtensionRequest yang menerima pesan event dan konteks (Context) dari DataWorks. Anda kemudian dapat menentukan logika pemrosesan ekstensi tersebut dan menggunakan kelas ExtensionResponse untuk mengembalikan hasilnya. DataWorks secara otomatis mengambil hasil dari kelas ExtensionResponse guna menentukan apakah operasi saat ini harus diblokir.
Batasan
-
Hanya pengguna DataWorks Enterprise Edition yang dapat menggunakan modul Extensions.
-
Modul Extensions 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.
Peringatan
-
Hanya Open Platform administrator, tenant administrator, akun Alibaba Cloud, dan Pengguna RAM yang memiliki kebijakan AliyunDataWorksFullAccess yang memiliki izin baca dan tulis pada backend developer. Untuk informasi lebih lanjut tentang pengelolaan izin, lihat Kontrol izin modul global dan Kelola akses tingkat produk dan konsol dengan kebijakan RAM.
Batasan versi: Jika langganan DataWorks Enterprise Edition Anda kedaluwarsa, semua ekstensi menjadi tidak valid dan tidak dapat lagi memicu pemeriksaan event. Setiap pemeriksaan yang telah dipicu tetapi belum mencapai status akhir akan secara otomatis lolos.
Batasan node: Saat pemeriksaan dipicu untuk node komposit yang berisi node internal, seperti node machine learning (PAI), node do-while, atau node for-each, semua node internal harus lolos pemeriksaan sebelum operasi selanjutnya dapat dilanjutkan.
Deskripsi pemicu: Beberapa ekstensi dapat dikaitkan dengan event titik ekstensi yang sama. Artinya, satu event dapat memicu beberapa ekstensi.
Batasan event: Ekstensi yang dideploy menggunakan Function Compute saat ini hanya mendukung pre-event untuk unduh data.
Proses
Gambar berikut menunjukkan proses dasar bagaimana ekstensi yang dikembangkan dan dideploy menggunakan Function Compute menangani event titik ekstensi.
Setelah event titik ekstensi dipicu, proses terkait memasuki status Checking dan menunggu hasil dari API callback ekstensi. DataWorks kemudian memutuskan apakah akan memblokir proses berdasarkan hasil tersebut.
Sisi pengguna
Sebelum mendeploy ekstensi Function Compute, Anda harus mengembangkan ekstensi tersebut. Anda dapat menggunakan library fc-java-core untuk menjalankan handler. Paket kode contoh tersedia: fc_dataworks_demo01-1.0-SNAPSHOT.jar. Untuk informasi lebih lanjut, lihat Event Handler.
Langkah 1: Konfigurasikan dependensi ekstensi
Saat mengembangkan ekstensi, tambahkan dependensi berikut ke file pom.xml.
Library dependensi DataWorks
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dataworks_public20200518</artifactId>
<version>5.6.0</version>
</dependency>Library 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>Pengemasan dependensi
<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, gunakan antarmuka PojoRequestHandler dan implementasikan metode handleRequest-nya. Metode ini menerima objek ExtensionRequest dan Context. Anda kemudian dapat menentukan logika pemrosesan dan menggunakan kelas ExtensionResponse untuk mengembalikan hasilnya.
Saat mengembangkan kode, perhatikan hal berikut:
Uraikan konten pesan
Untuk informasi lebih lanjut tentang format pesan event yang didorong oleh DataWorks, lihat Referensi Pengembangan: Daftar Event dan Format Pesan. Dalam pesan event, bidang
messageBodyberisi konten pesan. Selama pengembangan, Anda dapat menggunakan bidangmessageBody.eventCodeuntuk mengidentifikasi jenis pesan dan bidangmessageIduntuk mengambil detail pesan.Tulis logika pemrosesan
Tulis logika untuk memproses jenis pesan tertentu. Selama pengembangan ekstensi, Anda dapat menggunakan metode berikut untuk meningkatkan efisiensi pengembangan dan kinerja aplikasi:
Gunakan Fitur lanjutan: Konfigurasikan parameter ekstensi, seperti
extension.project.disabled, untuk menonaktifkan ekstensi pada ruang kerja tertentu.Saat memproses titik ekstensi yang terkait dengan modul Data Studio, Anda dapat memanggil API GetIDEEventDetail untuk mengambil snapshot data pada saat event titik ekstensi dipicu berdasarkan
MessageId.
CatatanMessageIdberkorespondensi dengan bidangiddalam pesan. Untuk informasi lebih lanjut, lihat Lampiran: Format pesan yang dikirim dari DataWorks ke EventBridge.Kembalikan hasil pemrosesan ke DataWorks
Saat membungkus hasil dalam objek
ExtensionResponse, tentukan hasil pemrosesan di bidangCheckResult. DataWorks secara otomatis membacaCheckResultakhir untuk menentukan apakah operasi gagal.OK: Ekstensi lolos pemeriksaan untuk event titik ekstensi ini.FAIL: Ekstensi gagal dalam pemeriksaan untuk event titik ekstensi ini. Segera tinjau dan tangani error tersebut untuk mencegah dampak pada eksekusi program selanjutnya.WARN: Ekstensi lolos pemeriksaan untuk event titik ekstensi ini, tetapi dengan peringatan.
Anda dapat mengunduh paket kode contoh, fc_dataworks_demo01-1.0-SNAPSHOT.jar, dan mengunggahnya ke Function Compute untuk verifikasi dan pengujian. Bagian berikut menyediakan kodenya:
Setelah mengembangkan kode, kemas program menjadi paket
.jaratau.zipyang dapat dijalankan untuk konfigurasi selanjutnya di Function Compute.Buka jendela command line editor kode, alihkan ke direktori root, lalu jalankan perintah
mvn clean packageuntuk mengemas kode.Jika kompilasi gagal, perbaiki kode berdasarkan pesan error yang ditampilkan.
Jika kompilasi berhasil, paket JAR yang dikompilasi berada di direktori target folder proyek. Paket tersebut diberi nama java-example-1.0-SNAPSHOT.jar berdasarkan bidang artifactId dan version dalam file pom.xml.
CatatanUntuk sistem operasi macOS dan Linux, pastikan file kode memiliki izin baca dan eksekusi sebelum mengemasnya.
Sisi Function Compute
Langkah 1: Deploy ekstensi
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Tasks untuk membuka halaman Tasks.
Klik Create Function untuk membuat layanan Function Compute dan fungsi yang diperlukan, serta mendeploy ekstensi. Ekstensi tersebut kemudian akan mengirim pesan event tertentu langsung ke layanan yang dibuat. Untuk informasi lebih lanjut, lihat Buat layanan dan Buat fungsi. Gambar berikut menunjukkan cara mengonfigurasi fungsi.

Pilih lingkungan runtime berdasarkan kode Anda. Jika Anda menggunakan paket contoh
fc_dataworks_demo01-1.0-SNAPSHOT.jaryang disediakan di Langkah 1, atur parameter Runtime ke Java 8. Untuk melakukan ini, Anda harus mengunduh paketfc_dataworks_demo01-1.0-SNAPSHOT.jarke mesin lokal Anda dan mengunggahnya ke Code Package. Anda dapat mengonfigurasi parameter sesuai kebutuhan.Untuk informasi lebih lanjut tentang operasi fungsi, lihat Kelola fungsi.
Ubah titik masuk fungsi
Di Konsol Function Compute, Anda dapat mengonfigurasi handler (titik masuk fungsi). Untuk fungsi Java, konfigurasikan handler menggunakan format
[Nama paket].[Nama kelas]::[Nama metode]. Contohnya:Nama paket:
example.Kelas:
HelloFC.Metode:
handleRequest.
Handler dapat dikonfigurasi sebagai
example.HelloFC::handleRequest.CatatanHandler default untuk Function Compute adalah
example.App::handleRequest. Anda harus mengubah handler sesuai dengan kode Anda. Untuk informasi lebih lanjut, lihat Handler.
Langkah 2: Uji fungsi
Setelah pendaftaran selesai, buka halaman detail fungsi, pilih tab Function Code, lalu klik Test Function. Setelah pesan Execution Successful ditampilkan, Anda dapat kembali ke DataWorks untuk mendaftarkan ekstensi.
Sisi DataWorks
Langkah 1: Daftarkan ekstensi
Setelah mendeploy ekstensi di Function Compute, Anda harus mendaftarkannya di DataWorks dengan langkah-langkah berikut:
Buka tab Developer Backend.
Masuk ke Konsol DataWorks. Pada bilah navigasi atas, pilih Wilayah yang diinginkan. Di panel navigasi sebelah kiri, pilih . Pada halaman yang muncul, klik Go to Open Platform. Tab Developer Backend akan ditampilkan.
Daftarkan ekstensi.
Di panel navigasi kiri, klik Extensions.
Klik , pilih Deploy With Function Compute, lalu konfigurasikan ekstensi.
Anda dapat mengonfigurasi parameter sesuai kebutuhan. Tabel berikut menjelaskan parameter-parameter tersebut.
Selesaikan pendaftaran ekstensi.
Klik OK untuk mendaftarkan ekstensi. Ekstensi tersebut kemudian akan muncul di Extension List.
Langkah 2: Publikasikan ekstensi
Setelah ekstensi dikembangkan, dideploy, dan didaftarkan di DataWorks, Anda harus menyelesaikan proses pengujian, persetujuan, dan penerbitan. Setelah itu, administrator selain pemilik ekstensi dapat mengaktifkan ekstensi di Management Center. Untuk informasi lebih lanjut, lihat Terapkan ekstensi.
Lampiran: Format pesan yang dikirim dari DataWorks ke Function Compute
Kode berikut menunjukkan format umum untuk semua jenis pesan di Function Compute. Bidang `messageBody` berisi detail pesan event DataWorks. Konten bidang ini 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 tergantung jenis pesan. Berikut adalah dua bidang tetap dalam pesan.
"tenantId": 28378****10656,// ID tenant. Setiap Akun Alibaba Cloud berkorespondensi dengan satu tenant di DataWorks, dan setiap tenant memiliki ID unik. Anda dapat melihat nilai ini di bagian informasi pengguna di pojok kanan atas halaman Pengembangan Data di DataWorks.
"eventCode": "xxxx"//
},
"messageId": "52d44ee7-b51f-4d4d-afeb-*******"// ID event. Nilai unik yang mengidentifikasi event.
}Konten bidang messageBody bervariasi tergantung jenis pesan. Untuk informasi lebih lanjut tentang konten pesan event, lihat Referensi pengembangan: Daftar event dan format pesan.
Referensi
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 berdasarkan layanan yang dikelola sendiri.