全部产品
Search
文档中心

:Praktik terbaik: Penguncian penerapan tugas kustom

更新时间:Dec 05, 2025

DataWorks Open Platform menyediakan fitur OpenAPI, OpenEvent, dan Extensions yang memungkinkan Anda menerapkan kontrol dan respons kustom pada alur tertentu. Topik ini menggunakan skenario penguncian penerapan tugas sebagai contoh untuk menunjukkan cara mengonfigurasi Open Platform guna menangani event, seperti pengiriman node untuk penerapan di halaman Data Development.

Informasi latar belakang

Untuk pengenalan fitur dan konsep Open Platform yang digunakan dalam praktik terbaik ini, lihat Ikhtisar OpenEvent dan Ikhtisar Extensions.

Deskripsi skenario

Konfigurasi subscription

Saat mengonfigurasi subscription, Anda dapat menggunakan aturan event untuk menentukan jenis event terkait pengiriman atau penerapan file.

  • Untuk ruang kerja dalam mode standar, gunakan dataworks:FileChange:CommitFile.

  • Untuk ruang kerja dalam mode dasar, gunakan dataworks:FileChange:DeployFile.

Prasyarat

  • EventBridge telah diaktifkan. Untuk informasi selengkapnya, lihat Billing.

  • DataWorks telah diaktifkan. Untuk informasi selengkapnya, lihat Panduan pembelian.

  • Ruang kerja telah dibuat di DataWorks. Untuk informasi selengkapnya, lihat Buat ruang kerja.

Prosedur

Langkah 1: Konfigurasi event bus kustom

Untuk langkah-langkah terperinci tentang cara mengaktifkan dan mengonfigurasi subscription pesan, lihat Aktifkan subscription pesan. Bagian berikut menjelaskan alur konfigurasi inti dan catatan penting untuk praktik terbaik ini.

  1. Masuk ke Konsol EventBridge. Di panel navigasi sebelah kiri, klik Event Buses untuk membuka halaman pembuatan event bus.

  2. Klik image Create Custom Event Bus.

    1. Pada bagian Event Bus, konfigurasikan Custom Event Bus Name dan klik Next untuk melanjutkan ke konfigurasi sumber event.

    2. Klik Skip untuk melewati konfigurasi Event Source, Rule, dan Target.创建自定义总线

  3. Di panel navigasi sebelah kiri, klik Event Buses. Temukan event bus yang telah Anda buat dan klik namanya untuk membuka halaman ikhtisar.

    • Di panel navigasi sebelah kiri, klik Event Rules. Pada halaman Event Rules, klik Create Rule untuk membuat aturan event baru.

    • Dalam praktik terbaik ini, bus EventBridge kustom dikonfigurasi untuk menerima pesan event pengiriman file dan penerapan file dari DataWorks. Bagian berikut menjelaskan konfigurasi demo dan parameter inti.

      1. Configure Basic Information: Masukkan nama aturan kustom.

      2. Practice Content

        • Event Source Type: Pilih Custom Event Source.

        • Event Source: Biarkan parameter ini kosong.

        • Pattern Content: Tulis konten dalam format JSON sebagai berikut. Contoh ini menggunakan ruang kerja dalam mode standar.

          Catatan

          Untuk ruang kerja dalam mode dasar, atur parameter ini menjadi dataworks:FileChange:DeployFile.

          {
              "source": [
                  "acs.dataworks"
              ],
              "type": [
                  "dataworks:FileChange:CommitFile"
              ]
          }
          • source: Menentukan identifier nama produk untuk event, yaitu acs.dataworks.

          • type: Menentukan identifier jenis event untuk produk tersebut. Atur parameter ini menjadi dataworks:FileChange:CommitFile.

        • Event Pattern Debugging: Ubah nilai source dan type, lalu uji event tersebut. Jika pengujian berhasil, klik Next.测试

      3. Configure Event Target.

        • Service Type: Pilih HTTPS atau HTTP. Untuk informasi selengkapnya tentang jenis layanan, lihat Kelola aturan event.

        • URL: Masukkan URL untuk menerima pesan yang didorong dari bus kustom, misalnya, https://server_address:port_number/extensions/consumer.

        • Body: Pilih Complete Event.

        • Network Type: Pilih Public Network.事件目标

Langkah 2: Konfigurasi saluran distribusi event

  1. Buka tab Developer Backend.

    Masuk ke Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Di panel navigasi sebelah kiri, pilih More > Open Platform. Pada halaman yang muncul, klik Go to Open Platform. Tab Developer Backend akan muncul.

  2. Pada halaman Developer Backend, klik OpenEvent di panel navigasi kiri. Di halaman yang muncul, klik Add Event Distribution Channel, lalu konfigurasikan parameter dalam kotak dialog.

    • Workspace for Event Distribution: Pilih ruang kerja yang telah Anda buat.

    • Custom EventBridge Bus for Distribution: Pilih event bus yang telah Anda buat di Langkah 1.

  3. Setelah menyimpan saluran distribusi event, temukan saluran tersebut dan klik Enable di kolom Actions.image

Langkah 3: Daftarkan dan konfigurasikan ekstensi

  1. Buka tab Developer Backend.

    Masuk ke Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Di panel navigasi sebelah kiri, pilih More > Open Platform. Pada halaman yang muncul, klik Go to Open Platform. Tab Developer Backend akan muncul.

  2. Pada halaman Developer Backend, klik Extensions di panel navigasi kiri, lalu klik Register Extension dan konfigurasikan parameter dalam kotak dialog.

    1. Deployment Method: Pilih Deploy with Self-managed Service.

    2. Daftarkan ekstensi.

      • Extension Name: Masukkan nama kustom.

      • Processed Extension Points: Pilih Pre-event For File Commit dan Pre-event For File Deployment.

      • Test Workspace: Setelah konfigurasi selesai, Anda dapat menguji ekstensi di ruang kerja ini setelah ekstensi dibuat tetapi sebelum dikirim.

      • Extension Parameter Configuration: Pre-event For File Commit.

      Konfigurasikan parameter lain sesuai petunjuk pada UI.注册扩展程序

  3. Setelah menyelesaikan konfigurasi, klik OK untuk menyimpan ekstensi yang telah didaftarkan.

  4. Di kolom Actions untuk ekstensi tersebut, klik Submit untuk memulai proses peninjauan.

    Catatan
    • Ekstensi akan ditinjau oleh platform DataWorks. Proses peninjauan biasanya memerlukan waktu tiga hari kerja. Harap bersabar.

    • Untuk menguji ekstensi yang telah Anda buat, Anda harus mengonfigurasi Test Workspace.

  5. Setelah ekstensi disetujui, klik Publish di kolom Actions untuk menerbitkannya.

  6. Klik Manage Extensions untuk membuka halaman Management Center > Extensions. Pilih ekstensi yang telah Anda buat dan aktifkan di kolom Enable.启用扩展程序

Kembangkan dan konfigurasikan ekstensi

Kode contoh

Kode ini menggunakan pesan yang didorong dari EventBridge ke layanan untuk memanggil layanan tersebut. Kode ini membandingkan tanggal saat ini dengan tanggal libur dan tanggal penguncian yang telah dikonfigurasi untuk menentukan apakah hari tersebut merupakan hari penguncian. Hasilnya dikirim kembali ke DataWorks melalui callback menggunakan operasi API UpdateIDEEventResult.

Lingkungan: Java 8 dan tool build Maven.

package com.aliyun.dataworks.demo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.dataworks.config.Constants;
import com.aliyun.dataworks.config.EventCheckEnum;
import com.aliyun.dataworks.config.ExtensionParamProperties;
import com.aliyun.dataworks.services.DataWorksOpenApiClient;
import com.aliyun.dataworks_public20200518.Client;
import com.aliyun.dataworks_public20200518.models.UpdateIDEEventResultRequest;
import com.aliyun.dataworks_public20200518.models.UpdateIDEEventResultResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;

/**
 * @author dataworks demo
 */
@RestController
@RequestMapping("/extensions")
public class ExtensionsController {

  @Autowired(required = false)
  private DataWorksOpenApiClient dataWorksOpenApiClient;

  @Autowired
  private ExtensionParamProperties extensionParamProperties;

  /**
   * Terima pesan yang didorong dari EventBridge
   *
   * @param jsonParam
   */
  @PostMapping("/consumer")
  public void consumerEventBridge(@RequestBody String jsonParam) {
    JSONObject jsonObj = JSON.parseObject(jsonParam);
    String eventCode = jsonObj.getString(Constants.EVENT_CODE_FILED);
    if (Constants.COMMIT_FILE_EVENT_CODE.equals(eventCode)) {
      // Inisialisasi client
      Client client = dataWorksOpenApiClient.createClient();
      // Dapatkan waktu saat ini
      SimpleDateFormat sdf = new SimpleDateFormat(Constants.YYYY_MM_DD);
      String now = sdf.format(System.currentTimeMillis());
      // Dapatkan daftar hari libur dan tanggal penguncian untuk tahun 2022
      List<String> holidayList = Arrays.asList(extensionParamProperties.getHolidayList().split(","));
      // Periksa apakah tanggal saat ini merupakan hari penguncian
      boolean isExists = holidayList.stream().anyMatch(day -> day.equals(now));
      // Metode callback
      UpdateIDEEventResultRequest updateIDEEventResultRequest = new UpdateIDEEventResultRequest();
      updateIDEEventResultRequest.setMessageId(jsonObj.getString("id"));
      updateIDEEventResultRequest.setExtensionCode(extensionParamProperties.getExtensionCode());
      // Jika hari tersebut merupakan hari penguncian, pemeriksaan gagal
      if (isExists) {
        updateIDEEventResultRequest.setCheckResult(EventCheckEnum.FAIL.getCode());
        updateIDEEventResultRequest.setCheckResultTip("Pengiriman file tidak diizinkan pada hari penguncian.");
      } else {
        // Jika bukan hari penguncian, pemeriksaan berhasil
        updateIDEEventResultRequest.setCheckResult(EventCheckEnum.OK.getCode());
        updateIDEEventResultRequest.setCheckResultTip(EventCheckEnum.OK.getName());
      }
      try {
        // Kirim callback ke DataWorks
        UpdateIDEEventResultResponse response = client.updateIDEEventResult(updateIDEEventResultRequest);
              // ID unik permintaan, digunakan untuk troubleshooting.
              System.out.println("response:" + response.getBody().getRequestId());
          } catch (Exception e) {
              System.out.println("consumerEventBridge error:" + e.getMessage());
              throw new RuntimeException(e);
          }
      } else {
          System.out.println("Gagal memfilter event lainnya. Periksa langkah konfigurasi.");
      }
  }
}

Penerapan proyek contoh

  1. Persiapkan lingkungan dan proyek

  2. Metode penerapan

    • Penerapan lokal: Kemas proyek menjadi file JAR. Jalankan program layanan di server lokal atau mesin Windows yang telah menginstal Java 8 dan Maven dengan menjalankan perintah java -jar yourapp.jar.

    • Penerapan di platform cloud: Kemas proyek menjadi file JAR. Unggah file tersebut ke lingkungan runtime, seperti kontainer Docker atau instans Elastic Compute Service (ECS), untuk penerapan.

  3. Setelah mengunduh proyek, buka direktori root proyek dan jalankan perintah pengemasan untuk mengemas proyek menjadi file JAR.

    mvn clean package -Dmaven.test.skip=true spring-boot:repackage
  4. Jalankan file JAR:

    java -jar target/extension-demo-deploycontroller-1.0.jar

Proyek berhasil dimulai, seperti yang ditunjukkan pada gambar berikut. 启动工程 Masukkan http://localhost:8080/index di browser. Jika "hello world!" dikembalikan, aplikasi telah berhasil diterapkan. Setelah koneksi jaringan terbentuk, Anda dapat berlangganan pesan dari EventBridge.

Verifikasi hasil

Setelah kode diterapkan dan koneksi jaringan ke EventBridge terbentuk, Anda dapat melakukan verifikasi di ruang kerja tempat ekstensi diaktifkan.

文件提交